From: Ilia Alshanetsky Date: Thu, 13 Feb 2003 14:40:17 +0000 (+0000) Subject: Added 'x' mode for fopen() used on local files. This mode will create a new X-Git-Tag: RELEASE_0_5~1052 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f8eba6ded2bcd57ee37277396ea859cc22fcad23;p=php Added 'x' mode for fopen() used on local files. This mode will create a new file only if a file does not already exist (O_CREAT|O_EXCL). --- diff --git a/ext/standard/ftp_fopen_wrapper.c b/ext/standard/ftp_fopen_wrapper.c index 1ede5501c0..c68ff5fcf3 100644 --- a/ext/standard/ftp_fopen_wrapper.c +++ b/ext/standard/ftp_fopen_wrapper.c @@ -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; } diff --git a/ext/standard/http_fopen_wrapper.c b/ext/standard/http_fopen_wrapper.c index b6ad96415c..55f9ef26c0 100644 --- a/ext/standard/http_fopen_wrapper.c +++ b/ext/standard/http_fopen_wrapper.c @@ -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; } diff --git a/main/streams.c b/main/streams.c index c29aa87460..2827774213 100755 --- a/main/streams.c +++ b/main/streams.c @@ -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;