-/* $NetBSD: worms.c,v 1.13 2004/01/27 20:30:31 jsm Exp $ */
+/* $NetBSD: worms.c,v 1.23 2020/10/14 07:32:53 nia Exp $ */
/*
* Copyright (c) 1980, 1993
#include <sys/cdefs.h>
#ifndef lint
-__COPYRIGHT("@(#) Copyright (c) 1980, 1993\n\
- The Regents of the University of California. All rights reserved.\n");
+__COPYRIGHT("@(#) Copyright (c) 1980, 1993\
+ The Regents of the University of California. All rights reserved.");
#endif /* not lint */
#ifndef lint
#if 0
static char sccsid[] = "@(#)worms.c 8.1 (Berkeley) 5/31/93";
#else
-__RCSID("$NetBSD: worms.c,v 1.13 2004/01/27 20:30:31 jsm Exp $");
+__RCSID("$NetBSD: worms.c,v 1.23 2020/10/14 07:32:53 nia Exp $");
#endif
#endif /* not lint */
short *xpos, *ypos;
} *worm;
-volatile sig_atomic_t sig_caught = 0;
+static volatile sig_atomic_t sig_caught = 0;
int main(int, char **);
-void nomem(void) __attribute__((__noreturn__));
-void onsig(int);
+static void nomem(void) __dead;
+static void onsig(int);
int
-main(argc, argv)
- int argc;
- char *argv[];
+main(int argc, char *argv[])
{
int x, y, h, n;
struct worm *w;
short **ref;
const char *field;
char *mp;
- unsigned int delay = 0;
+ unsigned int delay = 20000;
mp = NULL;
length = 16;
while ((ch = getopt(argc, argv, "d:fl:n:t")) != -1)
switch(ch) {
case 'd':
- if ((delay = (unsigned int)strtoul(optarg, (char **)NULL, 10)) < 1 || delay > 1000)
+ if ((delay = (unsigned int)strtoul(optarg, NULL, 10)) < 1 || delay > 1000)
errx(1, "invalid delay (1-1000)");
delay *= 1000; /* ms -> us */
break;
if (!(worm = malloc((size_t)number *
sizeof(struct worm))) || !(mp = malloc((size_t)1024)))
nomem();
- initscr();
+ if (!initscr())
+ errx(0, "couldn't initialize screen");
+ curs_set(0);
CO = COLS;
LI = LINES;
last = CO - 1;
(void)signal(SIGHUP, onsig);
(void)signal(SIGINT, onsig);
(void)signal(SIGQUIT, onsig);
- (void)signal(SIGSTOP, onsig);
(void)signal(SIGTSTP, onsig);
(void)signal(SIGTERM, onsig);
endwin();
exit(0);
}
- if (delay) usleep(delay);
+ if (delay) {
+ if (delay % 1000000 != 0)
+ usleep(delay % 1000000);
+ if (delay >= 1000000)
+ sleep(delay / 1000000);
+ }
for (n = 0, w = &worm[0]; n < number; n++, w++) {
if ((x = w->xpos[h = w->head]) < 0) {
mvaddch(y = w->ypos[h] = bottom,
}
}
-void
-onsig(signo)
- int signo __attribute__((__unused__));
+static void
+onsig(int signo __unused)
{
sig_caught = 1;
}
-void
-nomem()
+static void
+nomem(void)
{
errx(1, "not enough memory.");
}