46 lines
964 B
C++
46 lines
964 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>
|
||
|
|
||
|
#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;
|
||
|
}
|