diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2003-02-13 14:40:17 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2003-02-13 14:40:17 +0000 |
commit | f8eba6ded2bcd57ee37277396ea859cc22fcad23 (patch) | |
tree | 65e75a6cf2ac2537556ab8b6b417875860e0ea8b | |
parent | 77b98f86158a6a4f39da1d0a099d0a185cb7f8e1 (diff) | |
download | php-git-f8eba6ded2bcd57ee37277396ea859cc22fcad23.tar.gz |
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).
-rw-r--r-- | ext/standard/ftp_fopen_wrapper.c | 2 | ||||
-rw-r--r-- | ext/standard/http_fopen_wrapper.c | 2 | ||||
-rwxr-xr-x | main/streams.c | 3 |
3 files changed, 5 insertions, 2 deletions
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; |