X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Fworm.c;h=651ccc15fba59d074e78038752417b8850b39d9c;hp=142982aef22158049768d429ca65de614e3636b3;hb=a8987e73ec254703634802b4f7ee30d3a485524d;hpb=c633e5103a29a38532cf1925257b91cea33fd090 diff --git a/test/worm.c b/test/worm.c index 142982ae..651ccc15 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.31 2000/09/02 18:41:01 tom Exp $ + $Id: worm.c,v 1.37 2002/06/29 23:32:18 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 @@ -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); } } @@ -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;) @@ -366,7 +365,7 @@ main(int argc, char *argv[]) */ 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);