]> granicus.if.org Git - php/commitdiff
Added 'x' mode for fopen() used on local files. This mode will create a new
authorIlia Alshanetsky <iliaa@php.net>
Thu, 13 Feb 2003 14:40:17 +0000 (14:40 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Thu, 13 Feb 2003 14:40:17 +0000 (14:40 +0000)
file only if a file does not already exist (O_CREAT|O_EXCL).

ext/standard/ftp_fopen_wrapper.c
ext/standard/http_fopen_wrapper.c
main/streams.c

index 1ede5501c094beb99bc9302fd15ed1ad9b17b274..c68ff5fcf316d36737ced3edbf08a1a84105dc73 100644 (file)
@@ -152,7 +152,7 @@ php_stream * php_stream_url_wrap_ftp(php_stream_wrapper *wrapper, char *path, ch
 
        tmp_line[0] = '\0';
 
-       if (strchr(mode, 'a') || strchr(mode, '+')) {
+       if (strpbrk(mode, "a+")) {
                php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "FTP does not support simultaneous read/write connections.");
                return NULL;
        }
index b6ad96415c028f88525781fa9df74985e9e212dd..55f9ef26c0dd9253119f6b52f98b305a8a1dd116 100644 (file)
@@ -102,7 +102,7 @@ php_stream *php_stream_url_wrap_http(php_stream_wrapper *wrapper, char *path, ch
        size_t chunk_size = 0, file_size = 0;
        int eol_detect;
 
-       if (strchr(mode, 'a') || strchr(mode, '+') || strchr(mode, 'w')) {
+       if (strpbrk(mode, "awx+")) {
                php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "HTTP wrapper does not support writeable connections.");
                return NULL;
        }
index c29aa87460050731b4fb2dbac9650fd3cd9dd77f..2827774213c33607a55855129f7eb566fe212d5d 100755 (executable)
@@ -1875,6 +1875,9 @@ PHPAPI int php_stream_parse_fopen_modes(const char *mode, int *open_flags)
                        }
                        flags |= O_CREAT|O_APPEND;
                        break;
+               case 'x':
+                       flags = O_CREAT|O_EXCL;
+                       break;
                default:
                        /* unknown mode */
                        return FAILURE;