]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - test/gdc.c
ncurses 6.3 - patch 20221203
[ncurses.git] / test / gdc.c
index 59c95e17f2d607109f30afd81d05af7c1bdc3d85..7243c104b1730c7f42a9263bcfcf3038544d04a9 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019,2020 Thomas E. Dickey                                     *
+ * 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  *
@@ -34,7 +34,7 @@
  * modified 10-18-89 for curses (jrl)
  * 10-18-89 added signal handling
  *
- * $Id: gdc.c,v 1.54 2020/02/02 23:34:34 tom Exp $
+ * $Id: gdc.c,v 1.57 2022/12/04 00:40:11 tom Exp $
  */
 
 #include <test.priv.h>
@@ -150,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
@@ -183,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 */
@@ -204,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[])
@@ -215,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;
@@ -228,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;
@@ -245,15 +249,19 @@ 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();
+           usage(FALSE);
     }
 
     InitAndCatch({