X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Fworm.c;h=3840a3630378dd45783f427fe7a930e6eaeec09f;hp=43a898f84d13602c57b337518811216a5b4825c0;hb=55ccd2b959766810cf7db8d1c4462f338ce0afc8;hpb=b1f61d9f3aa244512045a6b02e759825d7049d34;ds=sidebyside diff --git a/test/worm.c b/test/worm.c index 43a898f8..3840a363 100644 --- a/test/worm.c +++ b/test/worm.c @@ -34,18 +34,15 @@ Options: 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.30 2000/04/15 17:51:56 tom Exp $ + $Id: worm.c,v 1.39 2005/08/20 20:26:29 tom Exp $ */ #include -#include - static chtype flavor[] = { 'O', '*', '#', '$', '%', '0', '@', }; -#define MAXWORMS (sizeof(flavor)/sizeof(chtype)) static const short xinc[] = { 1, 1, 1, 0, -1, -1, -1, 0 @@ -63,7 +60,7 @@ static int length = 16, number = 3; static chtype trail = ' '; #ifdef TRACE -int generation, trace_start, trace_end, singlestep; +static int generation, trace_start, trace_end, singlestep; #endif /* TRACE */ /* *INDENT-OFF* */ static const struct options { @@ -166,7 +163,7 @@ static RETSIGTYPE onsig(int sig GCC_UNUSED) { cleanup(); - exit(EXIT_FAILURE); + ExitProgram(EXIT_FAILURE); } static float @@ -188,6 +185,8 @@ main(int argc, char *argv[]) short *ip; int last, bottom; + setlocale(LC_ALL, ""); + for (x = 1; x < argc; x++) { char *p; p = argv[x]; @@ -202,7 +201,7 @@ main(int argc, char *argv[]) goto usage; if ((length = atoi(argv[x])) < 2 || length > 1024) { fprintf(stderr, "%s: Invalid length\n", *argv); - return EXIT_FAILURE; + ExitProgram(EXIT_FAILURE); } break; case 'n': @@ -210,7 +209,7 @@ main(int argc, char *argv[]) goto usage; if ((number = atoi(argv[x])) < 1 || number > 40) { fprintf(stderr, "%s: Invalid number of worms\n", *argv); - return EXIT_FAILURE; + ExitProgram(EXIT_FAILURE); } break; case 't': @@ -231,8 +230,8 @@ main(int argc, char *argv[]) default: usage: fprintf(stderr, - "usage: %s [-field] [-length #] [-number #] [-trail]\n", *argv); - return EXIT_FAILURE; + "usage: %s [-field] [-length #] [-number #] [-trail]\n", *argv); + ExitProgram(EXIT_FAILURE); } } @@ -251,7 +250,7 @@ main(int argc, char *argv[]) if (has_colors()) { int bg = COLOR_BLACK; start_color(); -#ifdef HAVE_USE_DEFAULT_COLORS +#if HAVE_USE_DEFAULT_COLORS if (use_default_colors() == OK) bg = -1; #endif @@ -287,14 +286,14 @@ main(int argc, char *argv[]) w->orientation = w->head = 0; if (!(ip = typeMalloc(short, (length + 1)))) { fprintf(stderr, "%s: out of memory\n", *argv); - return EXIT_FAILURE; + ExitProgram(EXIT_FAILURE); } w->xpos = ip; for (x = length; --x >= 0;) *ip++ = -1; if (!(ip = typeMalloc(short, (length + 1)))) { fprintf(stderr, "%s: out of memory\n", *argv); - return EXIT_FAILURE; + ExitProgram(EXIT_FAILURE); } w->ypos = ip; for (y = length; --y >= 0;) @@ -362,11 +361,11 @@ main(int argc, char *argv[]) #endif /* * Make it simple to put this into single-step mode, or resume - * normal operation -TD + * normal operation -T.Dickey */ if (ch == 'q') { cleanup(); - return (EXIT_SUCCESS); + ExitProgram(EXIT_SUCCESS); } else if (ch == 's') { nodelay(stdscr, FALSE); } else if (ch == ' ') { @@ -378,7 +377,7 @@ main(int argc, char *argv[]) for (n = 0, w = &worm[0]; n < number; n++, w++) { if ((x = w->xpos[h = w->head]) < 0) { move(y = w->ypos[h] = bottom, x = w->xpos[h] = 0); - addch(flavor[n % MAXWORMS]); + addch(flavor[n % SIZEOF(flavor)]); ref[y][x]++; } else { y = w->ypos[h]; @@ -401,14 +400,14 @@ main(int argc, char *argv[]) } } op = &(x == 0 ? (y == 0 ? upleft : (y == bottom ? lowleft : - left)) : - (x == last ? (y == 0 ? upright : (y == bottom ? lowright : - right)) : + left)) : + (x == last ? (y == 0 ? upright : (y == bottom ? lowright : + right)) : (y == 0 ? upper : (y == bottom ? lower : normal))))[w->orientation]; switch (op->nopts) { case 0: cleanup(); - return EXIT_SUCCESS; + ExitProgram(EXIT_SUCCESS); case 1: w->orientation = op->opts[0]; break; @@ -419,7 +418,7 @@ main(int argc, char *argv[]) if (y < 0) y = 0; - addch(flavor[n % MAXWORMS]); + addch(flavor[n % SIZEOF(flavor)]); ref[w->ypos[h] = y][w->xpos[h] = x]++; } napms(10);