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

diff --git a/ai.c b/ai.c
index 08fab73c7ecc678dfd1241f062c0f27d6db88fc3..9a1ccbf0445d715244261f5a8eec916b402af8ef 100644 (file)
--- a/ai.c
+++ b/ai.c
@@ -12,9 +12,8 @@ int play (board_t *board, int id)
     int y = -1;
     int s = 0;
 
     int y = -1;
     int s = 0;
 
-    int i, j;
-    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++) {
             board_t *newboard = copyboard (board);
             if (putdisk (newboard, i, j, id)) {
                 int ns = count (newboard, id);
             board_t *newboard = copyboard (board);
             if (putdisk (newboard, i, j, id)) {
                 int ns = count (newboard, id);
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 2b9f495608e2f0838c9a6db739bdba36f6b96b43..66a9f3e65ba0f315c8964b8ce036d7f90d3f33bb 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);
     }
@@ -139,14 +136,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));
         }
     }
@@ -167,10 +162,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);
@@ -215,7 +210,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';
             }
@@ -234,8 +229,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, ' ');
         }
     }
index ac4260932eb489b483956c834a58cc1122580276..17ec38bcdf361b37be06e174724dd9be1d6ac0d8 100644 (file)
@@ -82,10 +82,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");
@@ -136,13 +136,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);
     }
@@ -304,8 +308,7 @@ int putdisk (board_t *board, int x, int y, int id)
 {
     int ret = 0;
     if (*getcell (board, x, y) == ' ') {
 {
     int ret = 0;
     if (*getcell (board, x, y) == ' ') {
-        int dir;
-        for (dir = 0; dir < 8; dir++) {
+        for (int dir = 0; dir < 8; dir++) {
             if (_checkline (board, x, y, id, dir)) {
                 _switchdisks (board, x, y, id, dir);
                 ret = 1;
             if (_checkline (board, x, y, id, dir)) {
                 _switchdisks (board, x, y, id, dir);
                 ret = 1;
@@ -318,12 +321,10 @@ int putdisk (board_t *board, int x, int y, int id)
 int find (board_t *board, int id)
 {
     int ret = 0;
 int find (board_t *board, int id)
 {
     int ret = 0;
-    int x, y;
-    for (x = 0; x < board->width; x++) {
-        for (y = 0; y < board->height; y++) {
+    for (int x = 0; x < board->width; x++) {
+        for (int y = 0; y < board->height; y++) {
             if (*getcell (board, x, y) == ' ') {
             if (*getcell (board, x, y) == ' ') {
-                int dir;
-                for (dir = 0; dir < 8; dir++) {
+                for (int dir = 0; dir < 8; dir++) {
                     if (_checkline (board, x, y, id, dir)) {
                         *getcell (board, x, y) = '4';
                         ret = 1;
                     if (_checkline (board, x, y, id, dir)) {
                         *getcell (board, x, y) = '4';
                         ret = 1;
@@ -338,9 +339,8 @@ int find (board_t *board, int id)
 int count (board_t *board, int id)
 {
     int nb = 0;
 int count (board_t *board, int id)
 {
     int nb = 0;
-    int x, y;
-    for (x = 0; x < board->width; x++) {
-        for (y = 0; y < board->height; y++) {
+    for (int x = 0; x < board->width; x++) {
+        for (int y = 0; y < board->height; y++) {
             if (*getcell (board, x, y) == '0' + id) {
                 nb++;
             }
             if (*getcell (board, x, y) == '0' + id) {
                 nb++;
             }
index f4e65d8e6bc8622770b2b59daf32906b7ffbc495..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 += reversi
+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
 
index f0dc4f1175571223f7137a2a8b185891a85a9eb2..7a5c2ec3fc159aef42002713deeaacf9ff619591 100644 (file)
--- a/reversi.c
+++ b/reversi.c
@@ -277,8 +277,7 @@ int main (int argc, char *argv[])
             if (nbrecords < maxnbrecords) {
                 rec[nbrecords++] = ch;
             } else {
             if (nbrecords < maxnbrecords) {
                 rec[nbrecords++] = ch;
             } else {
-                int i;
-                for (i = 0; i < nbrecords - 1; i++) {
+                for (int i = 0; i < nbrecords - 1; i++) {
                     rec[i] = rec[i + 1];
                 }
                 //memmove (rec, rec + 1, nbrecords - 1);
                     rec[i] = rec[i + 1];
                 }
                 //memmove (rec, rec + 1, nbrecords - 1);
@@ -364,9 +363,8 @@ int main (int argc, char *argv[])
     endwin ();
     
     if (nbrecords) {
     endwin ();
     
     if (nbrecords) {
-        int i;
         printf ("records: ");
         printf ("records: ");
-        for (i = 0; i < nbrecords; i++) {
+        for (int i = 0; i < nbrecords; i++) {
             if ((rec[i] > 31) && (rec[i] < 128)) {
                 printf ("%c", rec[i]);
             } else {
             if ((rec[i] > 31) && (rec[i] < 128)) {
                 printf ("%c", rec[i]);
             } else {