summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>2000-10-26 05:21:52 +0000
committerAndi Gutmans <andi@php.net>2000-10-26 05:21:52 +0000
commitfd7284a66509ecf715cef2452880352b3d71e878 (patch)
tree0d58be053643f6e67427099bf2e0834d2c86865f
parente5b0945e4c6c41cd52bd35a445a8ce1a691940aa (diff)
downloadphp-git-fd7284a66509ecf715cef2452880352b3d71e878.tar.gz
- Add V_RENAME() by "Daniel Beulshausen" <daniel@php4win.de>.
- It is untested and all places which use rename() in PHP should now use - V_RENAME().
-rw-r--r--TSRM/tsrm_virtual_cwd.c22
-rw-r--r--TSRM/tsrm_virtual_cwd.h3
2 files changed, 25 insertions, 0 deletions
diff --git a/TSRM/tsrm_virtual_cwd.c b/TSRM/tsrm_virtual_cwd.c
index 64d58f49bf..a394e12128 100644
--- a/TSRM/tsrm_virtual_cwd.c
+++ b/TSRM/tsrm_virtual_cwd.c
@@ -574,6 +574,28 @@ CWD_API int virtual_creat(const char *path, mode_t mode)
return f;
}
+CWD_API int virtual_rename(char *oldname, char *newname)
+{
+ cwd_state old_state;
+ cwd_state new_state;
+ int retval;
+ CWDLS_FETCH();
+
+ CWD_STATE_COPY(&old_state, &CWDG(cwd));
+ virtual_file_ex(&old_state, oldname, NULL);
+ oldname = old_state.cwd;
+
+ CWD_STATE_COPY(&new_state, &CWDG(cwd));
+ virtual_file_ex(&new_state, newname, NULL);
+ newname = new_state.cwd;
+
+ retval = rename(oldname, newname);
+
+ CWD_STATE_FREE(&old_state);
+ CWD_STATE_FREE(&new_state);
+
+ return retval;
+}
CWD_API int virtual_stat(const char *path, struct stat *buf)
{
diff --git a/TSRM/tsrm_virtual_cwd.h b/TSRM/tsrm_virtual_cwd.h
index 1ba78a6e4a..db0afdd897 100644
--- a/TSRM/tsrm_virtual_cwd.h
+++ b/TSRM/tsrm_virtual_cwd.h
@@ -104,6 +104,7 @@ CWD_API char *virtual_realpath(const char *path, char *real_path);
CWD_API FILE *virtual_fopen(const char *path, const char *mode);
CWD_API int virtual_open(const char *path, int flags, ...);
CWD_API int virtual_creat(const char *path, mode_t mode);
+CWD_API int virtual_rename(char *oldname, char *newname);
CWD_API int virtual_stat(const char *path, struct stat *buf);
#ifndef TSRM_WIN32
CWD_API int virtual_lstat(const char *path, struct stat *buf);
@@ -159,6 +160,7 @@ typedef struct _virtual_cwd_globals {
#define V_CHDIR_FILE(path) virtual_chdir_file(path, virtual_chdir)
#define V_GETWD(buf)
#define V_REALPATH(path,real_path) virtual_realpath(path,real_path)
+#define V_RENAME(oldname,newname) virtual_rename(oldname,newname)
#define V_STAT(path, buff) virtual_stat(path, buff)
#ifdef TSRM_WIN32
#define V_LSTAT(path, buff) virtual_stat(path, buff)
@@ -184,6 +186,7 @@ typedef struct _virtual_cwd_globals {
#define V_FOPEN(path, mode) fopen(path, mode)
#define V_OPEN(open_args) open open_args
#define V_CREAT(path, mode) creat(path, mode)
+#define V_RENAME(oldname,newname) rename(oldname,newname)
#define V_CHDIR(path) chdir(path)
#define V_CHDIR_FILE(path) virtual_chdir_file(path, chdir)
#define V_GETWD(buf) getwd(buf)