X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=test%2Fworm.c;h=7c4842e4004f3bc772080e9dd9f2607402691e60;hb=6315e1a380ecdb706d4f6518d2e8c7eb0db8fbe2;hp=2ce1c5ee3ca258ffe2347a5523ef9ce759d08325;hpb=1c305869cc1b9454efa9325fb5a44b18c79ce91b;p=ncurses.git diff --git a/test/worm.c b/test/worm.c index 2ce1c5ee..7c4842e4 100644 --- a/test/worm.c +++ b/test/worm.c @@ -53,7 +53,7 @@ traces will be dumped. The program stops and waits for one character of input at the beginning and end of the interval. - $Id: worm.c,v 1.85 2022/08/13 13:28:01 tom Exp $ + $Id: worm.c,v 1.89 2022/12/24 20:46:49 tom Exp $ */ #include @@ -368,7 +368,11 @@ start_worm(void *arg) unsigned long compare = 0; Trace(("start_worm")); while (!quit_worm((int) (((struct worm *) arg) - worm))) { - while (compare < sequence) { + for (;;) { + bool done = FALSE; + Locked(done = (compare >= sequence)); + if (done) + break; ++compare; USING_WINDOW2(stdscr, draw_worm, arg); } @@ -447,12 +451,13 @@ update_refs(WINDOW *win, void *data) #endif static void -usage(void) +usage(int ok) { static const char *msg[] = { "Usage: worm [options]" ,"" + ,USAGE_COMMON ,"Options:" #if HAVE_USE_DEFAULT_COLORS ," -d invoke use_default_colors" @@ -471,8 +476,11 @@ usage(void) for (n = 0; n < SIZEOF(msg); n++) fprintf(stderr, "%s\n", msg[n]); - ExitProgram(EXIT_FAILURE); + ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE); } +/* *INDENT-OFF* */ +VERSION_COMMON() +/* *INDENT-ON* */ int main(int argc, char *argv[]) @@ -489,7 +497,7 @@ main(int argc, char *argv[]) setlocale(LC_ALL, ""); - while ((ch = getopt(argc, argv, "dfl:n:tT:N")) != -1) { + while ((ch = getopt(argc, argv, OPTS_COMMON "dfl:n:tT:N")) != -1) { switch (ch) { #if HAVE_USE_DEFAULT_COLORS case 'd': @@ -502,13 +510,13 @@ main(int argc, char *argv[]) case 'l': if ((length = atoi(optarg)) < 2 || length > MAX_LENGTH) { fprintf(stderr, "%s: Invalid length\n", *argv); - usage(); + usage(FALSE); } break; case 'n': if ((number = atoi(optarg)) < 1 || number > MAX_WORMS) { fprintf(stderr, "%s: Invalid number of worms\n", *argv); - usage(); + usage(FALSE); } break; case 't': @@ -517,19 +525,22 @@ main(int argc, char *argv[]) #ifdef TRACE case 'T': if (sscanf(optarg, "%d,%d", &trace_start, &trace_end) != 2) - usage(); + usage(FALSE); break; case 'N': _nc_optimize_enable ^= OPTIMIZE_ALL; /* declared by ncurses */ break; #endif /* TRACE */ + case OPTS_VERSION: + show_version(argv); + ExitProgram(EXIT_SUCCESS); default: - usage(); + usage(ch == OPTS_USAGE); /* NOTREACHED */ } } if (optind < argc) - usage(); + usage(FALSE); signal(SIGINT, onsig); initscr();