cvs: /php4 php_virtual_cwd.c php_virtual_cwd.h

From: Date: Wed, 05 Apr 2000 19:02:58 +0000
Subject: cvs: /php4 php_virtual_cwd.c php_virtual_cwd.h
Groups: php.version4 
Request: Send a blank email to php-version4+get-13177@lists.php.net to get a copy of this message
zeev Wed Apr 5 12:02:58 2000 EDT Modified files: /php4 php_virtual_cwd.c php_virtual_cwd.h Log: Fix a problem with the virtual directory mechanism (corruption of the filenames to open) Index: php4/php_virtual_cwd.c diff -u php4/php_virtual_cwd.c:1.24 php4/php_virtual_cwd.c:1.25 --- php4/php_virtual_cwd.c:1.24 Sun Apr 2 13:26:06 2000 +++ php4/php_virtual_cwd.c Wed Apr 5 12:02:28 2000 @@ -19,6 +19,8 @@ #ifndef ZEND_WIN32 #include <unistd.h> +#else +#include <direct.h> #endif #ifndef S_ISDIR @@ -128,7 +130,7 @@ CWD_STATE_FREE(&cwd_globals->cwd); } -void virtual_cwd_startup() +CWD_API void virtual_cwd_startup() { char cwd[1024]; /* Should probably use system define here */ char *result; @@ -143,7 +145,7 @@ ZEND_INIT_MODULE_GLOBALS(cwd, cwd_globals_ctor, cwd_globals_dtor); } -void virtual_cwd_shutdown() +CWD_API void virtual_cwd_shutdown() { #ifndef ZTS cwd_globals_dtor(&cwd_globals); @@ -151,7 +153,7 @@ free(main_cwd_state.cwd); /* Don't use CWD_STATE_FREE because the non global states will probably use emalloc()/efree() */ } -char *virtual_getcwd_ex(int *length) +CWD_API char *virtual_getcwd_ex(int *length) { cwd_state *state; CWDLS_FETCH(); @@ -187,9 +189,9 @@ /* Same semantics as UNIX getcwd() */ -char *virtual_getcwd(char *buf, size_t size) +CWD_API char *virtual_getcwd(char *buf, size_t size) { - int length; + size_t length; char *cwd; cwd = virtual_getcwd_ex(&length); @@ -209,7 +211,7 @@ /* returns 0 for ok, 1 for error */ -int virtual_file_ex(cwd_state *state, char *path, verify_path_func verify_path) +CWD_API int virtual_file_ex(cwd_state *state, char *path, verify_path_func verify_path) { int path_length = strlen(path); char *ptr = path; @@ -222,6 +224,8 @@ if (path_length == 0) return (0); + path = estrndup(path, path_length); + old_state = (cwd_state *) malloc(sizeof(cwd_state)); CWD_STATE_COPY(old_state, state); @@ -289,17 +293,19 @@ free(old_state); + efree(path); + return (ret); } -int virtual_chdir(char *path) +CWD_API int virtual_chdir(char *path) { CWDLS_FETCH(); return virtual_file_ex(&CWDG(cwd), path, php_is_dir_ok); } -int virtual_chdir_file(char *path) +CWD_API int virtual_chdir_file(char *path) { int length = strlen(path); @@ -317,7 +323,7 @@ } -int virtual_filepath(char *path, char **filepath) +CWD_API int virtual_filepath(char *path, char **filepath) { cwd_state new_state; int retval; @@ -330,7 +336,7 @@ return retval; } -FILE *virtual_fopen(char *path, const char *mode) +CWD_API FILE *virtual_fopen(char *path, const char *mode) { cwd_state new_state; FILE *f; Index: php4/php_virtual_cwd.h diff -u php4/php_virtual_cwd.h:1.8 php4/php_virtual_cwd.h:1.9 --- php4/php_virtual_cwd.h:1.8 Sun Apr 2 13:26:06 2000 +++ php4/php_virtual_cwd.h Wed Apr 5 12:02:28 2000 @@ -4,6 +4,10 @@ #include "zend.h" #include "zend_API.h" +#ifdef PHP_EXPORTS +#define CWD_EXPORTS +#endif + #ifdef ZEND_WIN32 # ifdef CWD_EXPORTS # define CWD_API __declspec(dllexport) @@ -21,14 +25,14 @@ typedef int (*verify_path_func)(const cwd_state *); -void virtual_cwd_startup(); -void virtual_cwd_shutdown(); -char *virtual_getcwd_ex(int *length); -char *virtual_getcwd(char *buf, size_t size); -int virtual_chdir(char *path); -int virtual_chdir_file(char *path); -int virtual_filepath(char *path, char **filepath); -FILE *virtual_fopen(char *path, const char *mode); +CWD_API void virtual_cwd_startup(); +CWD_API void virtual_cwd_shutdown(); +CWD_API char *virtual_getcwd_ex(int *length); +CWD_API char *virtual_getcwd(char *buf, size_t size); +CWD_API int virtual_chdir(char *path); +CWD_API int virtual_chdir_file(char *path); +CWD_API int virtual_filepath(char *path, char **filepath); +CWD_API FILE *virtual_fopen(char *path, const char *mode); ZEND_BEGIN_MODULE_GLOBALS(cwd) cwd_state cwd;

« previous php.version4 (#13177) next »