From: Andi Gutmans Date: Tue, 23 May 2000 14:36:27 +0000 (+0000) Subject: - Support virtual unlink() X-Git-Tag: PRE_EIGHT_BYTE_ALLOC_PATCH~315 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=521f03c184fad08cc6943decd53df29f4a3ed830;p=php - Support virtual unlink() --- 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)