From: Laurent Mazet Date: Tue, 15 Apr 2025 20:21:13 +0000 (+0200) Subject: full adaptation to c99 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=HEAD;p=snake.git full adaptation to c99 --- 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 cd6b2f6..1da398b 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); } @@ -142,14 +139,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)); } } @@ -165,10 +160,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); @@ -213,7 +208,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'; } @@ -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) { - int i; - for (i = 0; i < length; i++) { + for (int i = 0; i < length; 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) { - int i; - _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'); diff --git a/function.c b/function.c index ab56b33..7e5b6f4 100644 --- a/function.c +++ b/function.c @@ -100,10 +100,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"); @@ -123,9 +123,8 @@ int _ztoi (char x) int _sprinttab (char *buffer, char *name, int *tab, int nb) { - int i; 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"); @@ -182,13 +181,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); } @@ -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)) { - int i; 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; - 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]); } @@ -329,8 +331,7 @@ void freesnake (snake_t *snake) 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; @@ -341,7 +342,6 @@ int isown (snake_t *snake, int x, int y) int movesnake (board_t *board, snake_t *snake, int dir) { - int i; 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 */ - 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 */ - 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]; } @@ -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) { - int x, y; - int i; - 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; @@ -417,7 +415,8 @@ void drawbonus (board_t *board, snake_t *snake, int malus, int bonus) *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; diff --git a/makefile b/makefile index 426b0fd..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 += snake +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