Fixed opendir() thoroughly

This commit is contained in:
Zeev Suraski 2000-06-29 21:51:40 +00:00
parent 4e5597e061
commit 7fb72c1726
4 changed files with 14 additions and 5 deletions

6
NEWS
View file

@ -2,6 +2,12 @@ PHP 4.0 NEWS
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2000, Version 4.0.2 ?? ??? 2000, Version 4.0.2
- Fixed opendir() again. It should actually work well continuously now (Zeev)
- Added three additional arguments to be sent to a user-defined error handler -
the filename and line number in which the error occured, and the context
(the local variables) of the error (Zeev, Zend Engine)
- Improved the error handling code to handle an error in a user-defined error
handling function (Zeev, Zend Engine)
- Added an optional parameter to preg_replace() that can be used to - Added an optional parameter to preg_replace() that can be used to
specify how many replacements to make. (Andrei) specify how many replacements to make. (Andrei)

View file

@ -725,6 +725,7 @@ PHP_RINIT_FUNCTION(basic)
PHP_RINIT(filestat)(INIT_FUNC_ARGS_PASSTHRU); PHP_RINIT(filestat)(INIT_FUNC_ARGS_PASSTHRU);
PHP_RINIT(syslog)(INIT_FUNC_ARGS_PASSTHRU); PHP_RINIT(syslog)(INIT_FUNC_ARGS_PASSTHRU);
PHP_RINIT(assert)(INIT_FUNC_ARGS_PASSTHRU); PHP_RINIT(assert)(INIT_FUNC_ARGS_PASSTHRU);
PHP_RINIT(dir)(INIT_FUNC_ARGS_PASSTHRU);
return SUCCESS; return SUCCESS;
} }

View file

@ -113,9 +113,12 @@ static void _dir_dtor(php_dir *dirp)
efree(dirp); efree(dirp);
} }
static void php_dir_init_globals(DIRLS_D) PHP_RINIT_FUNCTION(dir)
{ {
DIRLS_FETCH();
DIRG(default_dir) = -1; DIRG(default_dir) = -1;
return SUCCESS;
} }
PHP_MINIT_FUNCTION(dir) PHP_MINIT_FUNCTION(dir)
@ -128,9 +131,7 @@ PHP_MINIT_FUNCTION(dir)
dir_class_entry_ptr = zend_register_internal_class(&dir_class_entry); dir_class_entry_ptr = zend_register_internal_class(&dir_class_entry);
#ifdef ZTS #ifdef ZTS
dir_globals_id = ts_allocate_id(sizeof(php_dir_globals), (ts_allocate_ctor) php_dir_init_globals, NULL); dir_globals_id = ts_allocate_id(sizeof(php_dir_globals), NULL, NULL);
#else
php_dir_init_globals(DIRLS_C);
#endif #endif
return SUCCESS; return SUCCESS;

View file

@ -23,7 +23,8 @@
#define _PHP_DIR_H #define _PHP_DIR_H
/* directory functions */ /* directory functions */
extern PHP_MINIT_FUNCTION(dir); PHP_MINIT_FUNCTION(dir);
PHP_RINIT_FUNCTION(dir);
PHP_FUNCTION(opendir); PHP_FUNCTION(opendir);
PHP_FUNCTION(closedir); PHP_FUNCTION(closedir);
PHP_FUNCTION(chdir); PHP_FUNCTION(chdir);