/****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2014,2015 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 *
#include <locale.h>
#endif
-MODULE_ID("$Id: lib_setup.c,v 1.151 2012/11/18 00:24:56 tom Exp $")
+MODULE_ID("$Id: lib_setup.c,v 1.164 2015/06/27 18:10:55 tom Exp $")
/****************************************************************************
*
TCB = (TERMINAL_CONTROL_BLOCK *) termp;
my_tabsize = TCB->info.tabsize;
- TCB->drv->size(TCB, linep, colp);
+ TCB->drv->td_size(TCB, linep, colp);
#if USE_REENTRANT
if (sp != 0) {
#endif
#if HAVE_SIZECHANGE
/* try asking the OS */
- if (isatty(cur_term->Filedes)) {
+ if (NC_ISATTY(cur_term->Filedes)) {
STRUCT_WINSIZE size;
errno = 0;
assert(sp != 0);
- CallDriver_2(sp, getsize, &old_lines, &old_cols);
+ CallDriver_2(sp, td_getsize, &old_lines, &old_cols);
#else
TERMINAL *termp = cur_term;
* 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)) {
*
****************************************************************************/
-#if USE_DATABASE || USE_TERMCAP
+#if NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP
/*
* Return 1 if entry found, 0 if not found, -1 if database not accessible,
* just like tgetent().
_nc_locale_breaks_acs(TERMINAL * termp)
{
const char *env_name = "NCURSES_NO_UTF8_ACS";
- char *env;
+ const char *env;
int value;
int result = 0;
+ T((T_CALLED("_nc_locale_breaks_acs:%d"), result));
if (getenv(env_name) != 0) {
result = _nc_getenv_num(env_name);
} else if ((value = tigetnum("U8")) >= 0) {
}
}
}
- return result;
+ returnCode(result);
}
NCURSES_EXPORT(int)
* Allow output redirection. This is what SVr3 does. If stdout is
* directed to a file, screen updates go to standard error.
*/
- if (Filedes == STDOUT_FILENO && !isatty(Filedes))
+ if (Filedes == STDOUT_FILENO && !NC_ISATTY(Filedes))
Filedes = STDERR_FILENO;
/*
&& _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);
+ TERMINAL_CONTROL_BLOCK *my_tcb;
+ my_tcb = typeCalloc(TERMINAL_CONTROL_BLOCK, 1);
+ termp = &(my_tcb->term);
#else
termp = typeCalloc(TERMINAL, 1);
#endif
termp->Filedes = (short) Filedes;
termp->_termname = strdup(tname);
} else {
- ret_error0(TGETENT_ERR,
+ ret_error0(errret ? *errret : TGETENT_ERR,
"Could not find any driver to handle this terminal.\n");
}
#else
-#if USE_DATABASE || USE_TERMCAP
+#if NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP
status = _nc_setup_tinfo(tname, &termp->type);
#else
status = TGETENT_NO;
* _nc_setupscreen(). Do it now anyway, so we can initialize the
* baudrate.
*/
- if (isatty(Filedes)) {
+ if (NC_ISATTY(Filedes)) {
def_prog_mode();
baudrate();
}
#ifdef USE_TERM_DRIVER
*tp = termp;
NCURSES_SP_NAME(set_curterm) (sp, termp);
- TCB->drv->init(TCB);
+ TCB->drv->td_init(TCB);
#else
sp = SP;
#endif
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);
+ del_curterm(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);
NCURSES_EXPORT(int)
setupterm(NCURSES_CONST char *tname, int Filedes, int *errret)
{
+ START_TRACE();
return _nc_setupterm(tname, Filedes, errret, FALSE);
}