diff options
Diffstat (limited to 'TSRM/tsrm_virtual_cwd.c')
| -rw-r--r-- | TSRM/tsrm_virtual_cwd.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/TSRM/tsrm_virtual_cwd.c b/TSRM/tsrm_virtual_cwd.c index 27f6dffa68..ecad7b4960 100644 --- a/TSRM/tsrm_virtual_cwd.c +++ b/TSRM/tsrm_virtual_cwd.c @@ -1042,8 +1042,14 @@ CWD_API int virtual_rename(char *oldname, char *newname TSRMLS_DC) /* {{{ */ return -1; } newname = new_state.cwd; - + + /* rename on windows will fail if newname already exists. + MoveFileEx has to be used */ +#ifdef TSRM_WIN32 + retval = (MoveFileEx(oldname, newname, MOVEFILE_REPLACE_EXISTING) == 0) ? -1 : 0; +#else retval = rename(oldname, newname); +#endif CWD_STATE_FREE(&old_state); CWD_STATE_FREE(&new_state); |
