diff options
Diffstat (limited to 'libjava/java/io/natVMConsole.cc')
-rw-r--r-- | libjava/java/io/natVMConsole.cc | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/libjava/java/io/natVMConsole.cc b/libjava/java/io/natVMConsole.cc new file mode 100644 index 0000000..7bdc2cf --- /dev/null +++ b/libjava/java/io/natVMConsole.cc @@ -0,0 +1,45 @@ +// 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> + +#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; +} |