- Renamed php_stream_rep_nonstand_mode to

php_stream_mode_sanitize_fdopen_fopencookie, made it not
  exported and movied it from php_streams.h to
  php_streams_int.h.
This commit is contained in:
Gustavo André dos Santos Lopes 2010-11-05 18:53:48 +00:00
parent b84e262f63
commit 8342c36f09
4 changed files with 11 additions and 10 deletions

View File

@ -462,12 +462,6 @@ END_EXTERN_C()
#define PHP_STREAM_CAST_MASK (PHP_STREAM_CAST_TRY_HARD | PHP_STREAM_CAST_RELEASE | PHP_STREAM_CAST_INTERNAL)
BEGIN_EXTERN_C()
PHPAPI int _php_stream_cast(php_stream *stream, int castas, void **ret, int show_err TSRMLS_DC);
/* This functions transforms the first char to 'w' if it's not 'r', 'a' or 'w'
* and strips any subsequent chars except '+' and 'b'.
* Use this to sanitize stream->mode if you call e.g. fdopen, fopencookie or
* any other function that expects standard modes and you allow non-standard
* ones. result should be a char[5]. */
PHPAPI void php_stream_rep_nonstand_mode(php_stream *stream, char *result);
END_EXTERN_C()
/* use this to check if a stream can be cast into another form */
#define php_stream_can_cast(stream, as) _php_stream_cast((stream), (as), NULL, 0 TSRMLS_CC)

View File

@ -144,9 +144,9 @@ static COOKIE_IO_FUNCTIONS_T stream_cookie_functions =
#endif
/* }}} */
/* {{{ php_stream_rep_nonstand_mode
/* {{{ php_stream_mode_sanitize_fdopen_fopencookie
* Result should have at least size 5, e.g. to write wbx+\0 */
PHPAPI void php_stream_rep_nonstand_mode(php_stream *stream, char *result)
void php_stream_mode_sanitize_fdopen_fopencookie(php_stream *stream, char *result)
{
/* replace modes not supported by fdopen and fopencookie, but supported
* by PHP's fread(), so that their calls won't fail */
@ -233,7 +233,7 @@ PHPAPI int _php_stream_cast(php_stream *stream, int castas, void **ret, int show
{
char fixed_mode[5];
php_stream_rep_nonstand_mode(stream, fixed_mode);
php_stream_mode_sanitize_fdopen_fopencookie(stream, fixed_mode);
*(FILE**)ret = fopencookie(stream, fixed_mode, PHP_STREAM_COOKIE_FUNCTIONS);
}

View File

@ -59,6 +59,13 @@
#define S_ISREG(mode) (((mode)&S_IFMT) == S_IFREG)
#endif
/* This functions transforms the first char to 'w' if it's not 'r', 'a' or 'w'
* and strips any subsequent chars except '+' and 'b'.
* Use this to sanitize stream->mode if you call e.g. fdopen, fopencookie or
* any other function that expects standard modes and you allow non-standard
* ones. result should be a char[5]. */
void php_stream_mode_sanitize_fdopen_fopencookie(php_stream *stream, char *result);
void php_stream_tidy_wrapper_error_log(php_stream_wrapper *wrapper TSRMLS_DC);
void php_stream_display_wrapper_errors(php_stream_wrapper *wrapper, const char *path, const char *caption TSRMLS_DC);

View File

@ -491,7 +491,7 @@ static int php_stdiop_cast(php_stream *stream, int castas, void **ret TSRMLS_DC)
/* we were opened as a plain file descriptor, so we
* need fdopen now */
char fixed_mode[5];
php_stream_rep_nonstand_mode(stream, fixed_mode);
php_stream_mode_sanitize_fdopen_fopencookie(stream, fixed_mode);
data->file = fdopen(data->fd, fixed_mode);
if (data->file == NULL) {
return FAILURE;