full adaption to c99 master
authorLaurent Mazet <mazet@softndesign.org>
Sun, 13 Apr 2025 13:38:05 +0000 (15:38 +0200)
committerLaurent Mazet <mazet@softndesign.org>
Sun, 13 Apr 2025 13:38:05 +0000 (15:38 +0200)
function.c
makefile

index 40d8eab92d0c763c137b1676dcdb5f2d65e6bd04..f9799f399cc9b96db09f28538f67c1b0a9179ba2 100644 (file)
@@ -440,16 +440,16 @@ char *_copyfile (char *dest, char *src)
         char buffer[BUFMAX];
         size_t nread = fread (buffer, 1, BUFMAX, fdsrc);
         VERBOSE (DEBUG, fprintf (stderr, "read %d bytes\n", (int)nread));
-        if (nread <= 0) {
-            break;
-        }
-
-        size_t nwritten = fwrite (buffer, 1, nread, fddest);
-        VERBOSE (DEBUG, fprintf (stderr, "wrote %d bytes\n", (int)nwritten));
-        if (nwritten != nread) {
-            msg = strdupcat ("Can't write file '", dest, "'", NULL);
+        if (ferror (fdsrc)) {
+            msg = strdupcat ("Can't read file '", src, "'", NULL);
+        } else {
+            size_t nwritten = fwrite (buffer, 1, nread, fddest);
+            VERBOSE (DEBUG, fprintf (stderr, "wrote %d bytes\n", (int)nwritten));
+            if (nwritten != nread) {
+                msg = strdupcat ("Can't write file '", dest, "'", NULL);
+            }
         }
-    } while (msg == NULL);
+    } while ((msg == NULL) && (!feof (fdsrc)));
 
     if ((fclose (fddest) != 0) && (msg == NULL)) {
         msg = strdupcat ("Can't close file '", dest, "'", NULL);
@@ -657,8 +657,14 @@ static char *_readstream (FILE *sd, int *length)
         buffer = (char *) realloc (buffer, size);
         memset (buffer + size - BUFMAX - 1, 0, BUFMAX + 1);
         blocklen = fread (buffer + size - BUFMAX - 1, 1, BUFMAX, sd);
+        VERBOSE (DEBUG, fprintf (stderr, "read %d bytes\n", (int)blocklen));
         _length += blocklen;
-    } while (blocklen > 0);
+        if (ferror (sd)) {
+            VERBOSE (WARNING, fprintf (stderr, "error on reading\n"));
+            clearerr (sd);
+            blocklen = 0;
+        }
+    } while ((blocklen > 0) && (!feof (sd)));
 
     /* check size */
     VERBOSE (DEBUG, fprintf (stderr, "length: %d\n", _length));
index eb5c92072b3574d860d149aeb85c276c1d29dfa6..09ecb8bc309abe5c9bba31812b7dfecc3743bcb9 100644 (file)
--- a/makefile
+++ b/makefile
@@ -37,8 +37,7 @@ endif
 
 # Targets
 
-ALLEXE  =
-ALLEXE += fm
+ALLEXE  = $(shell for f in *.c; do grep -q '/\*\slinker:' $$f && echo $${f/.c}; done)
 
 SHELL = bash
 
@@ -68,6 +67,7 @@ all: depends
        $(MAKE) $(ALLEXE:%=%.exe)
 
 analyze:
+       make purge
        scan-build make
        #scan-build -stats make