From de2dd46cfb488fe137fa2941ae43ab4fa5db105f Mon Sep 17 00:00:00 2001 From: Adam Murdoch Date: Mon, 6 Aug 2012 15:11:41 +1000 Subject: [PATCH] Added some diagnostics for missing terminal capability. --- src/main/cpp/posix.cpp | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/main/cpp/posix.cpp b/src/main/cpp/posix.cpp index ffe74dc..0ad7420 100755 --- a/src/main/cpp/posix.cpp +++ b/src/main/cpp/posix.cpp @@ -113,6 +113,14 @@ int write_to_terminal(TERMINAL_CHAR_TYPE ch) { write(current_terminal, &ch, 1); } +const char* getcap(const char* capability) { + char* cap = tgetstr((char*)capability, NULL); +// if (cap == NULL) { +// printf("unknown capability '%s'\n", capability); +// } + return cap; +} + void write_capability(JNIEnv *env, const char* capability, jobject result) { if (capability == NULL) { mark_failed_with_message(env, "unknown terminal capability", result); @@ -159,15 +167,15 @@ Java_net_rubygrapefruit_platform_internal_jni_TerminfoFunctions_initTerminal(JNI mark_failed_with_message(env, "could not get termcap entry", result); return; } - terminal_capabilities[NORMAL_TEXT] = tgetstr((char*)"me", NULL); - terminal_capabilities[BRIGHT_TEXT] = tgetstr((char*)"md", NULL); - terminal_capabilities[FOREGROUND_COLOR] = tgetstr((char*)"AF", NULL); - terminal_capabilities[CURSOR_UP] = tgetstr((char*)"up", NULL); - terminal_capabilities[CURSOR_DOWN] = tgetstr((char*)"do", NULL); - terminal_capabilities[CURSOR_LEFT] = tgetstr((char*)"le", NULL); - terminal_capabilities[CURSOR_RIGHT] = tgetstr((char*)"nd", NULL); - terminal_capabilities[CURSOR_START_LINE] = tgetstr((char*)"cr", NULL); - terminal_capabilities[CLEAR_END_OF_LINE] = tgetstr((char*)"ce", NULL); + terminal_capabilities[NORMAL_TEXT] = getcap("me"); + terminal_capabilities[BRIGHT_TEXT] = getcap("md"); + terminal_capabilities[FOREGROUND_COLOR] = getcap("AF"); + terminal_capabilities[CURSOR_UP] = getcap("up"); + terminal_capabilities[CURSOR_DOWN] = getcap("do"); + terminal_capabilities[CURSOR_LEFT] = getcap("le"); + terminal_capabilities[CURSOR_RIGHT] = getcap("nd"); + terminal_capabilities[CURSOR_START_LINE] = getcap("cr"); + terminal_capabilities[CLEAR_END_OF_LINE] = getcap("ce"); } current_terminal = output + 1; write_capability(env, terminal_capabilities[NORMAL_TEXT], result);