]> granicus.if.org Git - php/commitdiff
Simplified the mode validation code & added support for read+write mode to
authorIlia Alshanetsky <iliaa@php.net>
Thu, 13 Feb 2003 15:09:39 +0000 (15:09 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Thu, 13 Feb 2003 15:09:39 +0000 (15:09 +0000)
'x' mode.

main/streams.c

index 9d63f2aa34a88d80f3804138c3f41dd9abc246b8..c9017fb68452fa1f8f5f19f7a26069fd2008103d 100755 (executable)
@@ -1853,27 +1853,13 @@ PHPAPI int php_stream_parse_fopen_modes(const char *mode, int *open_flags)
 
        switch (mode[0]) {
                case 'r':
-                       if (strchr(mode, '+')) {
-                               flags = O_RDWR;
-                       } else {
-                               flags = O_RDONLY;
-                       }
+                       flags = 0;
                        break;
                case 'w':
-                       if (strchr(mode, '+')) {
-                               flags = O_RDWR;
-                       } else {
-                               flags = O_WRONLY;
-                       }
-                       flags |= O_TRUNC|O_CREAT;
+                       flags = O_TRUNC|O_CREAT;
                        break;
                case 'a':
-                       if (strchr(mode, '+')) {
-                               flags = O_RDWR;
-                       } else {
-                               flags = O_WRONLY;
-                       }
-                       flags |= O_CREAT|O_APPEND;
+                       flags = O_CREAT|O_APPEND;
                        break;
                case 'x':
                        flags = O_CREAT|O_EXCL;
@@ -1883,6 +1869,14 @@ PHPAPI int php_stream_parse_fopen_modes(const char *mode, int *open_flags)
                        return FAILURE;
        }
 
+       if (strchr(mode, '+')) {
+               flags |= O_RDWR;
+       } else if (flags) {
+               flags |= O_WRONLY;
+       } else {
+               flags |= O_RDONLY'
+       }
+
 #ifdef O_BINARY
        if (strchr(mode, 'b')) {
                flags |= O_BINARY;