summaryrefslogtreecommitdiffstats
path: root/games/grdc/grdc.c
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2001-09-25 13:45:46 +0000
committerru <ru@FreeBSD.org>2001-09-25 13:45:46 +0000
commit293d121c6bc633b0cbc60970add1c5e92d82d4ba (patch)
treeb1de8df73638351767580a9be9a11fe51560d1b4 /games/grdc/grdc.c
parent2462e13fc46de3099c72f5003f4270cbb1200188 (diff)
downloadFreeBSD-src-293d121c6bc633b0cbc60970add1c5e92d82d4ba.zip
FreeBSD-src-293d121c6bc633b0cbc60970add1c5e92d82d4ba.tar.gz
- Only use sig_atomic_t objects in signal handlers.
- Use getopt() to parse command line. - Add usage(). - WARNSify. - Convert manpage to mdoc(7). PR: bin/30641 Submitted by: Andrey Simonenko <simon@simon.org.ua>, ru MFC after: 1 week
Diffstat (limited to 'games/grdc/grdc.c')
-rw-r--r--games/grdc/grdc.c50
1 files changed, 39 insertions, 11 deletions
diff --git a/games/grdc/grdc.c b/games/grdc/grdc.c
index 881428f..97d956f 100644
--- a/games/grdc/grdc.c
+++ b/games/grdc/grdc.c
@@ -9,6 +9,7 @@
* $FreeBSD$
*/
+#include <err.h>
#include <time.h>
#include <signal.h>
#include <ncurses.h>
@@ -31,9 +32,8 @@ short disp[11] = {
074717, 074757, 071111, 075757, 075717, 002020
};
long old[6], next[6], new[6], mask;
-char scrol;
-int sigtermed=0;
+volatile sig_atomic_t sigtermed;
int hascolor = 0;
@@ -41,6 +41,7 @@ void set(int, int);
void standt(int);
void movto(int, int);
void sighndl(int);
+void usage(void);
void sighndl(signo)
int signo;
@@ -55,7 +56,34 @@ char **argv;
{
long t, a;
int i, j, s, k;
-int n = 0;
+int n;
+int ch;
+int scrol;
+
+ scrol = 0;
+
+ while ((ch = getopt(argc, argv, "s")) != -1)
+ switch (ch) {
+ case 's':
+ scrol = 1;
+ break;
+ case '?':
+ default:
+ usage();
+ /* NOTREACHED */
+ }
+ argc -= optind;
+ argv += optind;
+
+ if (argc > 1) {
+ usage();
+ /* NOTREACHED */
+ }
+
+ if (argc > 0)
+ n = atoi(*argv);
+ else
+ n = 0;
initscr();
@@ -79,12 +107,6 @@ int n = 0;
clear();
refresh();
- while(--argc > 0) {
- if(**++argv == '-')
- scrol = 1;
- else
- n = atoi(*argv);
- }
if(hascolor) {
attrset(COLOR_PAIR(3));
@@ -155,8 +177,7 @@ int n = 0;
clear();
refresh();
endwin();
- fprintf(stderr, "grdc terminated by signal %d\n", sigtermed);
- exit(1);
+ errx(1, "terminated by signal %d", (int)sigtermed);
}
} while(--n);
standend();
@@ -204,3 +225,10 @@ movto(int line, int col)
move(line, col);
}
+void
+usage(void)
+{
+
+ (void)fprintf(stderr, "usage: grdc [-s] [n]\n");
+ exit(1);
+}
OpenPOWER on IntegriCloud