40 (hStdIn = GetStdHandle(STD_INPUT_HANDLE)) == INVALID_HANDLE_VALUE) { 41 return JNI_FALSE; 42 } 43 if (hStdOut == INVALID_HANDLE_VALUE && 44 (hStdOut = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE) { 45 return JNI_FALSE; 46 } 47 if (GetFileType(hStdIn) != FILE_TYPE_CHAR || 48 GetFileType(hStdOut) != FILE_TYPE_CHAR) 49 return JNI_FALSE; 50 return JNI_TRUE; 51 } 52 53 JNIEXPORT jstring JNICALL 54 Java_java_io_Console_encoding(JNIEnv *env, jclass cls) 55 { 56 char buf[64]; 57 int cp = GetConsoleCP(); 58 if (cp >= 874 && cp <= 950) 59 sprintf(buf, "ms%d", cp); 60 else 61 sprintf(buf, "cp%d", cp); 62 return JNU_NewStringPlatform(env, buf); 63 } 64 65 JNIEXPORT jboolean JNICALL 66 Java_java_io_Console_echo(JNIEnv *env, jclass cls, jboolean on) 67 { 68 DWORD fdwMode; 69 jboolean old; 70 if (! GetConsoleMode(hStdIn, &fdwMode)) { 71 JNU_ThrowIOExceptionWithLastError(env, "GetConsoleMode failed"); 72 return !on; 73 } 74 old = (fdwMode & ENABLE_ECHO_INPUT) != 0; 75 if (on) { 76 fdwMode |= ENABLE_ECHO_INPUT; 77 } else { 78 fdwMode &= ~ENABLE_ECHO_INPUT; 79 } | 40 (hStdIn = GetStdHandle(STD_INPUT_HANDLE)) == INVALID_HANDLE_VALUE) { 41 return JNI_FALSE; 42 } 43 if (hStdOut == INVALID_HANDLE_VALUE && 44 (hStdOut = GetStdHandle(STD_OUTPUT_HANDLE)) == INVALID_HANDLE_VALUE) { 45 return JNI_FALSE; 46 } 47 if (GetFileType(hStdIn) != FILE_TYPE_CHAR || 48 GetFileType(hStdOut) != FILE_TYPE_CHAR) 49 return JNI_FALSE; 50 return JNI_TRUE; 51 } 52 53 JNIEXPORT jstring JNICALL 54 Java_java_io_Console_encoding(JNIEnv *env, jclass cls) 55 { 56 char buf[64]; 57 int cp = GetConsoleCP(); 58 if (cp >= 874 && cp <= 950) 59 sprintf(buf, "ms%d", cp); 60 else if (cp == 65001) 61 sprintf(buf, "UTF-8"); 62 else 63 sprintf(buf, "cp%d", cp); 64 return JNU_NewStringPlatform(env, buf); 65 } 66 67 JNIEXPORT jboolean JNICALL 68 Java_java_io_Console_echo(JNIEnv *env, jclass cls, jboolean on) 69 { 70 DWORD fdwMode; 71 jboolean old; 72 if (! GetConsoleMode(hStdIn, &fdwMode)) { 73 JNU_ThrowIOExceptionWithLastError(env, "GetConsoleMode failed"); 74 return !on; 75 } 76 old = (fdwMode & ENABLE_ECHO_INPUT) != 0; 77 if (on) { 78 fdwMode |= ENABLE_ECHO_INPUT; 79 } else { 80 fdwMode &= ~ENABLE_ECHO_INPUT; 81 } |