ncurses 6.2 - patch 20200906
[ncurses.git] / ncurses / tinfo / lib_setup.c
index a6527bfd096774b3f5b26f4a3267d6ce0c6e468b..73e5a3231d259dd24ebc687d9967d53f56237b5d 100644 (file)
@@ -49,7 +49,7 @@
 #include <locale.h>
 #endif
 
-MODULE_ID("$Id: lib_setup.c,v 1.207 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: lib_setup.c,v 1.210 2020/09/06 21:03:33 tom Exp $")
 
 /****************************************************************************
  *
@@ -305,11 +305,19 @@ _nc_get_screensize(SCREEN *sp,
     bool useEnv = _nc_prescreen.use_env;
     bool useTioctl = _nc_prescreen.use_tioctl;
 
+#ifdef EXP_WIN32_DRIVER
+    /* If we are here, then Windows console is used in terminfo mode.
+       We need to figure out the size using the console API
+     */
+    _nc_console_size(linep, colp);
+    T(("screen size: winconsole lines = %d columns = %d", *linep, *colp));
+#else
     /* figure out the size of the screen */
     T(("screen size: terminfo lines = %d columns = %d", lines, columns));
 
     *linep = (int) lines;
     *colp = (int) columns;
+#endif
 
 #if NCURSES_SP_FUNCS
     if (sp) {
@@ -566,7 +574,7 @@ NCURSES_EXPORT(int)
 _nc_unicode_locale(void)
 {
     int result = 0;
-#if defined(_WIN32) && USE_WIDEC_SUPPORT
+#if defined(_NC_WINDOWS) && USE_WIDEC_SUPPORT
     result = 1;
 #elif HAVE_LANGINFO_CODESET
     char *env = nl_langinfo(CODESET);
@@ -655,13 +663,15 @@ TINFO_SETUP_TERM(TERMINAL **tp,
 
     if (tname == 0) {
        tname = getenv("TERM");
-       if (tname == 0 || *tname == '\0') {
-#ifdef USE_TERM_DRIVER
+#if defined(USE_TERM_DRIVER) && !defined(EXP_WIN32_DRIVER)
+       if (!NonEmpty(tname))
            tname = "unknown";
 #else
+       if (!CHECK_TERM_ENV(tname, NO_TERMINAL)) {
+           T(("Failure with TERM=%s", tname));
            ret_error0(TGETENT_ERR, "TERM environment variable not set.\n");
-#endif
        }
+#endif
     }
     myname = strdup(tname);