[PATCH 2/3] [Kernel32]: no longer init the terminfo database nor application key mode when 0 or 1 are not bound to a tty

Eric Pouech eric.pouech at orange.fr
Mon Jan 24 15:13:23 CST 2011


#25838

A+
---

 dlls/kernel32/term.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)


diff --git a/dlls/kernel32/term.c b/dlls/kernel32/term.c
index 2dce31b..ee879e3 100644
--- a/dlls/kernel32/term.c
+++ b/dlls/kernel32/term.c
@@ -320,10 +320,15 @@ static BOOL TERM_BuildKeyDB(void)
     return TRUE;
 }
 
+static BOOL TERM_init_done /* = FALSE */;
+
 BOOL TERM_Init(void)
 {
+    /* if we're not attached to a tty, don't fire the curses support */
+    if (!isatty(0) || !isatty(1)) return FALSE;
     if (!TERM_bind_libcurses()) return FALSE;
     if (setupterm(NULL, 1 /* really ?? */, NULL) == -1) return FALSE;
+    TERM_init_done = TRUE;
     TERM_BuildKeyDB();
     /* set application key mode */
     putp(tigetstr("smkx"));
@@ -332,8 +337,11 @@ BOOL TERM_Init(void)
 
 BOOL TERM_Exit(void)
 {
-    /* put back the cursor key mode */
-    putp(tigetstr("rmkx"));
+    if (TERM_init_done)
+    {
+        /* put back the cursor key mode */
+        putp(tigetstr("rmkx"));
+    }
     return TRUE;
 }
 




More information about the wine-patches mailing list