View | Details | Raw Unified | Return to bug 35113 | Differences between
and this patch

Collapse All | Expand All

(-)grdc.c (-13 / +37 lines)
Lines 1-10 Link Here
1
/*
1
/*
2
 * Grand digital clock for curses compatible terminals
2
 * Grand digital clock for curses compatible terminals
3
 * Usage: grdc [-s] [n]   -- run for n seconds (default infinity)
3
 * Usage: grdc [-s] [n]   -- run for n seconds (default infinity)
4
 *        grdc -t n       -- countdown n seconds
4
 * Flags: -s: scroll
5
 * Flags: -s: scroll
6
 *        -t: timer mode
5
 *
7
 *
6
 * modified 10-18-89 for curses (jrl)
8
 * modified 10-18-89 for curses (jrl)
7
 * 10-18-89 added signal handling
9
 * 10-18-89 added signal handling
10
 * 02-18-02 added countdown timer mode
8
 *
11
 *
9
 * $FreeBSD: src/games/grdc/grdc.c,v 1.9 2001/09/25 13:45:46 ru Exp $
12
 * $FreeBSD: src/games/grdc/grdc.c,v 1.9 2001/09/25 13:45:46 ru Exp $
10
 */
13
 */
Lines 25-30 Link Here
25
28
26
/* it won't be */
29
/* it won't be */
27
time_t now; /* yeah! */
30
time_t now; /* yeah! */
31
time_t end; /* for timer mode */
28
struct tm *tm;
32
struct tm *tm;
29
33
30
short disp[11] = {
34
short disp[11] = {
Lines 58-72 Link Here
58
int i, j, s, k;
62
int i, j, s, k;
59
int n;
63
int n;
60
int ch;
64
int ch;
61
int scrol;
65
int scrol = 0;
66
int timer = 0;
67
int hour, minute, second;
62
68
63
	scrol = 0;
69
	while ((ch = getopt(argc, argv, "st")) != -1)
64
65
	while ((ch = getopt(argc, argv, "s")) != -1)
66
	switch (ch) {
70
	switch (ch) {
67
	case 's':
71
	case 's':
68
		scrol = 1;
72
		scrol = 1;
69
		break;
73
		break;
74
	case 't':
75
		timer = 1;
76
		break;
70
	case '?':
77
	case '?':
71
	default:
78
	default:
72
		usage();
79
		usage();
Lines 75-81 Link Here
75
	argc -= optind;
82
	argc -= optind;
76
	argv += optind;
83
	argv += optind;
77
84
78
	if (argc > 1) {
85
	if ((argc > 1) || (argc == 0 && timer)) {
79
		usage();
86
		usage();
80
		/* NOTREACHED */
87
		/* NOTREACHED */
81
	}
88
	}
Lines 85-90 Link Here
85
	else
92
	else
86
		n = 0;
93
		n = 0;
87
94
95
	if (timer && n == 0)
96
		return(0);
97
88
	initscr();
98
	initscr();
89
99
90
	signal(SIGINT,sighndl);
100
	signal(SIGINT,sighndl);
Lines 127-142 Link Here
127
137
128
		attrset(COLOR_PAIR(2));
138
		attrset(COLOR_PAIR(2));
129
	}
139
	}
140
	time(&end);
141
	end += n;
130
	do {
142
	do {
131
		mask = 0;
143
		mask = 0;
132
		time(&now);
144
		time(&now);
133
		tm = localtime(&now);
145
		if (!timer) {
134
		set(tm->tm_sec%10, 0);
146
			tm = localtime(&now);
135
		set(tm->tm_sec/10, 4);
147
			hour = tm->tm_hour;
136
		set(tm->tm_min%10, 10);
148
			minute = tm->tm_min;
137
		set(tm->tm_min/10, 14);
149
			second = tm->tm_sec;
138
		set(tm->tm_hour%10, 20);
150
		} else {
139
		set(tm->tm_hour/10, 24);
151
			n = end - now;
152
			if (n <= 0)
153
				break;
154
			hour = (n/3600)%100;
155
			minute = (n/60)%60;
156
			second = n%60;
157
		}
158
		set(second%10, 0);
159
		set(second/10, 4);
160
		set(minute%10, 10);
161
		set(minute/10, 14);
162
		set(hour%10, 20);
163
		set(hour/10, 24);
140
		set(10, 7);
164
		set(10, 7);
141
		set(10, 17);
165
		set(10, 17);
142
		for(k=0; k<6; k++) {
166
		for(k=0; k<6; k++) {
Lines 229-234 Link Here
229
usage(void)
253
usage(void)
230
{
254
{
231
255
232
	(void)fprintf(stderr, "usage: grdc [-s] [n]\n");
256
	(void)fprintf(stderr, "usage: grdc [-s] [n]\n       grdc -t n\n");
233
	exit(1);
257
	exit(1);
234
}
258
}

Return to bug 35113