]> granicus.if.org Git - php/commitdiff
Add virtual_real_chdir_file. Silly name for a useful function.
authorSascha Schumann <sas@php.net>
Sun, 20 Aug 2000 12:49:56 +0000 (12:49 +0000)
committerSascha Schumann <sas@php.net>
Sun, 20 Aug 2000 12:49:56 +0000 (12:49 +0000)
main/php.h
main/php_virtual_cwd.c
main/php_virtual_cwd.h

index 0fa464dc1412dc18bb4b1a5b51a50dabe9a9bbbb..b0b25500d5c31f59499289fa15583516a0b648a8 100644 (file)
@@ -324,7 +324,7 @@ PHPAPI int cfg_get_string(char *varname, char **result);
 #define V_OPEN(open_args) open open_args
 #define V_CREAT(path, mode) creat(path, mode)
 #define V_CHDIR(path) chdir(path)
-#define V_CHDIR_FILE(path) chdir_file(path)
+#define V_CHDIR_FILE(path) virtual_real_chdir_file(path)
 #define V_GETWD(buf) getwd(buf)
 #define V_STAT(path, buff) stat(path, buff)
 #define V_LSTAT(path, buff) lstat(path, buff)
index 4d09ce6750ba478629677bb0d78166f93a52e450..5b2838385c0a54616c4ed07e2311beb1c9b1ac30 100644 (file)
@@ -745,6 +745,26 @@ CWD_API FILE *virtual_popen(const char *command, const char *type)
 
 #endif
 
+/* taken from Apache 1.3 */
+
+CWD_API void virtual_real_chdir_file(const char *file)
+{
+    const char *x;
+    char buf[4096];
+
+    x = strrchr(file, '/');
+    if (x == NULL) {
+       chdir(file);
+    }
+    else if (x - file < sizeof(buf) - 1) {
+       memcpy(buf, file, x - file);
+       buf[x - file] = '\0';
+       chdir(buf);
+    }
+    /* XXX: well, this is a silly function, no method of reporting an
+     * error... ah well. */
+}
+
 #if 0
 
 main(void)
index 53d569f22f58ec59ed593aafd302388850cbc6a3..d5416513d5a494381f98d8e63c9a7a46820fcb9b 100644 (file)
@@ -78,6 +78,7 @@ 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_real_chdir_file(char *path);
 CWD_API int virtual_filepath(char *path, char **filepath);
 CWD_API char *virtual_realpath(char *path, char *real_path);
 CWD_API FILE *virtual_fopen(const char *path, const char *mode);