aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/io/natVMConsole.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/io/natVMConsole.cc')
-rw-r--r--libjava/java/io/natVMConsole.cc45
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;
+}