From bf864a0fc0e214ee745c3af0569570f755152f1c Mon Sep 17 00:00:00 2001 From: Laurent Mazet Date: Tue, 15 Apr 2025 22:01:59 +0200 Subject: [PATCH] full adaptation to c99 --- display.c | 24 +++++++++--------------- function.c | 23 +++++++++++++---------- makefile | 16 ++++++++++++---- pacman.c | 17 ++++++----------- 4 files changed, 40 insertions(+), 40 deletions(-) diff --git a/display.c b/display.c index bc04ba4..0cc6981 100644 --- a/display.c +++ b/display.c @@ -33,8 +33,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); } @@ -42,13 +41,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); } @@ -182,16 +179,14 @@ void displayelement (board_t *board, int x, int y) void boardwindow (board_t *board, int mode) { - int x, y; - //setcolor (mode ? gray_black : black_gray); if (mode) { _dobound (board->width, board->height, board->xoffset, board->yoffset); } //setcolor (gray_black); - 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++) { displayelement (board, x, y); } } @@ -207,10 +202,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); @@ -255,7 +250,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'; } @@ -279,8 +274,7 @@ void msgwindow (char *msg, int xoffset, int yoffset, int length, int mode) setcolor (gray_black); } 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 6ddcac2..c8ee264 100644 --- a/function.c +++ b/function.c @@ -68,10 +68,10 @@ board_t *copyboard (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"); @@ -129,13 +129,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) { + 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); } @@ -186,8 +190,7 @@ board_t *loadboard (char *str) height = atoi (value); last = NULL; } else if (strcmp (keyword, "tab") == 0) { - tab = strdup (atos (value)); - last = tab; + last = tab = strdup (atos (value)); } else if (strcmp (keyword, "rem") == 0) { /* nothing to do with remark */ last = NULL; diff --git a/makefile b/makefile index 01777bf..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 += pacman +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/pacman.c b/pacman.c index 536445f..84be160 100644 --- a/pacman.c +++ b/pacman.c @@ -74,8 +74,6 @@ void getnewposition (board_t *board, int dir, int x, int y, int *px, int *py) /* main function */ int main (int argc, char *argv[]) { - int i; - /* get basename */ char *pt = progname = argv[0]; while (*pt) { @@ -199,7 +197,7 @@ int main (int argc, char *argv[]) /* ghost positions */ int gx[MAXNBGHOSTS] = {0}; int gy[MAXNBGHOSTS] = {0}; - for (i = 0; i < MAXNBGHOSTS; i++) { + for (int i = 0; i < MAXNBGHOSTS; i++) { if ((findchar (board, 'P' + i, gx + i, gy + i)) && (findchar (board, 'p' + i, gx + i, gy + i)) && (findchar (board, '$' + i, gx + i, gy + i))) { @@ -298,7 +296,7 @@ int main (int argc, char *argv[]) spin = 0; /* move ghosts */ - for (i = 0; i < MAXNBGHOSTS; i++) { + for (int i = 0; i < MAXNBGHOSTS; i++) { char *cell = getcell (board, gx[i], gy[i]); if (*cell == 'x' + i) { } else if ((*cell == 'P' + i) || (*cell == 'p' + i)) { @@ -325,8 +323,7 @@ int main (int argc, char *argv[]) spin = 1; /* commute ghost */ - int i; - for (i = 0; i < 4; i++) { + for (int i = 0; i < 4; i++) { int x, y; if (commuteghost (board, i, &x, &y)) { displayelement (board, x, y); @@ -336,7 +333,7 @@ int main (int argc, char *argv[]) /* test end of game */ if (endofgame (board)) { - mode = 2; + //mode = 2; sprintf (msg, "End of game"); msgwindow (msg, xboard + (board->width - strlen (msg)) / 2, yboard + (board->height - 1) / 2, strlen (msg), 1); waitforkey ('q'); @@ -350,8 +347,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); @@ -417,9 +413,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 { -- 2.30.2