#define PHP_GETCWD(buff, size) virtual_getcwd(buff,size)
#define PHP_FOPEN(path, mode) virtual_fopen(path, mode)
#define PHP_CHDIR(path) virtual_chdir(path)
+#define PHP_CHDIR_FILE(path) virtual_chdir_file(path)
#define PHP_GETWD(buf)
#else
#define PHP_GETCWD(buff, size) getcwd(buff,size)
#define PHP_FOPEN(path, mode) fopen(path, mode)
#define PHP_CHDIR(path) chdir(path)
+#define PHP_CHDIR_FILE(path) chdir_file(path)
#define PHP_GETWD(buf) getwd(buf)
#endif
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;
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);
SG(server_context) = r;
php_save_umask();
- chdir_file(filename);
+ PHP_CHDIR_FILE(filename);
add_common_vars(r);
add_cgi_vars(r);