summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/standard/ftp_fopen_wrapper.c2
-rw-r--r--ext/standard/http_fopen_wrapper.c2
-rwxr-xr-xmain/streams.c3
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;