From: Laurent Mazet Date: Tue, 15 Apr 2025 20:14:15 +0000 (+0200) Subject: full adaptation to c99 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;p=reversi.git full adaptation to c99 --- diff --git a/ai.c b/ai.c index 08fab73..9a1ccbf 100644 --- a/ai.c +++ b/ai.c @@ -12,9 +12,8 @@ int play (board_t *board, int id) 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); diff --git a/block.c b/block.c index 9c9fca8..5b8fd26 100644 --- a/block.c +++ b/block.c @@ -49,10 +49,10 @@ static int _color_trans (_color_t c) 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)); } } @@ -60,13 +60,13 @@ static void _init_color_pairs () { void mvaddcb (int y, int x, cblock_t color) { - int init = 1; + static int init = 1; if (init) { _init_color_pairs (); init = 0; } - int symb = ACS_CKBOARD; + int symb; switch (color) { case black: case gray: diff --git a/display.c b/display.c index 2b9f495..66a9f3e 100644 --- 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) { - 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); } @@ -40,13 +39,11 @@ void _displaytitle (char *title, 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); } - 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); } @@ -139,14 +136,12 @@ void _element (board_t *board, int x, int y, int symb) 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); - 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)); } } @@ -167,10 +162,10 @@ char *savewindow (int length, int xoffset, int yoffset) _dobound (length, 1, xoffset, yoffset); setcolor (gray_black); - int i = 0, j; + int i = 0; 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); @@ -215,7 +210,7 @@ char *savewindow (int length, int xoffset, int yoffset) } if (name) { - for (j = length - 1; j >= 0; j--) { + for (int j = length - 1; j >= 0; j--) { 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) { - int i; - for (i = 0; i < length; i++) { + for (int i = 0; i < length; i++) { mvaddch (yoffset, xoffset + i, ' '); } } diff --git a/function.c b/function.c index ac42609..17ec38b 100644 --- a/function.c +++ b/function.c @@ -82,10 +82,10 @@ void freeboard (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: \""); - 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"); @@ -136,13 +136,17 @@ char *readdata (char *filename) 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); } @@ -304,8 +308,7 @@ int putdisk (board_t *board, int x, int y, int id) { 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; @@ -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 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) == ' ') { - 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; @@ -338,9 +339,8 @@ int find (board_t *board, int id) 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++; } diff --git a/makefile b/makefile index f4e65d8..09ecb8b 100644 --- a/makefile +++ b/makefile @@ -5,6 +5,7 @@ CC = gcc #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 @@ -21,9 +22,11 @@ ifneq (, $(findstring linux, $(MAKE_HOST))) # Linux else ifneq (, $(findstring mingw, $(MAKE_HOST))) # Windows MinGw +CFLAGS += -DWIN32 #LDLIBS += -lws2_32 LDOPT = winlnk else ifneq (, $(findstring cygwin, $(MAKE_HOST))) +CFLAGS += -DWIN32 # Windows CygWin LDOPT = winlnk else ifneq (, $(findstring msdos, $(MAKE_HOST))) @@ -34,8 +37,7 @@ endif # Targets -ALLEXE = -ALLEXE += reversi +ALLEXE = $(shell for f in *.c; do grep -q '/\*\slinker:' $$f && echo $${f/.c}; done) SHELL = bash @@ -64,6 +66,11 @@ GETCOMMENTS = awk '/\/\*\s*$(1):/,/\*\// { sub(/.*\/\*\s*$(1):/, ""); sub (/\s*\ all: depends $(MAKE) $(ALLEXE:%=%.exe) +analyze: + make purge + scan-build make + #scan-build -stats make + count: wc $(wildcard *.c *.h) $(MAKEFILE_LIST) @@ -116,7 +123,7 @@ gcov_%: touch gcov rm -f gcov $(wildcard *.gcda *.gcno) $(MAKE) purge - grep '#####' *.c.gcov || true + grep '^ *#####' *.c.gcov || true 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; }; \ + test "$$RC" = 1 -a "$(STOP)" = 1 && break; \ done; \ test "$$RC" -ne 1 @@ -183,7 +191,7 @@ valgrind_%: %.exe ## Phony -.PHONY: all clean count depends gcovs purge tests +.PHONY: all analyze clean count depends gcovs purge tests ## Precious diff --git a/reversi.c b/reversi.c index f0dc4f1..7a5c2ec 100644 --- a/reversi.c +++ b/reversi.c @@ -277,8 +277,7 @@ int main (int argc, char *argv[]) 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); @@ -364,9 +363,8 @@ int main (int argc, char *argv[]) endwin (); if (nbrecords) { - int i; 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 {