garbage is allowed in the f[re]open mode string
authoreck <none@none>
Tue, 24 Apr 1990 09:30:15 +0000 (09:30 +0000)
committereck <none@none>
Tue, 24 Apr 1990 09:30:15 +0000 (09:30 +0000)
lang/cem/libcc.ansi/stdio/fopen.c
lang/cem/libcc.ansi/stdio/freopen.c

index bc2e1ed..af11acd 100644 (file)
@@ -73,14 +73,16 @@ fopen(const char *name, const char *mode)
        while (*mode) {
                switch(*mode++) {
                case 'b':
-                       break;
+                       continue;
                case '+':
                        rwmode = O_RDWR;
                        flags |= _IOREAD | _IOWRITE;
-                       break;
+                       continue;
+               /* The sequence may be followed by additional characters */
                default:
-                       return (FILE *)NULL;
+                       break;
                }
+               break;
        }
 
        /* Perform a creat() when the file should be truncated or when
index 41887f8..3296536 100644 (file)
@@ -56,14 +56,16 @@ freopen(const char *name, const char *mode, FILE *stream)
        while (*mode) {
                switch(*mode++) {
                case 'b':
-                       break;
+                       continue;
                case '+':
                        rwmode = O_RDWR;
                        flags |= _IOREAD | _IOWRITE;
-                       break;
+                       continue;
+               /* The sequence may be followed by aditional characters */
                default:
-                       return (FILE *)NULL;
+                       break;
                }
+               break;
        }
 
        if ((rwflags & O_TRUNC)