summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/db/db.c4
-rw-r--r--ext/session/mod_files.c4
-rw-r--r--ext/standard/file.c2
-rw-r--r--ext/standard/link.c2
-rw-r--r--main/php.h2
-rw-r--r--main/php_virtual_cwd.c15
-rw-r--r--main/php_virtual_cwd.h2
7 files changed, 25 insertions, 6 deletions
diff --git a/ext/db/db.c b/ext/db/db.c
index 07cdefc5ba..ed64c9c14a 100644
--- a/ext/db/db.c
+++ b/ext/db/db.c
@@ -399,7 +399,7 @@ dbm_info *php_dbm_open(char *filename, char *mode) {
#if NFS_HACK
if (lockfn) {
- unlink(lockfn);
+ V_UNLINK(lockfn);
}
#endif
if (lockfn) efree(lockfn);
@@ -434,7 +434,7 @@ int php_dbm_close(dbm_info *info) {
dbf = info->dbf;
#if NFS_HACK
- unlink(info->lockfn);
+ V_UNLINK(info->lockfn);
#else
if (info->lockfn) {
lockfd = V_OPEN((info->lockfn,O_RDWR,0644));
diff --git a/ext/session/mod_files.c b/ext/session/mod_files.c
index c3fc91bb3f..aefebc1df5 100644
--- a/ext/session/mod_files.c
+++ b/ext/session/mod_files.c
@@ -178,7 +178,7 @@ static int _ps_files_cleanup_dir(const char *dirname, int maxlifetime)
V_STAT(buf, &sbuf) == 0 &&
/* is it expired? */
(now - sbuf.st_atime) > maxlifetime) {
- unlink(buf);
+ V_UNLINK(buf);
nrdels++;
}
}
@@ -276,7 +276,7 @@ PS_DESTROY_FUNC(files)
if (!_ps_files_path_create(buf, sizeof(buf), data, key))
return FAILURE;
- unlink(buf);
+ V_UNLINK(buf);
return SUCCESS;
}
diff --git a/ext/standard/file.c b/ext/standard/file.c
index 9c42e108f9..57569e73b0 100644
--- a/ext/standard/file.c
+++ b/ext/standard/file.c
@@ -231,7 +231,7 @@ static void _file_socket_dtor(int *sock)
static void _file_upload_dtor(char *file)
{
- unlink(file);
+ V_UNLINK(file);
}
diff --git a/ext/standard/link.c b/ext/standard/link.c
index ffe14235ef..2fb126afa3 100644
--- a/ext/standard/link.c
+++ b/ext/standard/link.c
@@ -181,7 +181,7 @@ PHP_FUNCTION(unlink)
RETURN_FALSE;
}
- ret = unlink((*filename)->value.str.val);
+ ret = V_UNLINK((*filename)->value.str.val);
if (ret == -1) {
php_error(E_WARNING, "Unlink failed (%s)", strerror(errno));
RETURN_FALSE;
diff --git a/main/php.h b/main/php.h
index cdbbaabeb2..9cc2f8b040 100644
--- a/main/php.h
+++ b/main/php.h
@@ -308,6 +308,7 @@ PHPAPI int cfg_get_string(char *varname, char **result);
#else
#define V_LSTAT(path, buff) virtual_lstat(path, buff)
#endif
+#define V_UNLINK(path) virtual_unlink(path)
#else
#define V_GETCWD(buff, size) getcwd(buff,size)
#define V_FOPEN(path, mode) fopen(path, mode)
@@ -318,6 +319,7 @@ PHPAPI int cfg_get_string(char *varname, char **result);
#define V_GETWD(buf) getwd(buf)
#define V_STAT(path, buff) stat(path, buff)
#define V_LSTAT(path, buff) lstat(path, buff)
+#define V_UNLINK(path) unlink(path)
#endif
#include "zend_constants.h"
diff --git a/main/php_virtual_cwd.c b/main/php_virtual_cwd.c
index 3a1097963c..765d3215d9 100644
--- a/main/php_virtual_cwd.c
+++ b/main/php_virtual_cwd.c
@@ -471,6 +471,21 @@ CWD_API int virtual_lstat(const char *path, struct stat *buf)
#endif
+CWD_API int virtual_unlink(const char *path)
+{
+ cwd_state new_state;
+ int retval;
+ CWDLS_FETCH();
+
+ CWD_STATE_COPY(&new_state, &CWDG(cwd));
+
+ virtual_file_ex(&new_state, path, NULL);
+
+ retval = unlink(new_state.cwd);
+ CWD_STATE_FREE(&new_state);
+ return retval;
+}
+
#if 0
main(void)
diff --git a/main/php_virtual_cwd.h b/main/php_virtual_cwd.h
index 5622c2d0fd..c893c8d020 100644
--- a/main/php_virtual_cwd.h
+++ b/main/php_virtual_cwd.h
@@ -48,6 +48,8 @@ CWD_API int virtual_stat(const char *path, struct stat *buf);
#ifndef ZEND_WIN32
CWD_API int virtual_lstat(const char *path, struct stat *buf);
#endif
+CWD_API int virtual_unlink(const char *path);
+
CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func verify_path);
ZEND_BEGIN_MODULE_GLOBALS(cwd)