/****************************************************************************
- * Copyright (c) 1998-2017,2019 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 *
* modified 10-18-89 for curses (jrl)
* 10-18-89 added signal handling
*
- * $Id: gdc.c,v 1.53 2019/12/14 23:25:29 tom Exp $
+ * $Id: gdc.c,v 1.57 2022/12/04 00:40:11 tom Exp $
*/
#include <test.priv.h>
}
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
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 */
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[])
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;
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;
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({