]> granicus.if.org Git - php/commitdiff
add opendir to VIRTUAL_DIR
authorStanislav Malyshev <stas@php.net>
Sun, 4 Jun 2000 08:29:11 +0000 (08:29 +0000)
committerStanislav Malyshev <stas@php.net>
Sun, 4 Jun 2000 08:29:11 +0000 (08:29 +0000)
ext/standard/dir.c
main/php.h
main/php_virtual_cwd.c
main/php_virtual_cwd.h

index 93aef51e7b4b29fb27180656101032454c2531be..a79dac8c78f1edb597b26fa755b12df0b1cdfad7 100644 (file)
@@ -141,7 +141,7 @@ static void _php_do_opendir(INTERNAL_FUNCTION_PARAMETERS, int createobject)
        
        dirp = emalloc(sizeof(php_dir));
 
-       dirp->dir = opendir((*arg)->value.str.val);
+       dirp->dir = V_OPENDIR((*arg)->value.str.val);
        
        if (! dirp->dir) {
                efree(dirp);
index 20d0f1cbde41686ff3b3552d4520514ce616b2cd..59fdf6a37009ba0753bf95e2c66094b2af5be800 100644 (file)
@@ -306,6 +306,7 @@ PHPAPI int cfg_get_string(char *varname, char **result);
 #define V_UNLINK(path) virtual_unlink(path)
 #define V_MKDIR(pathname, mode) virtual_mkdir(pathname, mode)
 #define V_RMDIR(pathname) virtual_rmdir(pathname)
+#define V_OPENDIR(pathname) virtual_opendir(pathname)
 #else
 #define V_GETCWD(buff, size) getcwd(buff,size)
 #define V_FOPEN(path, mode)  fopen(path, mode)
@@ -319,6 +320,7 @@ PHPAPI int cfg_get_string(char *varname, char **result);
 #define V_UNLINK(path) unlink(path)
 #define V_MKDIR(pathname, mode) mkdir(pathname, mode)
 #define V_RMDIR(pathname) rmdir(pathname)
+#define V_OPENDIR(pathname) opendir(pathname)
 #endif
 
 #include "zend_constants.h"
index 412929db1516956ec10e6d50954889dbb10f10fc..03ba8f4b2115a40a931093c45227adeebc6b62a1 100644 (file)
@@ -533,6 +533,21 @@ CWD_API int virtual_rmdir(const char *pathname)
        return retval;
 }
 
+CWD_API DIR *virtual_opendir(const char *pathname)
+{
+       cwd_state new_state;
+       DIR *retval;
+       CWDLS_FETCH();
+
+       CWD_STATE_COPY(&new_state, &CWDG(cwd));
+       virtual_file_ex(&new_state, pathname, NULL);
+
+       retval = opendir(new_state.cwd);
+
+       CWD_STATE_FREE(&new_state);
+       return retval;
+}
+
 #if 0
 
 main(void)
index dfd810a11886fb4ac5718706795c91796f01127c..9d6150a07c147018bf66ee0435cb7b4d84d9ba5e 100644 (file)
 #include <unistd.h>
 #endif
 
+#ifdef ZEND_WIN32
+#include "win32/readdir.h"
+#else
+#ifdef HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+#endif
 
 #ifdef PHP_EXPORTS
 #define CWD_EXPORTS
@@ -51,6 +58,7 @@ CWD_API int virtual_lstat(const char *path, struct stat *buf);
 CWD_API int virtual_unlink(const char *path);
 CWD_API int virtual_mkdir(const char *pathname, mode_t mode);
 CWD_API int virtual_rmdir(const char *pathname);
+CWD_API DIR *virtual_opendir(const char *pathname);
 
 CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func verify_path);