X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Flib_setup.c;h=f4b1bb9e81ca5b6f3e19e61caa361f121750362c;hp=e90a5467c4a89838ef8ae5813bb4665f9bfca435;hb=fe43d506ce08d1deef9e9e5a6d5fd4f9c9c32e1d;hpb=093902b4199bbc1d9afec433759e48344c06ed1a diff --git a/ncurses/tinfo/lib_setup.c b/ncurses/tinfo/lib_setup.c index e90a5467..f4b1bb9e 100644 --- a/ncurses/tinfo/lib_setup.c +++ b/ncurses/tinfo/lib_setup.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. * + * Copyright (c) 1998-2018,2019 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 * @@ -48,7 +48,7 @@ #include #endif -MODULE_ID("$Id: lib_setup.c,v 1.196 2018/09/08 20:14:26 tom Exp $") +MODULE_ID("$Id: lib_setup.c,v 1.200 2019/06/22 00:15:32 tom Exp $") /**************************************************************************** * @@ -628,6 +628,7 @@ TINFO_SETUP_TERM(TERMINAL **tp, #endif TERMINAL *termp; SCREEN *sp = 0; + char *myname; int code = ERR; START_TRACE(); @@ -656,14 +657,15 @@ TINFO_SETUP_TERM(TERMINAL **tp, #endif } } + myname = strdup(tname); - if (strlen(tname) > MAX_NAME_SIZE) { + if (strlen(myname) > MAX_NAME_SIZE) { ret_error(TGETENT_ERR, "TERM environment must be <= %d characters.\n", MAX_NAME_SIZE); } - T(("your terminal name is %s", tname)); + T(("your terminal name is %s", myname)); /* * Allow output redirection. This is what SVr3 does. If stdout is @@ -692,8 +694,8 @@ TINFO_SETUP_TERM(TERMINAL **tp, && (termp != 0) && termp->Filedes == Filedes && termp->_termname != 0 - && !strcmp(termp->_termname, tname) - && _nc_name_match(TerminalType(termp).term_names, tname, "|")) { + && !strcmp(termp->_termname, myname) + && _nc_name_match(TerminalType(termp).term_names, myname, "|")) { T(("reusing existing terminal information and mode-settings")); code = OK; #ifdef USE_TERM_DRIVER @@ -735,27 +737,30 @@ TINFO_SETUP_TERM(TERMINAL **tp, #ifdef USE_TERM_DRIVER INIT_TERM_DRIVER(); TCB = (TERMINAL_CONTROL_BLOCK *) termp; - code = _nc_globals.term_driver(TCB, tname, errret); + code = _nc_globals.term_driver(TCB, myname, errret); if (code == OK) { termp->Filedes = (short) Filedes; - termp->_termname = strdup(tname); + termp->_termname = strdup(myname); } else { ret_error0(errret ? *errret : TGETENT_ERR, "Could not find any driver to handle this terminal.\n"); } #else #if NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP - status = _nc_setup_tinfo(tname, &TerminalType(termp)); + status = _nc_setup_tinfo(myname, &TerminalType(termp)); + T(("_nc_setup_tinfo returns %d", status)); #else + T(("no database available")); status = TGETENT_NO; #endif /* try fallback list if entry on disk */ if (status != TGETENT_YES) { - const TERMTYPE2 *fallback = _nc_fallback2(tname); + const TERMTYPE2 *fallback = _nc_fallback2(myname); if (fallback) { - TerminalType(termp) = *fallback; + T(("found fallback entry")); + _nc_copy_termtype2(&(TerminalType(termp)), fallback); status = TGETENT_YES; } } @@ -765,7 +770,7 @@ TINFO_SETUP_TERM(TERMINAL **tp, if (status == TGETENT_ERR) { ret_error0(status, "terminals database is inaccessible\n"); } else if (status == TGETENT_NO) { - ret_error1(status, "unknown terminal type.\n", tname); + ret_error1(status, "unknown terminal type.\n", myname); } } #if NCURSES_EXT_NUMBERS @@ -776,7 +781,7 @@ TINFO_SETUP_TERM(TERMINAL **tp, #endif termp->Filedes = (short) Filedes; - termp->_termname = strdup(tname); + termp->_termname = strdup(myname); set_curterm(termp); @@ -823,15 +828,16 @@ TINFO_SETUP_TERM(TERMINAL **tp, if ((VALID_STRING(cursor_address) || (VALID_STRING(cursor_down) && VALID_STRING(cursor_home))) && VALID_STRING(clear_screen)) { - ret_error1(TGETENT_YES, "terminal is not really generic.\n", tname); + ret_error1(TGETENT_YES, "terminal is not really generic.\n", myname); } else { del_curterm(termp); - ret_error1(TGETENT_NO, "I need something more specific.\n", tname); + ret_error1(TGETENT_NO, "I need something more specific.\n", myname); } } else if (hard_copy) { - ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", tname); + ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", myname); } #endif + free(myname); returnCode(code); }