From 1c604063493597ca2183d6890df5acc38a865add Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Tue, 16 Jan 2007 20:36:04 +0000 Subject: [PATCH] - Add more unicode stuff --- main/php_streams.h | 2 ++ main/streams/streams.c | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/main/php_streams.h b/main/php_streams.h index eab472d683..e377542314 100755 --- a/main/php_streams.h +++ b/main/php_streams.h @@ -360,7 +360,9 @@ PHPAPI int _php_stream_rmdir(char *path, int options, php_stream_context *contex #define php_stream_rmdir(path, options, context) _php_stream_rmdir(path, options, context TSRMLS_CC) PHPAPI php_stream *_php_stream_opendir(char *path, int options, php_stream_context *context STREAMS_DC TSRMLS_DC); +PHPAPI php_stream *_php_stream_u_opendir(zend_uchar type, zstr path, int path_len, int options, php_stream_context *context STREAMS_DC TSRMLS_DC); #define php_stream_opendir(path, options, context) _php_stream_opendir((path), (options), (context) STREAMS_CC TSRMLS_CC) +#define php_stream_u_opendir(path_type, path, path_len, options, context) _php_stream_u_opendir((path_type), (path), (path_len), (options), (context) STREAMS_CC TSRMLS_CC) PHPAPI php_stream_dirent *_php_stream_readdir(php_stream *dirstream, php_stream_dirent *ent TSRMLS_DC); #define php_stream_readdir(dirstream, dirent) _php_stream_readdir((dirstream), (dirent) TSRMLS_CC) #define php_stream_closedir(dirstream) php_stream_close((dirstream)) diff --git a/main/streams/streams.c b/main/streams/streams.c index f7ed82cf9d..b521dcae86 100755 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -2278,6 +2278,27 @@ PHPAPI php_stream *_php_stream_opendir(char *path, int options, } /* }}} */ +PHPAPI php_stream *_php_stream_u_opendir(zend_uchar type, zstr path, int path_len, int options, php_stream_context *context STREAMS_DC TSRMLS_DC) /* {{{ */ +{ + char *filename; + int filename_len; + php_stream *stream; + + if (type == IS_STRING) { + return php_stream_opendir(path.s, options, context); + } + + /* type == IS_UNICODE */ + if (FAILURE == php_stream_path_encode(NULL, &filename, &filename_len, path.u, path_len, options, context)) { + return NULL; + } + + stream = php_stream_opendir(filename, options, context); + efree(filename); + return stream; +} +/* }}} */ + /* {{{ _php_stream_readdir */ PHPAPI php_stream_dirent *_php_stream_readdir(php_stream *dirstream, php_stream_dirent *ent TSRMLS_DC) { -- 2.50.1