Reputation: 4352
I've been looking at how java.io.Console
implements the readPassword
function and I came across the native echo
function. Being naturally curious I immediately set out to find the source code. I tried looking in jdk/src/share/native
but to no avail. After further unsuccessful googling I turn to you.
Where can I find the source code for the native echo
function?
Upvotes: 3
Views: 165
Reputation: 89169
I found the following from this source:
JNIEXPORT jboolean JNICALL
Java_java_io_Console_echo(JNIEnv *env, jclass cls, jboolean on)
{
DWORD fdwMode;
jboolean old;
if (! GetConsoleMode(hStdIn, &fdwMode)) {
JNU_ThrowIOExceptionWithLastError(env, "GetConsoleMode failed");
return !on;
}
old = (fdwMode & ENABLE_ECHO_INPUT) != 0;
if (on) {
fdwMode |= ENABLE_ECHO_INPUT;
} else {
fdwMode &= ~ENABLE_ECHO_INPUT;
}
if (! SetConsoleMode(hStdIn, fdwMode)) {
JNU_ThrowIOExceptionWithLastError(env, "SetConsoleMode failed");
}
return old;
}
Upvotes: 2
Reputation: 420
Here it is http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/windows/native/java/io/Console_md.c
JNIEXPORT jboolean JNICALL
Java_java_io_Console_echo(JNIEnv *env, jclass cls, jboolean on)
{
DWORD fdwMode;
jboolean old;
if (! GetConsoleMode(hStdIn, &fdwMode)) {
JNU_ThrowIOExceptionWithLastError(env, "GetConsoleMode failed");
return !on;
}
old = (fdwMode & ENABLE_ECHO_INPUT) != 0;
if (on) {
fdwMode |= ENABLE_ECHO_INPUT;
} else {
fdwMode &= ~ENABLE_ECHO_INPUT;
}
if (! SetConsoleMode(hStdIn, fdwMode)) {
JNU_ThrowIOExceptionWithLastError(env, "SetConsoleMode failed");
}
return old;
}
Upvotes: 3