]> git.sur5r.net Git - cc65/commitdiff
Fix return codes
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 24 Mar 2002 13:23:59 +0000 (13:23 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 24 Mar 2002 13:23:59 +0000 (13:23 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@1204 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/common/fread.c
libsrc/common/fwrite.c

index a8b402af3b0b29c15ef250a3784d0103c0b4827b..d0d3df3bc57ba257030d9cf0749d7eb0aefdfe06 100644 (file)
@@ -20,7 +20,7 @@ size_t fread (void* buf, size_t size, size_t count, FILE* f)
     /* Is the file open? */
     if ((f->f_flags & _FOPEN) == 0) {
                _errno = EINVAL;                /* File not open */
-       return (size_t) -1;
+       return 0;
     }
 
     /* Did we have an error or EOF? */
@@ -33,21 +33,26 @@ size_t fread (void* buf, size_t size, size_t count, FILE* f)
     bytes = size * count;
 
     if (bytes) {
+
        /* Read the data. */
        bytes = read (f->f_fd, buf, bytes);
-       if (bytes == -1) {
-           /* Read error */
-           f->f_flags |= _FERROR;
-           return (size_t) -1;
-       }
-       if (bytes == 0) {
-           /* End of file */
-           f->f_flags |= _FEOF;
-           return (size_t) -1;
-       }
-
-        /* Unfortunately, we cannot avoid the divide here... */
-        return bytes / size;
+
+        switch (bytes) {
+
+            case -1:
+                /* Read error */
+                f->f_flags |= _FERROR;
+                return 0;
+
+            case 0:
+                /* End of file */
+                f->f_flags |= _FEOF;
+                /* FALLTHROUGH */
+
+            default:
+                /* Unfortunately, we cannot avoid the divide here... */
+                return bytes / size;
+        }
 
     } else {
 
index 30ceaea0a719b77e4c0e04f639ae90368ca0bb71..a363ad36237807c2b579b1258c8f72de2b124b84 100644 (file)
@@ -20,7 +20,7 @@ size_t fwrite (const void* buf, size_t size, size_t count, FILE* f)
     /* Is the file open? */
     if ((f->f_flags & _FOPEN) == 0) {
                _errno = EINVAL;                /* File not open */
-       return -1;
+       return 0;
     }
 
     /* Did we have an error */
@@ -37,7 +37,7 @@ size_t fwrite (const void* buf, size_t size, size_t count, FILE* f)
                if (write (f->f_fd, buf, bytes) == -1) {
            /* Write error */
            f->f_flags |= _FERROR;
-           return -1;
+           return 0;
        }
     }