X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=test%2Fncurses.c;h=afa631ad5a3943ce008a554182c4e4d7679abe32;hb=2632b47fdcf4dcd101962c92acafaac69630388f;hp=e3ba7b555e40a16399dd2ad07f072dadb11b2d63;hpb=47d2fb4537d9ad5bb14f4810561a327930ca4280;p=ncurses.git diff --git a/test/ncurses.c b/test/ncurses.c index e3ba7b55..afa631ad 100644 --- a/test/ncurses.c +++ b/test/ncurses.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2018-2021,2022 Thomas E. Dickey * * Copyright 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -41,7 +41,7 @@ AUTHOR Author: Eric S. Raymond 1993 Thomas E. Dickey (beginning revision 1.27 in 1996). -$Id: ncurses.c,v 1.522 2020/02/02 23:34:34 tom Exp $ +$Id: ncurses.c,v 1.532 2022/12/04 00:40:11 tom Exp $ ***************************************************************************/ @@ -166,7 +166,7 @@ static RGB_DATA *all_colors; #endif static void main_menu(bool); -static void failed(const char *s) GCC_NORETURN; +static GCC_NORETURN void failed(const char *s); static void failed(const char *s) @@ -490,7 +490,7 @@ ShellOut(bool message) addstr("Shelling out..."); def_prog_mode(); endwin(); -#ifdef _WIN32 +#ifdef _NC_WINDOWS system("cmd.exe"); #else IGNORE_RC(system("sh")); @@ -855,7 +855,7 @@ wgetch_test(unsigned level, WINDOW *win, int delay) setup_getch(win, flags); wgetch_help(win, flags); } else if (c == 'g') { - waddstr(win, "getstr test: "); + waddstr(win, "wgetnstr test: "); echo(); c = wgetnstr(win, buf, sizeof(buf) - 1); noecho(); @@ -1113,7 +1113,7 @@ wget_wch_test(unsigned level, WINDOW *win, int delay) setup_getch(win, flags); wgetch_help(win, flags); } else if (c == 'g') { - waddstr(win, "getstr test: "); + waddstr(win, "wgetn_str test: "); echo(); code = wgetn_wstr(win, wint_buf, BUFSIZ - 1); noecho(); @@ -2885,6 +2885,10 @@ init_all_colors(bool xterm_colors, char *palette_file) while (fgets(buffer, sizeof(buffer), fp) != 0) { if (sscanf(buffer, "scale:%d", &c) == 1) { scale = c; + if (scale < 100) + scale = 100; + if (scale > 1000) + scale = 1000; } else if (sscanf(buffer, "%d:%d %d %d", &c, &red, @@ -4413,7 +4417,7 @@ x_acs_test(bool recur GCC_UNUSED) if (pending_code) { _nc_SPRINTF(at_page, _nc_SLIMIT(sizeof(at_page)) "%02x", digit); } else if (at_page[0] != '\0') { - _nc_SPRINTF(at_page, _nc_SLIMIT(sizeof(at_page)) "%x", digit); + sscanf(at_page, "%x", &digit); } break; default: @@ -5531,7 +5535,7 @@ panner_legend(int line) "Number repeats. Toggle legend:? filler:a timer:t scrollmark:s." }; int n = ((int) SIZEOF(legend) - (LINES - line)); - if (n >= 0) { + if (n >= 0 && n < (int) SIZEOF(legend)) { if (move(line, 0) != ERR) { if (show_panner_legend) printw("%s", legend[n]); @@ -6232,7 +6236,7 @@ tracetrace(unsigned tlevel) } _nc_SPRINTF(buf, _nc_SLIMIT(need) "0x%02x = {", tlevel); if (tlevel == 0) { - _nc_STRCAT(buf, t_tbl[0].name, need); + _nc_STRCAT(buf, t_tbl[0].name ? t_tbl[0].name : "", need); _nc_STRCAT(buf, ", ", need); } else { for (n = 1; t_tbl[n].name != 0; n++) @@ -7236,11 +7240,11 @@ overlap_test(bool recur GCC_UNUSED) overlap_test_0(win2, win1); break; - case 'c': /* fill window A so it's visible */ + case 'c': /* fill window A so it is visible */ overlap_test_1(flavor[otBASE_fill], 0, win1, 'A'); break; - case 'd': /* fill window B so it's visible */ + case 'd': /* fill window B so it is visible */ overlap_test_1(flavor[otBASE_fill], 1, win2, 'B'); break; @@ -7436,11 +7440,11 @@ x_overlap_test(bool recur GCC_UNUSED) overlap_test_0(win2, win1); break; - case 'c': /* fill window A so it's visible */ + case 'c': /* fill window A so it is visible */ x_overlap_test_1(flavor[otBASE_fill], 0, win1, WIDE_A); break; - case 'd': /* fill window B so it's visible */ + case 'd': /* fill window B so it is visible */ x_overlap_test_1(flavor[otBASE_fill], 1, win2, WIDE_B); break; @@ -7618,6 +7622,10 @@ settings_test(bool recur GCC_UNUSED) #if HAVE_COLOR_CONTENT show_boolean_setting("can_change_color", can_change_color()); #endif + show_setting_name("LINES"); + printw("%d\n", LINES); + show_setting_name("COLS"); + printw("%d\n", COLS); Pause(); erase(); stop_curses(); @@ -7631,48 +7639,49 @@ settings_test(bool recur GCC_UNUSED) ****************************************************************************/ static void -usage(void) +usage(int ok) { static const char *const tbl[] = { "Usage: ncurses [options]" ,"" + ,USAGE_COMMON ,"Options:" #ifdef NCURSES_VERSION - ," -a f,b set default-colors (assumed white-on-black)" - ," -d use default-colors if terminal supports them" + ," -a f,b set default-colors (assumed white-on-black)" + ," -d use default-colors if terminal supports them" #endif #if HAVE_USE_ENV - ," -E call use_env(FALSE) to ignore $LINES and $COLUMNS" + ," -E call use_env(FALSE) to ignore $LINES and $COLUMNS" #endif #if USE_SOFTKEYS - ," -e fmt specify format for soft-keys test (e)" + ," -e fmt specify format for soft-keys test (e)" #endif #if HAVE_RIPOFFLINE - ," -f rip-off footer line (can repeat)" - ," -h rip-off header line (can repeat)" + ," -F rip-off footer line (can repeat)" + ," -H rip-off header line (can repeat)" #endif - ," -m do not use colors" + ," -m do not use colors" #if HAVE_COLOR_CONTENT - ," -p file rgb values to use in 'd' rather than ncurses's builtin" + ," -p file rgb values to use in 'd' rather than ncurses's builtin" #endif #if USE_LIBPANEL - ," -s msec specify nominal time for panel-demo (default: 1, to hold)" + ," -s msec specify nominal time for panel-demo (default: 1, to hold)" #endif -#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20120714) && !defined(_WIN32) - ," -T call use_tioctl(TRUE) to allow SIGWINCH to override environment" +#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20120714) && !defined(_NC_WINDOWS) + ," -T call use_tioctl(TRUE) to allow SIGWINCH to override environment" #endif #ifdef TRACE - ," -t mask specify default trace-level (may toggle with ^T)" + ," -t mask specify default trace-level (may toggle with ^T)" #endif #if HAVE_COLOR_CONTENT - ," -x use xterm-compatible control for reading color palette" + ," -x use xterm-compatible control for reading color palette" #endif }; size_t n; for (n = 0; n < SIZEOF(tbl); n++) fprintf(stderr, "%s\n", tbl[n]); - ExitProgram(EXIT_FAILURE); + ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE); } static void @@ -7786,7 +7795,6 @@ main_menu(bool top) int (*doit) (bool); char command; unsigned n; - do { printf("This is the ncurses main menu (uppercase for wide-characters)\n"); for (n = 0; n < SIZEOF(cmds); ++n) { @@ -7852,7 +7860,7 @@ main_menu(bool top) if (doit != NULL && doit(FALSE) == OK) { /* - * This may be overkill; it's intended to reset everything back + * This may be overkill; it is intended to reset everything back * to the initial terminal modes so that tests don't get in * each other's way. */ @@ -7880,11 +7888,14 @@ main_menu(bool top) /*+------------------------------------------------------------------------- main(argc,argv) --------------------------------------------------------------------------*/ +/* *INDENT-OFF* */ +VERSION_COMMON() +/* *INDENT-ON* */ int main(int argc, char *argv[]) { - int c; + int ch; int my_e_param = 1; #ifdef NCURSES_VERSION_PATCH #if HAVE_USE_DEFAULT_COLORS @@ -7904,8 +7915,8 @@ main(int argc, char *argv[]) setlocale(LC_ALL, ""); - while ((c = getopt(argc, argv, "a:dEe:fhmp:s:Tt:x")) != -1) { - switch (c) { + while ((ch = getopt(argc, argv, OPTS_COMMON "a:dEe:FHmp:s:Tt:x")) != -1) { + switch (ch) { #ifdef NCURSES_VERSION_PATCH #if HAVE_USE_DEFAULT_COLORS #if HAVE_ASSUME_DEFAULT_COLORS @@ -7935,17 +7946,17 @@ main(int argc, char *argv[]) my_e_param = atoi(optarg); #ifdef NCURSES_VERSION if (my_e_param > 3) /* allow extended layouts */ - usage(); + usage(FALSE); #else if (my_e_param > 1) - usage(); + usage(FALSE); #endif break; #if HAVE_RIPOFFLINE - case 'f': + case 'F': ripoffline(-1, rip_footer); break; - case 'h': + case 'H': ripoffline(1, rip_header); break; #endif /* HAVE_RIPOFFLINE */ @@ -7962,7 +7973,7 @@ main(int argc, char *argv[]) nap_msec = (int) atol(optarg); break; #endif -#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20120714) && !defined(_WIN32) +#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20120714) && !defined(_NC_WINDOWS) case 'T': use_tioctl(TRUE); break; @@ -7977,8 +7988,12 @@ main(int argc, char *argv[]) xterm_colors = TRUE; break; #endif + case OPTS_VERSION: + show_version(argv); + ExitProgram(EXIT_SUCCESS); default: - usage(); + usage(ch == OPTS_USAGE); + /* NOTREACHED */ } }