blob: 4007c86323023cb3c57b57ff0373ca0ce9833ed8 [file] [log] [blame]
// 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;
}