X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Fdemo_menus.c;h=61c69daee19b45502e8c79a6f96efa453b81ae46;hp=7fe0ea37394dab003ead0e3b3e9eb243f83c8a71;hb=8d3ea9021573747ecd129228ba7782a03243f62c;hpb=2a32bee362db64f5a06b2124976b928ac3faa578 diff --git a/test/demo_menus.c b/test/demo_menus.c index 7fe0ea37..61c69dae 100644 --- a/test/demo_menus.c +++ b/test/demo_menus.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 2005-2015,2016 Free Software Foundation, Inc. * + * Copyright (c) 2005-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 * @@ -26,7 +26,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: demo_menus.c,v 1.59 2016/03/27 00:02:01 tom Exp $ + * $Id: demo_menus.c,v 1.65 2017/11/24 21:03:30 tom Exp $ * * Demonstrate a variety of functions from the menu library. * Thomas Dickey - 2005/4/9 @@ -75,11 +75,8 @@ top_row - #ifdef NCURSES_VERSION #ifdef TRACE static unsigned save_trace = TRACE_ORDINARY | TRACE_CALLS; -extern unsigned _nc_tracing; static MENU *mpTrace; #endif -#else -#undef TRACE #endif typedef enum { @@ -113,6 +110,15 @@ static WINDOW *status; static bool loaded_file = FALSE; static char empty[1]; +static void failed(const char *s) GCC_NORETURN; + +static void +failed(const char *s) +{ + perror(s); + endwin(); + ExitProgram(EXIT_FAILURE); +} /* Common function to allow ^T to toggle trace-mode in the middle of a test * so that trace-files can be made smaller. @@ -186,9 +192,9 @@ menu_offset(MenuNo number) int result = 0; if (okMenuNo(number)) { - int spc_desc, spc_rows, spc_cols; - + int spc_rows; #ifdef NCURSES_VERSION + int spc_desc, spc_cols; menu_spacing(mpBanner, &spc_desc, &spc_rows, &spc_cols); #else spc_rows = 0; @@ -544,27 +550,31 @@ static char * tracetrace(unsigned tlevel) { static char *buf; + static size_t need = 12; int n; if (buf == 0) { - size_t need = 12; for (n = 0; t_tbl[n].name != 0; n++) need += strlen(t_tbl[n].name) + 2; buf = typeMalloc(char, need); + if (!buf) + failed("tracetrace"); } - sprintf(buf, "0x%02x = {", tlevel); + _nc_SPRINTF(buf, _nc_SLIMIT(need) "0x%02x = {", tlevel); if (tlevel == 0) { - sprintf(buf + strlen(buf), "%s, ", t_tbl[0].name); + _nc_STRCAT(buf, t_tbl[0].name, need); + _nc_STRCAT(buf, ", ", need); } else { for (n = 1; t_tbl[n].name != 0; n++) if ((tlevel & t_tbl[n].mask) == t_tbl[n].mask) { - strcat(buf, t_tbl[n].name); - strcat(buf, ", "); + _nc_STRCAT(buf, t_tbl[n].name, need); + _nc_STRCAT(buf, ", ", need); } } if (buf[strlen(buf) - 2] == ',') buf[strlen(buf) - 2] = '\0'; - return (strcat(buf, "}")); + _nc_STRCAT(buf, "}", need); + return buf; } /* fake a dynamically reconfigurable menu using the 0th entry to deselect