summaryrefslogtreecommitdiff
path: root/main/php_virtual_cwd.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/php_virtual_cwd.c')
-rw-r--r--main/php_virtual_cwd.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/main/php_virtual_cwd.c b/main/php_virtual_cwd.c
index 820db5ce40..470c28a2b3 100644
--- a/main/php_virtual_cwd.c
+++ b/main/php_virtual_cwd.c
@@ -286,6 +286,24 @@ int virtual_chdir(char *path)
return virtual_file_ex(&CWDG(cwd), path, php_is_dir_ok);
}
+int virtual_chdir_file(char *path)
+{
+ int length = strlen(path);
+
+ if (length == 0) {
+ return 1; /* Can't CD to empty string */
+ }
+ while(--length >= 0 && !IS_SLASH(path[length])) {
+ }
+
+ if (length == -1) {
+ return virtual_chdir(path);
+ }
+ path[length] = DEFAULT_SLASH;
+ return virtual_chdir(path);
+}
+
+
int virtual_filepath(char *path, char **filepath)
{
cwd_state new_state;