pollita Tue Oct 3 16:28:02 2006 UTC
Modified files:
/ZendEngine2 zend.c zend.h zend_builtin_functions.c
/php-src/main main.c
Log:
PHP6 Update for get_included_files() and export of path decode for Zend
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend.c?r1=1.373&r2=1.374&diff_format=u
Index: ZendEngine2/zend.c
diff -u ZendEngine2/zend.c:1.373 ZendEngine2/zend.c:1.374
--- ZendEngine2/zend.c:1.373 Fri Sep 29 20:59:26 2006
+++ ZendEngine2/zend.c Tue Oct 3 16:28:02 2006
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend.c,v 1.373 2006/09/29 20:59:26 andrei Exp $ */
+/* $Id: zend.c,v 1.374 2006/10/03 16:28:02 pollita Exp $ */
#include "zend.h"
#include "zend_extensions.h"
@@ -56,6 +56,7 @@
ZEND_API int (*zend_printf)(const char *format, ...);
ZEND_API zend_write_func_t zend_write;
ZEND_API int (*zend_path_encode)(char **encpath, int *encpath_len, const UChar
*path, int path_len TSRMLS_DC);
+ZEND_API int (*zend_path_decode)(UChar **decpath, int *decpath_len, const char
*path, int path_len TSRMLS_DC);
ZEND_API FILE *(*zend_fopen)(const char *filename, char **opened_path);
ZEND_API int (*zend_stream_open_function)(const char *filename,
zend_file_handle *handle TSRMLS_DC);
ZEND_API void (*zend_block_interruptions)(void);
@@ -624,6 +625,22 @@
return SUCCESS;
}
+static int zend_path_decode_wrapper(UChar **decpath, int *decpath_len, const
char *path, int path_len TSRMLS_DC)
+{
+ UErrorCode status = U_ZERO_ERROR;
+
+
zend_string_to_unicode_ex(ZEND_U_CONVERTER(UG(filesystem_encoding_conv)),
decpath, decpath_len, path, path_len, &status);
+
+ if (U_FAILURE(status)) {
+ efree(*decpath);
+ *decpath = NULL;
+ *decpath_len = 0;
+ return FAILURE;
+ }
+
+ return SUCCESS;
+}
+
static FILE *zend_fopen_wrapper(const char *filename, char **opened_path)
{
if (opened_path) {
@@ -1012,6 +1029,10 @@
if (!zend_path_encode) {
zend_path_encode = zend_path_encode_wrapper;
}
+ zend_path_decode = utility_functions->path_decode_function;
+ if (!zend_path_decode) {
+ zend_path_decode = zend_path_decode_wrapper;
+ }
zend_fopen = utility_functions->fopen_function;
if (!zend_fopen) {
zend_fopen = zend_fopen_wrapper;
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend.h?r1=1.327&r2=1.328&diff_format=u
Index: ZendEngine2/zend.h
diff -u ZendEngine2/zend.h:1.327 ZendEngine2/zend.h:1.328
--- ZendEngine2/zend.h:1.327 Thu Sep 14 10:32:57 2006
+++ ZendEngine2/zend.h Tue Oct 3 16:28:02 2006
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend.h,v 1.327 2006/09/14 10:32:57 dmitry Exp $ */
+/* $Id: zend.h,v 1.328 2006/10/03 16:28:02 pollita Exp $ */
#ifndef ZEND_H
#define ZEND_H
@@ -411,6 +411,7 @@
int (*printf_function)(const char *format, ...);
int (*write_function)(const char *str, uint str_length);
int (*path_encode_function)(char **encpath, int *encpath_len, const
UChar *path, int path_len TSRMLS_DC);
+ int (*path_decode_function)(UChar **decpath, int *decpath_len, const
char *path, int path_len TSRMLS_DC);
FILE *(*fopen_function)(const char *filename, char **opened_path);
void (*message_handler)(long message, void *data);
void (*block_interruptions)(void);
@@ -557,6 +558,7 @@
extern ZEND_API int (*zend_printf)(const char *format, ...);
extern ZEND_API zend_write_func_t zend_write;
extern ZEND_API int (*zend_path_encode)(char **encpath, int *encpath_len,
const UChar *path, int path_len TSRMLS_DC);
+extern ZEND_API int (*zend_path_decode)(UChar **decpath, int *decpath_len,
const char *path, int path_len TSRMLS_DC);
extern ZEND_API FILE *(*zend_fopen)(const char *filename, char **opened_path);
extern ZEND_API void (*zend_block_interruptions)(void);
extern ZEND_API void (*zend_unblock_interruptions)(void);
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_builtin_functions.c?r1=1.326&r2=1.327&diff_format=u
Index: ZendEngine2/zend_builtin_functions.c
diff -u ZendEngine2/zend_builtin_functions.c:1.326
ZendEngine2/zend_builtin_functions.c:1.327
--- ZendEngine2/zend_builtin_functions.c:1.326 Tue Sep 26 07:55:40 2006
+++ ZendEngine2/zend_builtin_functions.c Tue Oct 3 16:28:02 2006
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_builtin_functions.c,v 1.326 2006/09/26 07:55:40 dmitry Exp $ */
+/* $Id: zend_builtin_functions.c,v 1.327 2006/10/03 16:28:02 pollita Exp $ */
#include "zend.h"
#include "zend_API.h"
@@ -1197,22 +1197,28 @@
#endif /* ZEND_DEBUG */
-/* {{{ proto array get_included_files(void)
- Returns an array with the file names that were include_once()'d */
+/* {{{ proto array get_included_files(void) U
+ Returns an array with the file names that were included (includes require
and once varieties) */
ZEND_FUNCTION(get_included_files)
{
+ HashPosition pos;
+ UChar *ustr;
zstr entry;
+ int len, ustr_len;
+
if (ZEND_NUM_ARGS() != 0) {
ZEND_WRONG_PARAM_COUNT();
}
array_init(return_value);
- zend_hash_internal_pointer_reset(&EG(included_files));
- while (zend_hash_get_current_key(&EG(included_files), &entry, NULL, 0)
== HASH_KEY_IS_STRING) {
- /* UTODO Not sure this should be runtime encoding.. maybe
filename encoding
- * instead */
- add_next_index_rt_string(return_value, entry.s, 1);
- zend_hash_move_forward(&EG(included_files));
+ zend_hash_internal_pointer_reset_ex(&EG(included_files), &pos);
+ while (zend_hash_get_current_key_ex(&EG(included_files), &entry, &len,
NULL, 0, &pos) == HASH_KEY_IS_STRING) {
+ if (UG(unicode) && SUCCESS == zend_path_decode(&ustr,
&ustr_len, entry.s, len - 1 TSRMLS_CC)) {
+ add_next_index_unicodel(return_value, ustr, ustr_len,
0);
+ } else {
+ add_next_index_stringl(return_value, entry.s, len - 1,
1);
+ }
+ zend_hash_move_forward_ex(&EG(included_files), &pos);
}
}
/* }}} */
http://cvs.php.net/viewvc.cgi/php-src/main/main.c?r1=1.703&r2=1.704&diff_format=u
Index: php-src/main/main.c
diff -u php-src/main/main.c:1.703 php-src/main/main.c:1.704
--- php-src/main/main.c:1.703 Mon Sep 25 14:49:34 2006
+++ php-src/main/main.c Tue Oct 3 16:28:02 2006
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: main.c,v 1.703 2006/09/25 14:49:34 iliaa Exp $ */
+/* $Id: main.c,v 1.704 2006/10/03 16:28:02 pollita Exp $ */
/* {{{ includes
*/
@@ -983,6 +983,14 @@
}
/* }}} */
+/* {{{ php_path_decode_for_zend
+ */
+static int php_path_decode_for_zend(UChar **decpath, int *decpath_len, const
char *path, int path_len TSRMLS_DC)
+{
+ return php_stream_path_decode(NULL, decpath, decpath_len, path,
path_len, 0, NULL);
+}
+/* }}} */
+
/* {{{ php_fopen_wrapper_for_zend
*/
static FILE *php_fopen_wrapper_for_zend(const char *filename, char
**opened_path)
@@ -1550,6 +1558,7 @@
zuf.printf_function = php_printf;
zuf.write_function = php_output_wrapper;
zuf.path_encode_function = php_path_encode_for_zend;
+ zuf.path_decode_function = php_path_decode_for_zend;
zuf.fopen_function = php_fopen_wrapper_for_zend;
zuf.message_handler = php_message_handler_for_zend;
zuf.block_interruptions = sapi_module.block_interruptions;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php