# endif
#endif
-MODULE_ID("$Id: tinfo_driver.c,v 1.54 2017/06/17 22:22:03 tom Exp $")
+MODULE_ID("$Id: tinfo_driver.c,v 1.59 2017/09/10 21:08:46 tom Exp $")
/*
* SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
if (status != TGETENT_YES) {
NCURSES_SP_NAME(del_curterm) (NCURSES_SP_ARGx termp);
if (status == TGETENT_ERR) {
- _nc_free_termtype2(&TerminalType(termp));
ret_error0(status, "terminals database is inaccessible\n");
} else if (status == TGETENT_NO) {
- _nc_free_termtype2(&TerminalType(termp));
ret_error1(status, "unknown terminal type.\n", tname);
}
}
if (sp == 0 && NC_ISATTY(termp->Filedes)) {
get_baudrate(termp);
}
+#if NCURSES_EXT_NUMBERS
+#define cleanup_termtype() \
+ _nc_free_termtype2(&TerminalType(termp)); \
+ _nc_free_termtype(&termp->type)
+#else
+#define cleanup_termtype() \
+ _nc_free_termtype2(&TerminalType(termp))
+#endif
if (generic_type) {
/*
if ((VALID_STRING(cursor_address)
|| (VALID_STRING(cursor_down) && VALID_STRING(cursor_home)))
&& VALID_STRING(clear_screen)) {
- _nc_free_termtype2(&TerminalType(termp));
+ cleanup_termtype();
ret_error1(TGETENT_YES, "terminal is not really generic.\n", tname);
} else {
- _nc_free_termtype2(&TerminalType(termp));
+ cleanup_termtype();
ret_error1(TGETENT_NO, "I need something more specific.\n", tname);
}
}
if (hard_copy) {
- _nc_free_termtype2(&TerminalType(termp));
+ cleanup_termtype();
ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", tname);
}
{
AssertTCB();
- clear_screen = 0;
- cursor_down = parm_down_cursor = 0;
- cursor_address = 0;
- cursor_up = parm_up_cursor = 0;
- row_address = 0;
- cursor_home = carriage_return;
+ /* *INDENT-EQLS* */
+ clear_screen = ABSENT_STRING;
+ cursor_address = ABSENT_STRING;
+ cursor_down = ABSENT_STRING;
+ cursor_up = ABSENT_STRING;
+ parm_down_cursor = ABSENT_STRING;
+ parm_up_cursor = ABSENT_STRING;
+ row_address = ABSENT_STRING;
+ cursor_home = carriage_return;
+
+ if (back_color_erase)
+ clr_eos = ABSENT_STRING;
}
static void