full adaptation to c99
authorLaurent Mazet <mazet@softndesign.org>
Sat, 12 Apr 2025 19:25:11 +0000 (21:25 +0200)
committerLaurent Mazet <mazet@softndesign.org>
Sat, 12 Apr 2025 19:25:11 +0000 (21:25 +0200)
argument.c
element.c
format.c
makefile
parser.c
program.c
readline.c
stack.c
storage.c
tabular.c

index c5b1504b25409f9795459eb3885e1813d12ea6c4..c895496063242132d33d0f55856b01f1100aace7 100644 (file)
@@ -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);
index e285504a1bf69fded6f64cccb8ed2b110b7a8349..90d6fdf20659abccfd642ca34b7a6203cb8cbda7 100644 (file)
--- 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;
index 60cb1d477e6055281b578070daf7cae63bfc75d0..52321372e07026e32aefa3335628f4245287b32a 100644 (file)
--- 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';
index 33571595be51b2060a4c0c94dcb938b159d1b4eb..0f59debe8c0ecbbe1c8affc0cbf2c6bd8b90719f 100644 (file)
--- 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
 
index a98eab0dd27248e0117301c73e50629b37fcfb91..00004850f329a047143c2ac171d7479dd35b7bc6 100644 (file)
--- 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;
index b93a90cb299538f1dc0b79b0ae2223baba7c6021..bc5ad325a0cb784698ad3b07b3ae3ebca59707b8 100644 (file)
--- 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");
index 280e5f012232c62eaffc7081ceda1730b3ce1de1..9421a45e6a4db2bf0ea30f44e24ee8400936d5cb 100644 (file)
@@ -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 f4117f5ce0fd397432933cc8062c219f6e15bbf0..d4cd02f032b668096c3916dcdba2f72bbaecd0e5 100644 (file)
--- 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);
     }
index 15a64702a46b92278eaf34bf44f0ff5816419acd..72e588e1844d20edc635cbdd643cc9cc8ff7f371 100644 (file)
--- 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);
     }
 }
index 8100f048037643dfe531e770514dd2e699e8eaac..6759268bbf4054e6afc482bd0636db8ef6f4889a 100644 (file)
--- 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) {