]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ncurses/tinfo/lib_setup.c
ncurses 5.6 - patch 20080301
[ncurses.git] / ncurses / tinfo / lib_setup.c
index 9a49ee74060c8e25eaf85b00fdc233c0740bd019..a376fc60275b8627fd97c7f94e6c7fe47dc0adde 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -53,7 +53,7 @@
 
 #include <term.h>              /* lines, columns, cur_term */
 
-MODULE_ID("$Id: lib_setup.c,v 1.98 2007/04/21 19:57:42 tom Exp $")
+MODULE_ID("$Id: lib_setup.c,v 1.102 2008/01/19 21:07:45 tom Exp $")
 
 /****************************************************************************
  *
@@ -99,21 +99,25 @@ MODULE_ID("$Id: lib_setup.c,v 1.98 2007/04/21 19:57:42 tom Exp $")
 # endif
 #endif
 
+/*
+ * Wrap global variables in this module.
+ */
 #if USE_REENTRANT
 NCURSES_EXPORT(char *)
 NCURSES_PUBLIC_VAR(ttytype) (void)
 {
-    return cur_term ? cur_term->type.term_names : "";
+    static char empty[] = "";
+    return cur_term ? cur_term->type.term_names : empty;
 }
 NCURSES_EXPORT(int)
 NCURSES_PUBLIC_VAR(LINES) (void)
 {
-    return SP ? SP->_LINES : 0;
+    return (SP ? SP->_LINES : _nc_prescreen._LINES);
 }
 NCURSES_EXPORT(int)
 NCURSES_PUBLIC_VAR(COLS) (void)
 {
-    return SP ? SP->_COLS : 0;
+    return SP ? SP->_COLS : _nc_prescreen._COLS;
 }
 NCURSES_EXPORT(int)
 NCURSES_PUBLIC_VAR(TABSIZE) (void)
@@ -127,6 +131,24 @@ NCURSES_EXPORT_VAR(int) COLS = 0;
 NCURSES_EXPORT_VAR(int) TABSIZE = 0;
 #endif
 
+#if NCURSES_EXT_FUNCS
+NCURSES_EXPORT(int)
+set_tabsize(int value)
+{
+    int code = OK;
+#if USE_REENTRANT
+    if (SP) {
+       SP->_TABSIZE = value;
+    } else {
+       code = ERR;
+    }
+#else
+    TABSIZE = value;
+#endif
+    return code;
+}
+#endif
+
 #if USE_SIGWINCH
 /*
  * If we have a pending SIGWINCH, set the flag in each screen.
@@ -564,6 +586,16 @@ _nc_setupterm(NCURSES_CONST char *tname, int Filedes, int *errret, bool reuse)
        }
     }
 
+    /*
+     * We should always check the screensize, just in case.
+     */
+#if USE_REENTRANT
+    _nc_get_screensize(SP ? &(SP->_LINES) : &(_nc_prescreen._LINES),
+                      SP ? &(SP->_COLS) : &(_nc_prescreen._COLS));
+#else
+    _nc_get_screensize(&LINES, &COLS);
+#endif
+
     if (errret)
        *errret = TGETENT_YES;