full adaptation to c99 master
authorLaurent Mazet <mazet@softndesign.org>
Tue, 15 Apr 2025 20:21:13 +0000 (22:21 +0200)
committerLaurent Mazet <mazet@softndesign.org>
Tue, 15 Apr 2025 20:21:13 +0000 (22:21 +0200)
block.c
display.c
function.c
makefile

diff --git a/block.c b/block.c
index 9c9fca88d017363969da8b9c679d4bd2481ca936..5b8fd260163a6353ba0fd0584cd88660069a9207 100644 (file)
--- a/block.c
+++ b/block.c
@@ -49,10 +49,10 @@ static int _color_trans (_color_t c)
     return color;
 }
 
     return color;
 }
 
-static void _init_color_pairs () {
-    int fg, bg;
-    for (bg = 0; bg < 8; bg++) {
-        for (fg = 0; fg < 8; fg ++) {
+static void _init_color_pairs ()
+{
+    for (int bg = 0; bg < 8; bg++) {
+        for (int fg = 0; fg < 8; fg ++) {
             init_pair (_color_num (fg, bg), _color_trans (fg), _color_trans (bg));
         }
     }
             init_pair (_color_num (fg, bg), _color_trans (fg), _color_trans (bg));
         }
     }
@@ -60,13 +60,13 @@ static void _init_color_pairs () {
 
 void mvaddcb (int y, int x, cblock_t color)
 {
 
 void mvaddcb (int y, int x, cblock_t color)
 {
-    int init = 1;
+    static int init = 1;
     if (init) {
         _init_color_pairs ();
         init = 0;
     }
 
     if (init) {
         _init_color_pairs ();
         init = 0;
     }
 
-    int symb = ACS_CKBOARD;
+    int symb;
     switch (color) {
     case black:
     case gray:
     switch (color) {
     case black:
     case gray:
index cd6b2f6c3c04c430cc0cce4c05653c444808ad6c..1da398bf207f9eea8b68c81f2e9ad7a2339ab9de 100644 (file)
--- a/display.c
+++ b/display.c
@@ -31,8 +31,7 @@ int _helpwindow (char *msg, int xoffset, int yoffset, int length)
 
 void _displaytitle (char *title, int xoffset, int yoffset)
 {
 
 void _displaytitle (char *title, int xoffset, int yoffset)
 {
-    int i;
-    for (i = 0; title[i] != '\0'; i++) {
+    for (int i = 0; title[i] != '\0'; i++) {
         mvaddch (yoffset, xoffset + i, title[i]);
         mvaddch (yoffset + 1, xoffset + i, ACS_HLINE);
     }
         mvaddch (yoffset, xoffset + i, title[i]);
         mvaddch (yoffset + 1, xoffset + i, ACS_HLINE);
     }
@@ -40,13 +39,11 @@ void _displaytitle (char *title, int xoffset, int yoffset)
 
 void _dobound (int xsize, int ysize, int xoffset, int yoffset)
 {
 
 void _dobound (int xsize, int ysize, int xoffset, int yoffset)
 {
-    int i, j;
-
-    for (i = 0; i < xsize; i++) {
+    for (int i = 0; i < xsize; i++) {
         mvaddch (yoffset - 1, xoffset + i, ACS_HLINE);
         mvaddch (yoffset + ysize, xoffset + i, ACS_HLINE);
     }
         mvaddch (yoffset - 1, xoffset + i, ACS_HLINE);
         mvaddch (yoffset + ysize, xoffset + i, ACS_HLINE);
     }
-    for (j = 0; j < ysize; j++) {
+    for (int j = 0; j < ysize; j++) {
         mvaddch (yoffset + j, xoffset - 1, ACS_VLINE);
         mvaddch (yoffset + j, xoffset + xsize, ACS_VLINE);
     }
         mvaddch (yoffset + j, xoffset - 1, ACS_VLINE);
         mvaddch (yoffset + j, xoffset + xsize, ACS_VLINE);
     }
@@ -142,14 +139,12 @@ void _element (board_t *board, int x, int y, int symb)
 
 void boardwindow (board_t *board, int mode)
 {
 
 void boardwindow (board_t *board, int mode)
 {
-    int i, j;
-
     setcolor (mode ? gray_black : black_gray);
     _dobound (board->xsize, board->ysize, board->xoffset, board->yoffset);
     setcolor (gray_black);
 
     setcolor (mode ? gray_black : black_gray);
     _dobound (board->xsize, board->ysize, board->xoffset, board->yoffset);
     setcolor (gray_black);
 
-    for (i = 0; i < board->width; i++) {
-        for (j = 0; j < board->height; j++) {
+    for (int i = 0; i < board->width; i++) {
+        for (int j = 0; j < board->height; j++) {
             _element (board, i, j, *getcell (board, i, j));
         }
     }
             _element (board, i, j, *getcell (board, i, j));
         }
     }
@@ -165,10 +160,10 @@ char *savewindow (int length, int xoffset, int yoffset)
     _dobound (length, 1, xoffset, yoffset);
     setcolor (gray_black);
 
     _dobound (length, 1, xoffset, yoffset);
     setcolor (gray_black);
 
-    int i = 0, j;
+    int i = 0;
     int stop = 0;
     while (!stop) {
     int stop = 0;
     while (!stop) {
-        for (j = 0; j < length; j++) {
+        for (int j = 0; j < length; j++) {
             setcolor ((j == i) ? yellow_black : black_gray);
             mvaddch (yoffset, xoffset + j, name[j]);
             setcolor (gray_black);
             setcolor ((j == i) ? yellow_black : black_gray);
             mvaddch (yoffset, xoffset + j, name[j]);
             setcolor (gray_black);
@@ -213,7 +208,7 @@ char *savewindow (int length, int xoffset, int yoffset)
     }
 
     if (name) {
     }
 
     if (name) {
-        for (j = length - 1; j >= 0; j--) {
+        for (int j = length - 1; j >= 0; j--) {
             if (name[j] == ' ') {
                 name[j] = '\0';
             }
             if (name[j] == ' ') {
                 name[j] = '\0';
             }
@@ -232,8 +227,7 @@ void msgwindow (char *msg, int xoffset, int yoffset, int length)
     setcolor (gray_black);
     _dobound ((length > 0) ? length : (int)strlen (msg), 1, xoffset, yoffset);
     if (length > 0) {
     setcolor (gray_black);
     _dobound ((length > 0) ? length : (int)strlen (msg), 1, xoffset, yoffset);
     if (length > 0) {
-        int i;
-        for (i = 0; i < length; i++) {
+        for (int i = 0; i < length; i++) {
             mvaddch (yoffset, xoffset + i, ' ');
         }
     }
             mvaddch (yoffset, xoffset + i, ' ');
         }
     }
@@ -250,10 +244,8 @@ void msg2window (char *msg, int xoffset, int yoffset)
 
 void displaysnake (board_t *board, snake_t *snake)
 {
 
 void displaysnake (board_t *board, snake_t *snake)
 {
-    int i;
-
     _element (board, snake->x[0], snake->y[0], '2');
     _element (board, snake->x[0], snake->y[0], '2');
-    for (i = 1; i < snake->length - 1; i++) {
+    for (int i = 1; i < snake->length - 1; i++) {
         _element (board, snake->x[i], snake->y[i], '3');
     }
     _element (board, snake->x[snake->length - 1], snake->y[snake->length - 1], '4');
         _element (board, snake->x[i], snake->y[i], '3');
     }
     _element (board, snake->x[snake->length - 1], snake->y[snake->length - 1], '4');
index ab56b331bf9d4c6642bb764d86fa95e415f34690..7e5b6f49542297be7043ded0423fe57292f1b3df 100644 (file)
@@ -100,10 +100,10 @@ void freeboard (board_t *board)
 
 int _makecomments (char *buffer, board_t *board)
 {
 
 int _makecomments (char *buffer, board_t *board)
 {
-    int i, j, l = 0;
-    for (j = 0; j < board->height; j++) {
+    int l = 0;
+    for (int j = 0; j < board->height; j++) {
         l += sprintf (buffer + l, "rem: \"");
         l += sprintf (buffer + l, "rem: \"");
-        for (i = 0; i < board->width; i++) {
+        for (int i = 0; i < board->width; i++) {
             l += sprintf (buffer + l, "%c", *getcell (board, i, j));
         }
         l += sprintf (buffer + l, "\"\n");
             l += sprintf (buffer + l, "%c", *getcell (board, i, j));
         }
         l += sprintf (buffer + l, "\"\n");
@@ -123,9 +123,8 @@ int _ztoi (char x)
 
 int _sprinttab (char *buffer, char *name, int *tab, int nb)
 {
 
 int _sprinttab (char *buffer, char *name, int *tab, int nb)
 {
-    int i;
     int l = sprintf (buffer, "%s: \"", name);
     int l = sprintf (buffer, "%s: \"", name);
-    for (i = 0; i < nb; i++) {
+    for (int i = 0; i < nb; i++) {
         l += sprintf (buffer + l, "%c", _itoz (tab[i]));
     }
     l += sprintf (buffer + l, "\"\n");
         l += sprintf (buffer + l, "%c", _itoz (tab[i]));
     }
     l += sprintf (buffer + l, "\"\n");
@@ -182,13 +181,17 @@ char *readdata (char *filename)
     if (fd) {
         fseek (fd, 0, SEEK_END);
         int size = ftell (fd);
     if (fd) {
         fseek (fd, 0, SEEK_END);
         int size = ftell (fd);
-        buffer = (char *) calloc (size + 1, 1);
-        CHECKALLOC (buffer);
+        if (size == -1) {
+            VERBOSE (WARNING, printf ("can't read file (%s)\n", filename));
+        } else {
+            buffer = (char *) calloc (size + 1, 1);
+            CHECKALLOC (buffer);
 
 
-        fseek (fd, 0, SEEK_SET);
-        int nb = fread (buffer, 1, size, fd);
-        if (nb != size) {
-            VERBOSE (WARNING, printf ("can't fully read file (%s)\n", filename));
+            fseek (fd, 0, SEEK_SET);
+            int nb = fread (buffer, 1, size, fd);
+            if (nb != size) {
+                VERBOSE (WARNING, printf ("can't fully read file (%s)\n", filename));
+            }
         }
         fclose (fd);
     }
         }
         fclose (fd);
     }
@@ -276,7 +279,6 @@ data_t *loaddata (char *str)
     if ((tab) && (strlen (tab) == (size_t)maxlen) && (length <= maxlen) &&
         (xsnake) && (strlen (xsnake) == (size_t)length) &&
         (ysnake) && (strlen (ysnake) == (size_t)length)) {
     if ((tab) && (strlen (tab) == (size_t)maxlen) && (length <= maxlen) &&
         (xsnake) && (strlen (xsnake) == (size_t)length) &&
         (ysnake) && (strlen (ysnake) == (size_t)length)) {
-        int i;
         data = initdata (width, height);
         data->duration = duration;
         data->score = score;
         data = initdata (width, height);
         data->duration = duration;
         data->score = score;
@@ -284,7 +286,7 @@ data_t *loaddata (char *str)
         data->wide = wide;
         data->snake->dir = direction;
         data->snake->length = length;
         data->wide = wide;
         data->snake->dir = direction;
         data->snake->length = length;
-        for (i = 0; i < length; i++) {
+        for (int i = 0; i < length; i++) {
             data->snake->x[i] = _ztoi (xsnake[i]);
             data->snake->y[i] = _ztoi (ysnake[i]);
         }
             data->snake->x[i] = _ztoi (xsnake[i]);
             data->snake->y[i] = _ztoi (ysnake[i]);
         }
@@ -329,8 +331,7 @@ void freesnake (snake_t *snake)
 int isown (snake_t *snake, int x, int y)
 {
     int ret = 0;
 int isown (snake_t *snake, int x, int y)
 {
     int ret = 0;
-    int i;
-    for (i = 0; i < snake->length; i++) {
+    for (int i = 0; i < snake->length; i++) {
         if ((snake->x[i] == x) && (snake->y[i] == y)) {
             ret = 1;
             break;
         if ((snake->x[i] == x) && (snake->y[i] == y)) {
             ret = 1;
             break;
@@ -341,7 +342,6 @@ int isown (snake_t *snake, int x, int y)
 
 int movesnake (board_t *board, snake_t *snake, int dir)
 {
 
 int movesnake (board_t *board, snake_t *snake, int dir)
 {
-    int i;
     int ret = -1;
 
     int x = snake->x[0];
     int ret = -1;
 
     int x = snake->x[0];
@@ -377,13 +377,13 @@ int movesnake (board_t *board, snake_t *snake, int dir)
             }
             /* fall through */
         case ' ': /* only forward */
             }
             /* fall through */
         case ' ': /* only forward */
-            for (i = snake->length - 1; i > 0; i--) {
+            for (int i = snake->length - 1; i > 0; i--) {
                 snake->x[i] = snake->x[i - 1];
                 snake->y[i] = snake->y[i - 1];
             }
             break;
         case '5': /* increase size */
                 snake->x[i] = snake->x[i - 1];
                 snake->y[i] = snake->y[i - 1];
             }
             break;
         case '5': /* increase size */
-            for (i = snake->length - 1; i >= 0; i--) {
+            for (int i = snake->length - 1; i >= 0; i--) {
                 snake->x[i + 1] = snake->x[i];
                 snake->y[i + 1] = snake->y[i];
             }
                 snake->x[i + 1] = snake->x[i];
                 snake->y[i + 1] = snake->y[i];
             }
@@ -404,12 +404,10 @@ int movesnake (board_t *board, snake_t *snake, int dir)
 
 void drawbonus (board_t *board, snake_t *snake, int malus, int bonus)
 {
 
 void drawbonus (board_t *board, snake_t *snake, int malus, int bonus)
 {
-    int x, y;
-    int i;
-
     memset (board->tab, ' ', board->width * board->height);
 
     memset (board->tab, ' ', board->width * board->height);
 
-    for (i = 0; i < malus; i++) {
+    for (int i = 0; i < malus; i++) {
+        int x, y;
         do {
             x = rand () % board->width;
             y = rand () % board->height;
         do {
             x = rand () % board->width;
             y = rand () % board->height;
@@ -417,7 +415,8 @@ void drawbonus (board_t *board, snake_t *snake, int malus, int bonus)
         *getcell (board, x, y) = '5';
     }
 
         *getcell (board, x, y) = '5';
     }
 
-    for (i = 0; i < bonus; i++) {
+    for (int i = 0; i < bonus; i++) {
+        int x, y;
         do {
             x = rand () % board->width;
             y = rand () % board->height;
         do {
             x = rand () % board->width;
             y = rand () % board->height;
index 426b0fd4eba7c34ae2416c80c66aa4bce0896362..09ecb8bc309abe5c9bba31812b7dfecc3743bcb9 100644 (file)
--- a/makefile
+++ b/makefile
@@ -5,6 +5,7 @@ CC = gcc
 #INCLUDES = -I../debug -D__MEMORY_ALLOCATION__
 INCLUDES =
 OFLAGS  = -O4 -Os
 #INCLUDES = -I../debug -D__MEMORY_ALLOCATION__
 INCLUDES =
 OFLAGS  = -O4 -Os
+#OFLAGS  = -O0
 #OFLAGS  = -O4 -ffast-math -finline-functions
 #OFLAGS  = -O4 -finline-functions
 #OFLAGS += -mtune=pentium3 -mmmx -msse -msse2 -m3dnow
 #OFLAGS  = -O4 -ffast-math -finline-functions
 #OFLAGS  = -O4 -finline-functions
 #OFLAGS += -mtune=pentium3 -mmmx -msse -msse2 -m3dnow
@@ -21,9 +22,11 @@ ifneq (, $(findstring linux, $(MAKE_HOST)))
 # Linux
 else ifneq (, $(findstring mingw, $(MAKE_HOST)))
 # Windows MinGw
 # Linux
 else ifneq (, $(findstring mingw, $(MAKE_HOST)))
 # Windows MinGw
+CFLAGS += -DWIN32
 #LDLIBS += -lws2_32
 LDOPT = winlnk
 else ifneq (, $(findstring cygwin, $(MAKE_HOST)))
 #LDLIBS += -lws2_32
 LDOPT = winlnk
 else ifneq (, $(findstring cygwin, $(MAKE_HOST)))
+CFLAGS += -DWIN32
 # Windows CygWin
 LDOPT = winlnk
 else ifneq (, $(findstring msdos, $(MAKE_HOST)))
 # Windows CygWin
 LDOPT = winlnk
 else ifneq (, $(findstring msdos, $(MAKE_HOST)))
@@ -34,8 +37,7 @@ endif
 
 # Targets
 
 
 # Targets
 
-ALLEXE  =
-ALLEXE += snake
+ALLEXE  = $(shell for f in *.c; do grep -q '/\*\slinker:' $$f && echo $${f/.c}; done)
 
 SHELL = bash
 
 
 SHELL = bash
 
@@ -64,6 +66,11 @@ GETCOMMENTS = awk '/\/\*\s*$(1):/,/\*\// { sub(/.*\/\*\s*$(1):/, ""); sub (/\s*\
 all: depends
        $(MAKE) $(ALLEXE:%=%.exe)
 
 all: depends
        $(MAKE) $(ALLEXE:%=%.exe)
 
+analyze:
+       make purge
+       scan-build make
+       #scan-build -stats make
+
 count:
        wc $(wildcard *.c *.h) $(MAKEFILE_LIST)
 
 count:
        wc $(wildcard *.c *.h) $(MAKEFILE_LIST)
 
@@ -116,7 +123,7 @@ gcov_%:
        touch gcov
        rm -f gcov $(wildcard *.gcda *.gcno)
        $(MAKE) purge
        touch gcov
        rm -f gcov $(wildcard *.gcda *.gcno)
        $(MAKE) purge
-       grep '#####' *.c.gcov || true
+       grep '^ *#####' *.c.gcov || true
 
 gprof_%:
        $(MAKE) purge
 
 gprof_%:
        $(MAKE) purge
@@ -150,6 +157,7 @@ test_%: %.test %.exe
          eval $$test; \
          [ $$? -eq 0 ] && echo -e "\033[1;32mSUCCESS\033[0;0m" \
                        || { echo -e "\033[1;31mFAILED\033[0;0m"; RC=1; }; \
          eval $$test; \
          [ $$? -eq 0 ] && echo -e "\033[1;32mSUCCESS\033[0;0m" \
                        || { echo -e "\033[1;31mFAILED\033[0;0m"; RC=1; }; \
+         test "$$RC" = 1 -a "$(STOP)" = 1 && break; \
        done; \
        test "$$RC" -ne 1
 
        done; \
        test "$$RC" -ne 1
 
@@ -183,7 +191,7 @@ valgrind_%: %.exe
 
 ## Phony
 
 
 ## Phony
 
-.PHONY: all clean count depends gcovs purge tests
+.PHONY: all analyze clean count depends gcovs purge tests
 
 ## Precious
 
 
 ## Precious