diff options
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r-- | Zend/zend_builtin_functions.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 1f7c498660..4e70e460a2 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -40,6 +40,8 @@ static ZEND_FUNCTION(get_class); static ZEND_FUNCTION(get_parent_class); static ZEND_FUNCTION(method_exists); static ZEND_FUNCTION(leak); +static ZEND_FUNCTION(get_used_files); +static ZEND_FUNCTION(get_imported_files); extern unsigned char first_arg_force_ref[]; @@ -59,6 +61,8 @@ static zend_function_entry builtin_functions[] = { ZEND_FE(get_parent_class, NULL) ZEND_FE(method_exists, NULL) ZEND_FE(leak, NULL) + ZEND_FE(get_used_files, NULL) + ZEND_FE(get_imported_files, NULL) { NULL, NULL, NULL } }; @@ -421,3 +425,41 @@ ZEND_FUNCTION(leak) emalloc(leakbytes); } + + +static int copy_import_use_file(zend_file_handle *fh, zval *array) +{ + if (fh->filename) { + char *extension_start; + + extension_start = strstr(fh->filename, zend_uv.import_use_extension); + if (extension_start) { + *extension_start = 0; + if (fh->opened_path) { + add_assoc_string(array, fh->filename, fh->opened_path, 1); + } else { + add_assoc_stringl(array, fh->filename, "N/A", sizeof("N/A")-1, 1); + } + *extension_start = zend_uv.import_use_extension[0]; + } + } + return 0; +} + + +ZEND_FUNCTION(get_used_files) +{ + CLS_FETCH(); + + array_init(return_value); + zend_hash_apply_with_argument(&CG(used_files), (int (*)(void *, void *)) copy_import_use_file, return_value); +} + + +ZEND_FUNCTION(get_imported_files) +{ + ELS_FETCH(); + + array_init(return_value); + zend_hash_apply_with_argument(&EG(imported_files), (int (*)(void *, void *)) copy_import_use_file, return_value); +} |