X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=test%2Fgdc.c;h=7243c104b1730c7f42a9263bcfcf3038544d04a9;hb=2bcad5fdfc4aa83a1479bd1d21dadc32dad8c2a8;hp=deecdf7e49f3f1619ccf024072c696ecae5730ef;hpb=12b49d3c56a6130feb2d39fbe2d6c1bc0838f0fa;p=ncurses.git diff --git a/test/gdc.c b/test/gdc.c index deecdf7e..7243c104 100644 --- a/test/gdc.c +++ b/test/gdc.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. * + * Copyright 2019-2020,2022 Thomas E. Dickey * + * Copyright 1998-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 * @@ -33,7 +34,7 @@ * modified 10-18-89 for curses (jrl) * 10-18-89 added signal handling * - * $Id: gdc.c,v 1.51 2017/09/30 18:10:05 tom Exp $ + * $Id: gdc.c,v 1.57 2022/12/04 00:40:11 tom Exp $ */ #include @@ -66,7 +67,7 @@ sighndl(int signo) signal(signo, sighndl); sigtermed = signo; if (redirected) { - exit_curses(); + stop_curses(); ExitProgram(EXIT_FAILURE); } } @@ -76,7 +77,7 @@ check_term(void) { if (sigtermed) { (void) standend(); - exit_curses(); + stop_curses(); fprintf(stderr, "gdc terminated by signal %d\n", sigtermed); ExitProgram(EXIT_FAILURE); } @@ -86,7 +87,6 @@ static void drawbox(bool scrolling) { chtype bottom[XLENGTH + 1]; - int n; if (hascolor) (void) attrset(AttrArg(COLOR_PAIR(PAIR_FRAMES), 0)); @@ -97,6 +97,7 @@ drawbox(bool scrolling) MvAddCh(YBASE + YDEPTH, XBASE - 1, ACS_LLCORNER); if ((mvinchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH)) != ERR) { + int n; for (n = 0; n < XLENGTH; n++) { if (!scrolling) bottom[n] &= ~A_COLOR; @@ -149,26 +150,27 @@ set(int t, int n) } static void -usage(void) +usage(int ok) { static const char *msg[] = { "Usage: gdc [options] [count]" ,"" + ,USAGE_COMMON ,"Options:" #if HAVE_USE_DEFAULT_COLORS - ," -d invoke use_default_colors" + ," -d invoke use_default_colors" #endif - ," -n redirect input to /dev/null" - ," -s scroll each number into place, rather than flipping" - ," -t hh:mm:ss specify starting time (default is ``now'')" + ," -n redirect input to /dev/null" + ," -s scroll each number into place, rather than flipping" + ," -t TIME specify starting time as hh:mm:ss (default is ``now'')" ,"" ,"If you specify a count, gdc runs for that number of seconds" }; unsigned j; for (j = 0; j < SIZEOF(msg); j++) fprintf(stderr, "%s\n", msg[j]); - ExitProgram(EXIT_FAILURE); + ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE); } static time_t @@ -182,14 +184,14 @@ parse_time(const char *value) if (sscanf(value, "%d:%d:%d%c", &hh, &mm, &ss, &c) != 3) { if (sscanf(value, "%02d%02d%02d%c", &hh, &mm, &ss, &c) != 3) { - usage(); + usage(FALSE); } } if ((hh < 0) || (hh >= 24) || (mm < 0) || (mm >= 60) || (ss < 0) || (ss >= 60)) { - usage(); + usage(FALSE); } /* adjust so that the localtime in the main loop will give usable time */ @@ -203,10 +205,13 @@ parse_time(const char *value) if (tm->tm_hour != hh) { fprintf(stderr, "Cannot find local time for %s!\n", value); - usage(); + usage(FALSE); } return result; } +/* *INDENT-OFF* */ +VERSION_COMMON() +/* *INDENT-ON* */ int main(int argc, char *argv[]) @@ -214,7 +219,7 @@ main(int argc, char *argv[]) time_t now; struct tm *tm; long t, a; - int i, j, s, k; + int i, j, s, k, ch; int count = 0; FILE *ofp = stdout; FILE *ifp = stdin; @@ -227,8 +232,8 @@ main(int argc, char *argv[]) setlocale(LC_ALL, ""); - while ((k = getopt(argc, argv, "dnst:")) != -1) { - switch (k) { + while ((ch = getopt(argc, argv, OPTS_COMMON "dnst:")) != -1) { + switch (ch) { #if HAVE_USE_DEFAULT_COLORS case 'd': d_option = TRUE; @@ -244,16 +249,20 @@ main(int argc, char *argv[]) case 't': starts = parse_time(optarg); break; + case OPTS_VERSION: + show_version(argv); + ExitProgram(EXIT_SUCCESS); default: - usage(); + usage(ch == OPTS_USAGE); + /* NOTREACHED */ } } if (optind < argc) { count = atoi(argv[optind++]); assert(count >= 0); + if (optind < argc) + usage(FALSE); } - if (optind < argc) - usage(); InitAndCatch({ if (redirected) { @@ -447,6 +456,6 @@ main(int argc, char *argv[]) } } while (--count); (void) standend(); - exit_curses(); + stop_curses(); ExitProgram(EXIT_SUCCESS); }