Milo Wielondek
Milo Wielondek

Reputation: 4352

Finding source code for native function in java

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

Answers (2)

Buhake Sindi
Buhake Sindi

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

Ivan Nikolaev
Ivan Nikolaev

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

Related Questions