/****************************************************************************
- * Copyright (c) 2008-2017,2018 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-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 *
# endif
#endif
-MODULE_ID("$Id: tinfo_driver.c,v 1.63 2018/11/24 22:17:03 tom Exp $")
+MODULE_ID("$Id: tinfo_driver.c,v 1.66 2019/08/10 18:36:08 tom Exp $")
/*
* SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
#undef SETUP_FAIL
#define SETUP_FAIL FALSE
+#define NO_COPY {}
+
static bool
drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
{
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",
+ tname, NO_COPY);
+ } else {
+ ret_error0(status, "unexpected return-code\n");
}
}
result = TRUE;
|| (VALID_STRING(cursor_down) && VALID_STRING(cursor_home)))
&& VALID_STRING(clear_screen)) {
cleanup_termtype();
- ret_error1(TGETENT_YES, "terminal is not really generic.\n", tname);
+ ret_error1(TGETENT_YES, "terminal is not really generic.\n",
+ tname, NO_COPY);
} else {
cleanup_termtype();
- ret_error1(TGETENT_NO, "I need something more specific.\n", tname);
+ ret_error1(TGETENT_NO, "I need something more specific.\n",
+ tname, NO_COPY);
}
}
if (hard_copy) {
cleanup_termtype();
- ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", tname);
+ ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n",
+ tname, NO_COPY);
}
returnBool(result);
unsigned ch = (unsigned) c;
if (flag) {
while ((s = _nc_expand_try(sp->_key_ok,
- ch, &count, (size_t) 0)) != 0
- && _nc_remove_key(&(sp->_key_ok), ch)) {
- code = _nc_add_to_try(&(sp->_keytry), s, ch);
- free(s);
- count = 0;
- if (code != OK)
- break;
+ ch, &count, (size_t) 0)) != 0) {
+ if (_nc_remove_key(&(sp->_key_ok), ch)) {
+ code = _nc_add_to_try(&(sp->_keytry), s, ch);
+ free(s);
+ count = 0;
+ if (code != OK)
+ break;
+ } else {
+ free(s);
+ }
}
} else {
while ((s = _nc_expand_try(sp->_keytry,
- ch, &count, (size_t) 0)) != 0
- && _nc_remove_key(&(sp->_keytry), ch)) {
- code = _nc_add_to_try(&(sp->_key_ok), s, ch);
- free(s);
- count = 0;
- if (code != OK)
- break;
+ ch, &count, (size_t) 0)) != 0) {
+ if (_nc_remove_key(&(sp->_keytry), ch)) {
+ code = _nc_add_to_try(&(sp->_key_ok), s, ch);
+ free(s);
+ count = 0;
+ if (code != OK)
+ break;
+ } else {
+ free(s);
+ }
}
}
}