Re: cvs: php4 /ext/standard file.c

From: Date: Tue, 08 Apr 2003 22:15:06 +0000
Subject: Re: cvs: php4 /ext/standard file.c
References: 1  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-20182@lists.php.net to get a copy of this message
I'm not so sure if we should use the include path for file_put_contents(), as there is potential for writing to the wrong file; generally speaking you should know which file you are going to modify before you attempt to modify it :) And what if the file doesn't yet existing in the include path? :) --Wez. I know you didn't write that bit of code; just raising the issue. On Tue, 8 Apr 2003, Sara Golemon wrote: > pollita Tue Apr 8 18:10:15 2003 EDT > > Modified files: > /php4/ext/standard file.c > Log: > Add context support to file_put_contents() and readfile(), convert readfile() to > zend_parse_parameters usage, fix proto for file_put_contents() > > Index: php4/ext/standard/file.c > diff -u php4/ext/standard/file.c:1.332 php4/ext/standard/file.c:1.333 > --- php4/ext/standard/file.c:1.332 Tue Apr 8 17:00:07 2003 > +++ php4/ext/standard/file.c Tue Apr 8 18:10:15 2003 > @@ -21,7 +21,7 @@ > +----------------------------------------------------------------------+ > */ > > -/* $Id: file.c,v 1.332 2003/04/08 21:00:07 pollita Exp $ */ > +/* $Id: file.c,v 1.333 2003/04/08 22:10:15 pollita Exp $ */ > > /* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */ > > @@ -465,7 +465,7 @@ > } > /* }}} */ > > -/* {{{ proto string file_put_contents(string file, string data) > +/* {{{ proto string file_put_contents(string file, string data[, bool use_include_path[, > resource context]]) > Write/Create a file with contents data */ > PHP_FUNCTION(file_put_contents) > { > @@ -474,14 +474,20 @@ > size_t filename_len, data_len; > int numbytes; > zend_bool use_include_path = 0; > + zval *zcontext = NULL; > + php_stream_context *context = NULL; > > - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|b", &filename, > &filename_len, > - &data, &data_len, &use_include_path) == FAILURE) { > + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|br!", &filename, > &filename_len, > + &data, &data_len, &use_include_path, &zcontext) == FAILURE) { > return; > } > > - stream = php_stream_open_wrapper(filename, "wb", > - (use_include_path ? USE_PATH : 0) | ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL); > + if (zcontext) { > + context = zend_fetch_resource(&zcontext TSRMLS_CC, -1, "Stream-Context", NULL, > 1, php_le_stream_context()); > + } > + > + stream = php_stream_open_wrapper_ex(filename, "wb", > + (use_include_path ? USE_PATH : 0) | ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL, context); > if (stream == NULL) { > RETURN_FALSE; > } > @@ -1282,37 +1288,27 @@ > } > /* }}} */ > > -/* {{{ proto int readfile(string filename [, bool use_include_path]) > +/* {{{ proto int readfile(string filename [, bool use_include_path[, resource context]]) > Output a file or a URL */ > PHP_FUNCTION(readfile) > { > - zval **arg1, **arg2; > - int size=0; > - int use_include_path=0; > + int size = 0; > + char *filename; > + int filename_len; > + zend_bool use_include_path = 0; > + zval *zcontext = NULL; > php_stream *stream; > - > - /* check args */ > - switch (ZEND_NUM_ARGS()) { > - case 1: > - if (zend_get_parameters_ex(1, &arg1) == FAILURE) { > - WRONG_PARAM_COUNT; > - } > - break; > + php_stream_context *context = NULL; > > - case 2: > - if (zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) { > - WRONG_PARAM_COUNT; > - } > - convert_to_long_ex(arg2); > - use_include_path = Z_LVAL_PP(arg2); > - break; > + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|br!", &filename, > &filename_len, &use_include_path, &zcontext) == FAILURE) { > + RETURN_FALSE; > + } > > - default: > - WRONG_PARAM_COUNT; > + if (zcontext) { > + context = zend_fetch_resource(&zcontext TSRMLS_CC, -1, "Stream-Context", NULL, > 1, php_le_stream_context()); > } > - convert_to_string_ex(arg1); > > - stream = php_stream_open_wrapper(Z_STRVAL_PP(arg1), "rb", (use_include_path ? > USE_PATH : 0) | ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL); > + stream = php_stream_open_wrapper_ex(filename, "rb", (use_include_path ? USE_PATH : > 0) | ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL, context); > if (stream) { > size = php_stream_passthru(stream); > php_stream_close(stream); > > > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > >

« previous php.cvs (#20182) next »