50 lines
1002 B
C++
50 lines
1002 B
C++
// natVMConsole.cc - Native part of VMConsole class.
|
|
|
|
/* Copyright (C) 2012
|
|
Free Software Foundation
|
|
|
|
This file is part of libgcj.
|
|
|
|
This software is copyrighted work licensed under the terms of the
|
|
Libgcj License. Please consult the ObjectInputStream "LIBGCJ_LICENSE" for
|
|
details. */
|
|
|
|
#include <config.h>
|
|
|
|
#include <termios.h>
|
|
#include <unistd.h>
|
|
|
|
#include <gcj/cni.h>
|
|
|
|
#include <java/io/Console.h>
|
|
#include <java/io/VMConsole.h>
|
|
|
|
#ifndef IUCLC
|
|
#define IUCLC 0
|
|
#endif
|
|
|
|
#define TERMIOS_ECHO_IFLAGS (IUCLC|IXON|IXOFF|IXANY)
|
|
#define TERMIOS_ECHO_LFLAGS (ECHO|ECHOE|ECHOK|ECHONL|TOSTOP)
|
|
|
|
jstring
|
|
java::io::VMConsole::readPassword(::java::io::Console *con)
|
|
{
|
|
struct termios oldt, newt;
|
|
jstring result;
|
|
|
|
tcgetattr (STDIN_FILENO, &oldt);
|
|
|
|
tcgetattr (STDIN_FILENO, &newt);
|
|
|
|
newt.c_iflag &= ~TERMIOS_ECHO_IFLAGS;
|
|
newt.c_lflag &= ~TERMIOS_ECHO_LFLAGS;
|
|
|
|
tcsetattr (STDIN_FILENO, TCSANOW, &newt);
|
|
|
|
result = con->readLine ();
|
|
|
|
tcsetattr (STDIN_FILENO, TCSANOW, &oldt);
|
|
|
|
return result;
|
|
}
|