diff options
Diffstat (limited to 'ext/standard/php_fopen_wrapper.c')
| -rw-r--r-- | ext/standard/php_fopen_wrapper.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/ext/standard/php_fopen_wrapper.c b/ext/standard/php_fopen_wrapper.c index f440c75fe..db2157396 100644 --- a/ext/standard/php_fopen_wrapper.c +++ b/ext/standard/php_fopen_wrapper.c @@ -17,7 +17,7 @@ | Hartmut Holzgraefe <hholzgra@php.net> | +----------------------------------------------------------------------+ */ -/* $Id: php_fopen_wrapper.c,v 1.45.2.3 2006/01/01 12:50:15 sniper Exp $ */ +/* $Id: php_fopen_wrapper.c,v 1.45.2.4 2006/05/01 16:02:07 helly Exp $ */ #include <stdio.h> #include <stdlib.h> @@ -158,9 +158,29 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, char *path, ch int mode_rw = 0; php_stream * stream = NULL; char *p, *token, *pathdup; + long max_memory; - if (!strncasecmp(path, "php://", 6)) + if (!strncasecmp(path, "php://", 6)) { path += 6; + } + + if (!strncasecmp(path, "temp", 4)) { + path += 4; + max_memory = PHP_STREAM_MAX_MEM; + if (!strncasecmp(path, "/maxmemory:", 11)) { + path += 11; + max_memory = strtol(path, NULL, 10); + if (max_memory < 0) { + php_error_docref(NULL TSRMLS_CC, E_ERROR, "Max memory must be >= 0"); + return NULL; + } + } + return php_stream_temp_create(TEMP_STREAM_DEFAULT, max_memory); + } + + if (!strcasecmp(path, "memory")) { + return php_stream_memory_create(TEMP_STREAM_DEFAULT); + } if (!strcasecmp(path, "output")) { return php_stream_alloc(&php_stream_output_ops, NULL, 0, "wb"); |
