From: Ilia Alshanetsky Date: Thu, 13 Feb 2003 15:09:39 +0000 (+0000) Subject: Simplified the mode validation code & added support for read+write mode to X-Git-Tag: RELEASE_0_5~1048 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c28753de76606ba6ac9c964704685b765361dff9;p=php Simplified the mode validation code & added support for read+write mode to 'x' mode. --- diff --git a/main/streams.c b/main/streams.c index 9d63f2aa34..c9017fb684 100755 --- a/main/streams.c +++ b/main/streams.c @@ -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;