/****************************************************************************
- * Copyright (c) 2009-2015,2016 Free Software Foundation, Inc. *
+ * Copyright (c) 2009-2016,2017 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 *
/*
* Author: Thomas E. Dickey
*
- * $Id: demo_terminfo.c,v 1.42 2016/06/18 23:57:33 tom Exp $
+ * $Id: demo_terminfo.c,v 1.47 2017/04/09 00:27:42 tom Exp $
*
* A simple demo of the terminfo interface.
*/
static char *
make_dbitem(char *p, char *q)
{
- char *result = malloc(strlen(e_opt) + 2 + (size_t) (p - q));
- sprintf(result, "%s=%.*s", e_opt, (int) (p - q), q);
+ size_t need = strlen(e_opt) + 2 + (size_t) (p - q);
+ char *result = malloc(need);
+ _nc_SPRINTF(result, _nc_SLIMIT(need) "%s=%.*s", e_opt, (int) (p - q), q);
return result;
}
return result;
}
-#ifdef NO_LEAKS
+#if NO_LEAKS
static void
free_dblist(void)
{
int mod;
if (y_opt) {
#if NCURSES_XNAMES
- TERMTYPE *term = &(cur_term->type);
+ TERMTYPE *term = (TERMTYPE *) cur_term;
if (term != 0
&& ((NUM_BOOLEANS(term) != BOOLCOUNT)
|| (NUM_NUMBERS(term) != NUMCOUNT)
!strcmp(xterm_keys[n], "kRIT")) {
continue;
}
- sprintf(temp, "%.*s", 8, xterm_keys[n]);
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "%.*s", 8, xterm_keys[n]);
} else {
- sprintf(temp, "%.*s%d", 8, xterm_keys[n], mod);
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "%.*s%d", 8, xterm_keys[n], mod);
}
dumpit(temp, NULL);
}
length += chunk;
} else {
result[count] = unused;
- strcpy(unused, list[count]);
+ _nc_STRCPY(unused, list[count], length);
unused += chunk;
}
}
return result;
}
+
+#if NO_LEAKS
+static void
+free_code_list(char **list)
+{
+ if (list) {
+ free(list[0]);
+ free(list);
+ }
+}
#endif
+#endif /* USE_CODE_LISTS */
static void
usage(void)
PLURAL(total_n_values),
PLURAL(total_s_values));
-#ifdef NO_LEAKS
+#if NO_LEAKS
free_dblist();
- if (my_blob != 0) {
- free(my_blob);
- free(my_boolcodes);
- free(my_numcodes);
- free(my_numvalues);
- free(my_strcodes);
- free(my_strvalues);
+ if (input_name != 0) {
+ if (my_blob != 0) {
+ free(my_blob);
+ free(my_boolcodes);
+ free(my_numcodes);
+ free(my_numvalues);
+ free(my_strcodes);
+ free(my_strvalues);
+ }
+ }
+#if USE_CODE_LISTS
+ else {
+ free_code_list(my_boolcodes);
+ free_code_list(my_numcodes);
+ free_code_list(my_strcodes);
}
#endif
+#endif /* NO_LEAKS */
ExitProgram(EXIT_SUCCESS);
}