From 8622dc1253da9d6a123a51e14da95f7691c6c023 Mon Sep 17 00:00:00 2001 From: Laurent Mazet Date: Sat, 12 Apr 2025 21:25:11 +0200 Subject: [PATCH] full adaptation to c99 --- argument.c | 3 +-- element.c | 6 ++---- format.c | 3 +-- makefile | 6 +++++- parser.c | 23 ++++++++++------------- program.c | 13 +++++-------- readline.c | 16 +++++++--------- stack.c | 31 +++++++++++++++---------------- storage.c | 8 ++++---- tabular.c | 5 ++--- 10 files changed, 52 insertions(+), 62 deletions(-) diff --git a/argument.c b/argument.c index c5b1504..c895496 100644 --- a/argument.c +++ b/argument.c @@ -22,9 +22,8 @@ double arg (int n) tab_t *def (int nbops, element_t **ops) { - int i; tab_t *new = alloc_tab (nbops); - for (i = 0; i < nbops; i++) { + for (int i = 0; i < nbops; i++) { double val = evaluate_element (ops[i], 0); VERBOSE (DEBUG, fprintf (stdout, "value %d/%d = %g\n", i + 1, nbops, val)); set_tab (new, i + 1, val); diff --git a/element.c b/element.c index e285504..90d6fdf 100644 --- a/element.c +++ b/element.c @@ -114,8 +114,7 @@ element_t *newelement (func_t function, int nbops, int prio) void delelement (element_t *root) { if ((root != NULL) && (root != ERROR_OP)) { - int i; - for (i = 0; i < root->nbops; i++) { + for (int i = 0; i < root->nbops; i++) { delelement (root->ops[i]); } if (root->nbops) { @@ -130,14 +129,13 @@ void delelement (element_t *root) element_t *dupelement (element_t *root) { element_t *tmp = NULL; - int i; if ((root == NULL) || (root == ERROR_OP)) { return root; } tmp = newelement (root->func, root->nbops, root->prio); tmp->value = root->value; - for (i = 0; i < root->nbops; i++) { + for (int i = 0; i < root->nbops; i++) { tmp->ops[i] = dupelement (root->ops[i]); } return tmp; diff --git a/format.c b/format.c index 60cb1d4..5232137 100644 --- a/format.c +++ b/format.c @@ -104,8 +104,7 @@ char *mbitoa (unsigned long value) } while (value != 0); /* revert */ - int i; - for (i = 0; i < size; i++) { + for (int i = 0; i < size; i++) { str[i] = buffer [size - i - 1]; } str[size] = '\0'; diff --git a/makefile b/makefile index 3357159..0f59deb 100644 --- a/makefile +++ b/makefile @@ -47,6 +47,10 @@ VALID = $(call TITLE, $(1)) && $(2) && $(call PASS, SUCCESS) || { $(call FAIL, F all: depends $(MAKE) $(ALLEXE:%=%.exe) +analyze: + make purge + scan-build make + count: wc $(wildcard *.c *.h) $(MAKEFILE_LIST) @@ -162,7 +166,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/parser.c b/parser.c index a98eab0..0000485 100644 --- a/parser.c +++ b/parser.c @@ -74,7 +74,6 @@ element_t *parser (char *str, char **next, int prio) { element_t *root = NULL; char *string = str; - int i; VERBOSE (DEBUG, fprintf (stdout, "Starting parsing\n")); @@ -121,7 +120,7 @@ element_t *parser (char *str, char **next, int prio) return ERROR_OP; } element_t *newcode = newelement (Code, root->nbops + 1, 5); - for (i = 0; i < root->nbops; i++) { + for (int i = 0; i < root->nbops; i++) { newcode->ops[i] = root->ops[i]; root->ops[i] = NULL; } @@ -159,7 +158,7 @@ element_t *parser (char *str, char **next, int prio) delelement (root); return ERROR_OP; } - for (i = 0; i < root->nbops; i++) { + for (int i = 0; i < root->nbops; i++) { if (root->ops[i] == NULL) { root->ops[i] = new; found = 1; @@ -210,7 +209,7 @@ element_t *parser (char *str, char **next, int prio) /* look for operators */ - for (i = 0; i < NB_OPERATORS; i++) { + for (int i = 0; i < NB_OPERATORS; i++) { keyword_t *operator = operators + i; if (codecmp (operator->keyword, str) == 0) { VERBOSE (DEBUG, fprintf (stdout, "start processing operator\n")); @@ -246,7 +245,7 @@ element_t *parser (char *str, char **next, int prio) /* look for functions */ - for (i = 0; i < NB_FUNCTIONS; i++) { + for (int i = 0; i < NB_FUNCTIONS; i++) { keyword_t *function = functions + i; if (codecmp (function->keyword, str) == 0) { VERBOSE (DEBUG, fprintf (stdout, "start processing function\n")); @@ -269,7 +268,7 @@ element_t *parser (char *str, char **next, int prio) /* look for constant */ - for (i = 0; i < NB_CONSTANTS; i++) { + for (int i = 0; i < NB_CONSTANTS; i++) { keyword_t *constant = constants + i; if (codecmp (constant->keyword, str) == 0) { VERBOSE (DEBUG, fprintf (stdout, "start processing constant\n")); @@ -303,7 +302,7 @@ element_t *parser (char *str, char **next, int prio) if (root == NULL) { root = new; } else { - for (i = 0; i < root->nbops; i++) { + for (int i = 0; i < root->nbops; i++) { if (root->ops[i] == NULL) { root->ops[i] = new; found = 1; @@ -361,13 +360,12 @@ element_t *parser (char *str, char **next, int prio) void print_element (element_t *root, int level) { char *func = NULL; - int i; if ((root == NULL) || (root == ERROR_OP)) { return; } - for (i = 0; i < level; i++) { + for (int i = 0; i < level; i++) { printf (" "); } @@ -453,12 +451,12 @@ void print_element (element_t *root, int level) printf ("Function: %s\n", func); if ((root->func == Val) && (root->ops[0] == NULL)) { - for (i = 0; i < level; i++) { + for (int i = 0; i < level; i++) { printf (" "); } printf ("value: %f\n", root->value); } else { - for (i = 0; i < root->nbops; i++) { + for (int i = 0; i < root->nbops; i++) { print_element (root->ops[i], level + 1); } } @@ -498,8 +496,7 @@ double while_do (element_t *cond, element_t *action) double execute_code (element_t **prog, int nbcalls) { double ret = 0; - int i; - for (i = 0; i < nbcalls; i++) { + for (int i = 0; i < nbcalls; i++) { ret = evaluate_element (prog[i], 0); } return ret; diff --git a/program.c b/program.c index b93a90c..bc5ad32 100644 --- a/program.c +++ b/program.c @@ -22,8 +22,7 @@ int nb_programs = 0; int lookfor_program (int id) { - int i; - for (i = 0; (programs) && (i < nb_programs); i++) { + for (int i = 0; (programs) && (i < nb_programs); i++) { if (programs[i]->id == id) { return i; } @@ -73,7 +72,6 @@ void prog (int id, element_t *root) double call (int id, int nbargs, element_t **args) { - int i; double ret = 0; VERBOSE (DEBUG, fprintf (stdout, "new call (%d)\n", id)); @@ -87,7 +85,7 @@ double call (int id, int nbargs, element_t **args) /* display debug information */ VERBOSE (DEBUG, fprintf (stdout, "nbargs: %d\n", nbargs)); - for (i = 0; i < nbargs; i++) { + for (int i = 0; i < nbargs; i++) { VERBOSE (DEBUG, fprintf (stdout, "argument %d\n", i + 1); print_element (args[i], 0)); } VERBOSE (DEBUG, fprintf (stdout, "program\n"); print_element (programs[n]->root, 0)); @@ -98,7 +96,7 @@ double call (int id, int nbargs, element_t **args) /* set arguments */ VERBOSE (DEBUG, fprintf (stdout, "argument before evaluation (%d)\n", size_tab (argument))); - for (i = 0; i < size_tab (argument); i++) { + for (int i = 0; i < size_tab (argument); i++) { VERBOSE (DEBUG, fprintf (stdout, "arg %d value: %g\n", i + 1, get_tab (argument, i + 1))); } VERBOSE (DEBUG, fprintf (stdout, "evaluate %d args\n", nbargs)); @@ -106,7 +104,7 @@ double call (int id, int nbargs, element_t **args) tab_t *old_argument = argument; argument = new_argument; VERBOSE (DEBUG, fprintf (stdout, "argument after evaluation (%d)\n", size_tab (argument))); - for (i = 0; i < size_tab (argument); i++) { + for (int i = 0; i < size_tab (argument); i++) { VERBOSE (DEBUG, fprintf (stdout, "arg %d value: %g\n", i + 1, get_tab (argument, i + 1))); } @@ -131,9 +129,8 @@ double call (int id, int nbargs, element_t **args) void list () { - int i; printf ("programs:"); - for (i = 0; i < nb_programs; i++) { + for (int i = 0; i < nb_programs; i++) { printf (" %d", programs[i]->id); } printf ("\n"); diff --git a/readline.c b/readline.c index 280e5f0..9421a45 100644 --- a/readline.c +++ b/readline.c @@ -144,12 +144,12 @@ void clean_read_line (char *buffer) char **generate_completion_list () { - int i, j, l = 0; + int l = 0; char **list = (char **) callocordie (NB_OPERATORS + NB_FUNCTIONS + NB_CONSTANTS + NB_SYMBOLS + 1, sizeof (char *)); - for (i = 0; i < NB_OPERATORS; i++) { + for (int i = 0; i < NB_OPERATORS; i++) { list[l] = strdup ((operators + i)->keyword); - for (j = 0; j < (int)strlen (list[l]); j++) { + for (int j = 0; j < (int)strlen (list[l]); j++) { if (list[i][j] == '\t') { list[i][j] = '\0'; } @@ -159,21 +159,21 @@ char **generate_completion_list () } } - for (i = 0; i < NB_FUNCTIONS; i++) { + for (int i = 0; i < NB_FUNCTIONS; i++) { list[l] = strdup ((functions + i)->keyword); if (list[l] != NULL) { l++; } } - for (i = 0; i < NB_CONSTANTS; i++) { + for (int i = 0; i < NB_CONSTANTS; i++) { list[l] = strdup ((constants + i)->keyword); if (list[l] != NULL) { l++; } } - for (i = 0; i < NB_SYMBOLS; i++) { + for (int i = 0; i < NB_SYMBOLS; i++) { list[l] = strdup (symbols[i]); if (list[l] != NULL) { l++; @@ -187,10 +187,8 @@ char **generate_completion_list () void free_completion_list (char **list) { - int i; - if (list) { - for (i = 0; i < NB_OPERATORS + NB_FUNCTIONS + NB_CONSTANTS + NB_SYMBOLS + 1; i++) { + for (int i = 0; i < NB_OPERATORS + NB_FUNCTIONS + NB_CONSTANTS + NB_SYMBOLS + 1; i++) { if (list[i] != NULL) { free (list[i]); } diff --git a/stack.c b/stack.c index f4117f5..d4cd02f 100644 --- a/stack.c +++ b/stack.c @@ -51,9 +51,8 @@ double put (int n, double val) double set (int nbops, element_t **ops) { - int i; stack = resize_tab (stack, nbops); - for (i = 0; i < nbops; i++) { + for (int i = 0; i < nbops; i++) { set_tab (stack, i + 1, evaluate_element (ops[i], 0)); } return size_tab (stack); @@ -61,9 +60,9 @@ double set (int nbops, element_t **ops) void show (void) { - int i, n = size_tab (stack); + int n = size_tab (stack); printf ("stack:"); - for (i = 0; i < n; i++) { + for (int i = 0; i < n; i++) { printf (" "); printl (get_tab (stack, i + 1)); } @@ -75,13 +74,13 @@ void show (void) double max () { double ret = 0; - int i, n = size_tab (stack); + int n = size_tab (stack); if (n < 1) { VERBOSE (WARNING, fprintf (stdout, "error not enough element in stack (%d)\n", n)); return 0; } ret = get_tab (stack, 1); - for (i = 1; i < n; i++) { + for (int i = 1; i < n; i++) { double cur = get_tab (stack, i + 1); if (cur > ret) { ret = cur; @@ -93,12 +92,12 @@ double max () double mean () { double ret = 0; - int i, n = size_tab (stack); + int n = size_tab (stack); if (n < 1) { VERBOSE (WARNING, fprintf (stdout, "error not enough element in stack (%d)\n", n)); return 0; } - for (i = 0; i < n; i++) { + for (int i = 0; i < n; i++) { ret += get_tab (stack, i + 1); } return ret / n; @@ -107,13 +106,13 @@ double mean () double min () { double ret = 0; - int i, n = size_tab (stack); + int n = size_tab (stack); if (n < 1) { VERBOSE (WARNING, fprintf (stdout, "error not enough element in stack (%d)\n", n)); return 0; } ret = get_tab (stack, 1); - for (i = 1; i < n; i++) { + for (int i = 1; i < n; i++) { double cur = get_tab (stack, i + 1); if (cur < ret) { ret = cur; @@ -145,12 +144,12 @@ double median () double prod () { double ret = 1; - int i, n = size_tab (stack); + int n = size_tab (stack); if (n < 1) { VERBOSE (WARNING, fprintf (stdout, "error not enough element in stack (%d)\n", n)); return 0; } - for (i = 0; i < n; i++) { + for (int i = 0; i < n; i++) { ret *= get_tab (stack, i + 1); } return ret; @@ -159,12 +158,12 @@ double prod () double sum () { double ret = 0; - int i, n = size_tab (stack); + int n = size_tab (stack); if (n < 1) { VERBOSE (WARNING, fprintf (stdout, "error not enough element in stack (%d)\n", n)); return 0; } - for (i = 0; i < n; i++) { + for (int i = 0; i < n; i++) { ret += get_tab (stack, i + 1); } return ret; @@ -173,13 +172,13 @@ double sum () double variance () { double ret = 0; - int i, n = size_tab (stack); + int n = size_tab (stack); if (n < 2) { VERBOSE (WARNING, fprintf (stdout, "error not enough element in stack (%d)\n", n)); return 0; } double m = mean (); - for (i = 0; i < n; i++) { + for (int i = 0; i < n; i++) { double x = get_tab (stack, i + 1); ret += (x - m) * (x - m); } diff --git a/storage.c b/storage.c index 15a6470..72e588e 100644 --- a/storage.c +++ b/storage.c @@ -72,9 +72,9 @@ void display (void) if (storage == NULL) { memory (DEFAULT_STORAGE_SIZE); } - int i, n = size_tab (storage); + int n = size_tab (storage); printf ("storage:"); - for (i = 0; i < n; i++) { + for (int i = 0; i < n; i++) { printf (" "); printl (get_tab (storage, i + 1)); } @@ -86,8 +86,8 @@ void clear () if (storage == NULL) { memory (DEFAULT_STORAGE_SIZE); } - int i, n = size_tab (storage); - for (i = 0; i < n; i++) { + int n = size_tab (storage); + for (int i = 0; i < n; i++) { set_tab (storage, i, 0); } } diff --git a/tabular.c b/tabular.c index 8100f04..6759268 100644 --- a/tabular.c +++ b/tabular.c @@ -160,16 +160,15 @@ double pop_tab (tab_t *tab, int id) void order_tab (tab_t *tab) { - int i, j; if ((!tab) || (tab->size < 2)) { VERBOSE (WARNING, fprintf (stdout, "error not enough element in stack (%d)\n", (tab) ? tab->size : 0)); return; } /* buble sort */ - for (i = 0; i < tab->size - 1; i++) { + for (int i = 0; i < tab->size - 1; i++) { int done = 0; - for (j = 0; j < tab->size - 1; j++) { + for (int j = 0; j < tab->size - 1; j++) { double tab_j = tab->data[j]; double tab_jp1 = tab->data[j + 1]; if (tab_j > tab_jp1) { -- 2.30.2