ncurses 5.5
[ncurses.git] / test / worm.c
index 43a898f84d13602c57b337518811216a5b4825c0..3840a3630378dd45783f427fe7a930e6eaeec09f 100644 (file)
@@ -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.
 
   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 <test.priv.h>
 
 */
 
 #include <test.priv.h>
 
-#include <signal.h>
-
 static chtype flavor[] =
 {
     'O', '*', '#', '$', '%', '0', '@',
 };
 static chtype flavor[] =
 {
     'O', '*', '#', '$', '%', '0', '@',
 };
-#define MAXWORMS       (sizeof(flavor)/sizeof(chtype))
 static const short xinc[] =
 {
     1, 1, 1, 0, -1, -1, -1, 0
 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
 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 {
 #endif /* TRACE */
 /* *INDENT-OFF* */
 static const struct options {
@@ -166,7 +163,7 @@ static RETSIGTYPE
 onsig(int sig GCC_UNUSED)
 {
     cleanup();
 onsig(int sig GCC_UNUSED)
 {
     cleanup();
-    exit(EXIT_FAILURE);
+    ExitProgram(EXIT_FAILURE);
 }
 
 static float
 }
 
 static float
@@ -188,6 +185,8 @@ main(int argc, char *argv[])
     short *ip;
     int last, bottom;
 
     short *ip;
     int last, bottom;
 
+    setlocale(LC_ALL, "");
+
     for (x = 1; x < argc; x++) {
        char *p;
        p = argv[x];
     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);
                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':
            }
            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);
                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':
            }
            break;
        case 't':
@@ -231,8 +230,8 @@ main(int argc, char *argv[])
        default:
          usage:
            fprintf(stderr,
        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();
     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
        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);
        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);
        }
        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;)
        }
        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
 #endif
            /*
             * Make it simple to put this into single-step mode, or resume
-            * normal operation -TD
+            * normal operation -T.Dickey
             */
            if (ch == 'q') {
                cleanup();
             */
            if (ch == 'q') {
                cleanup();
-               return (EXIT_SUCCESS);
+               ExitProgram(EXIT_SUCCESS);
            } else if (ch == 's') {
                nodelay(stdscr, FALSE);
            } else if (ch == ' ') {
            } 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);
        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];
                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 :
                }
            }
            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();
                    (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;
            case 1:
                w->orientation = op->opts[0];
                break;
@@ -419,7 +418,7 @@ main(int argc, char *argv[])
 
            if (y < 0)
                y = 0;
 
            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);
            ref[w->ypos[h] = y][w->xpos[h] = x]++;
        }
        napms(10);