#include <locale.h>
#endif
-MODULE_ID("$Id: lib_setup.c,v 1.147 2012/07/14 23:59:26 tom Exp $")
+MODULE_ID("$Id: lib_setup.c,v 1.155 2012/12/15 19:04:54 tom Exp $")
/****************************************************************************
*
*linep = (int) lines;
*colp = (int) columns;
- if (_nc_prescreen.use_env) {
+ if (_nc_prescreen.use_env || _nc_prescreen.use_tioctl) {
int value;
#ifdef __EMX__
}
#endif /* HAVE_SIZECHANGE */
- if (_nc_prescreen.use_tioctl) {
+ if (_nc_prescreen.use_env) {
+ if (_nc_prescreen.use_tioctl) {
+ /*
+ * If environment variables are used, update them.
+ */
+ if ((sp == 0 || !sp->_filtered) && _nc_getenv_num("LINES") > 0) {
+ _nc_setenv_num("LINES", *linep);
+ }
+ if (_nc_getenv_num("COLUMNS") > 0) {
+ _nc_setenv_num("COLUMNS", *colp);
+ }
+ }
+
/*
- * If environment variables are used, update them.
+ * Finally, look for environment variables.
+ *
+ * Solaris lets users override either dimension with an environment
+ * variable.
*/
- if ((sp == 0 || !sp->_filtered) && _nc_getenv_num("LINES") > 0) {
- _nc_setenv_num("LINES", *linep);
+ if ((value = _nc_getenv_num("LINES")) > 0) {
+ *linep = value;
+ T(("screen size: environment LINES = %d", *linep));
}
- if (_nc_getenv_num("COLUMNS") > 0) {
- _nc_setenv_num("COLUMNS", *colp);
+ if ((value = _nc_getenv_num("COLUMNS")) > 0) {
+ *colp = value;
+ T(("screen size: environment COLUMNS = %d", *colp));
}
}
- /*
- * Finally, look for environment variables.
- *
- * Solaris lets users override either dimension with an environment
- * variable.
- */
- if ((value = _nc_getenv_num("LINES")) > 0) {
- *linep = value;
- T(("screen size: environment LINES = %d", *linep));
- }
- if ((value = _nc_getenv_num("COLUMNS")) > 0) {
- *colp = value;
- T(("screen size: environment COLUMNS = %d", *colp));
- }
-
/* if we can't get dynamic info about the size, use static */
if (*linep <= 0) {
*linep = (int) lines;
* We're doing it this way because those functions belong to the upper
* ncurses library, while this resides in the lower terminfo library.
*/
- if (sp != 0
- && sp->_resize != 0) {
+ if (sp != 0 && sp->_resize != 0) {
if ((new_lines != old_lines) || (new_cols != old_cols)) {
sp->_resize(NCURSES_SP_ARGx new_lines, new_cols);
} else if (sp->_sig_winch && (sp->_ungetch != 0)) {
_nc_unicode_locale(void)
{
int result = 0;
-#if HAVE_LANGINFO_CODESET
+#if defined(__MINGW32__) && USE_WIDEC_SUPPORT
+ result = 1;
+#elif HAVE_LANGINFO_CODESET
char *env = nl_langinfo(CODESET);
result = !strcmp(env, "UTF-8");
T(("_nc_unicode_locale(%s) ->%d", env, result));
if (tname == 0) {
tname = getenv("TERM");
if (tname == 0 || *tname == '\0') {
+#ifdef USE_TERM_DRIVER
+ tname = "unknown";
+#else
ret_error0(TGETENT_ERR, "TERM environment variable not set.\n");
+#endif
}
}
&& _nc_name_match(termp->type.term_names, tname, "|")) {
T(("reusing existing terminal information and mode-settings"));
code = OK;
+#ifdef USE_TERM_DRIVER
+ TCB = (TERMINAL_CONTROL_BLOCK *) termp;
+#endif
} else {
#ifdef USE_TERM_DRIVER
termp = (TERMINAL *) typeCalloc(TERMINAL_CONTROL_BLOCK, 1);
if ((VALID_STRING(cursor_address)
|| (VALID_STRING(cursor_down) && VALID_STRING(cursor_home)))
&& VALID_STRING(clear_screen)) {
+ free(termp);
ret_error1(TGETENT_YES, "terminal is not really generic.\n", tname);
} else {
+ free(termp);
ret_error1(TGETENT_NO, "I need something more specific.\n", tname);
}
} else if (hard_copy) {
+ free(termp);
ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", tname);
}
#endif
int reuse)
{
int res;
- TERMINAL *termp;
+ TERMINAL *termp = 0;
res = TINFO_SETUP_TERM(&termp, tname, Filedes, errret, reuse);
if (ERR != res)
NCURSES_SP_NAME(set_curterm) (CURRENT_SCREEN_PRE, termp);