#define TOKENIZER_STRING "/"
#endif
-
/* default macros */
#ifndef IS_DIRECTORY_UP
efree((s)->cwd); \
(s)->cwd = NULL;
+#ifdef TSRM_WIN32
+# define CWD_STATE_FREE_ERR(state) do { \
+ DWORD last_error = GetLastError(); \
+ CWD_STATE_FREE(state); \
+ SetLastError(last_error); \
+ } while (0)
+#else
+# define CWD_STATE_FREE_ERR(state) CWD_STATE_FREE(state)
+#endif
+
#ifdef TSRM_WIN32
#ifdef CTL_CODE
static void cwd_globals_dtor(virtual_cwd_globals *cwd_g TSRMLS_DC) /* {{{ */
{
-/* CWD_STATE_FREE(&cwd_globals->cwd); */
realpath_cache_clean(TSRMLS_C);
}
/* }}} */
{
cwd_state new_state;
FILE *f;
-#ifdef TSRM_WIN32
- DWORD last_error;
-#endif
if (path[0] == '\0') { /* Fail to open empty path */
return NULL;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, path, NULL, CWD_EXPAND TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return NULL;
}
f = fopen(new_state.cwd, mode);
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
+
return f;
}
/* }}} */
{
cwd_state new_state;
int ret;
-#ifdef TSRM_WIN32
- DWORD last_error;
-#endif
CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, pathname, NULL, CWD_REALPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return -1;
}
#if defined(TSRM_WIN32)
ret = tsrm_win32_access(new_state.cwd, mode TSRMLS_CC);
- last_error = GetLastError();
#else
ret = access(new_state.cwd, mode);
#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return ret;
}
{
cwd_state new_state;
int ret;
-#ifdef TSRM_WIN32
- DWORD last_error;
-#endif
CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return -1;
}
#ifdef TSRM_WIN32
ret = win32_utime(new_state.cwd, buf);
- last_error = GetLastError();
#else
ret = utime(new_state.cwd, buf);
#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return ret;
}
/* }}} */
{
cwd_state new_state;
int ret;
-#ifdef TSRM_WIN32
- DWORD last_error;
-#endif
CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return -1;
}
ret = chmod(new_state.cwd, mode);
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return ret;
}
/* }}} */
{
cwd_state new_state;
int ret;
-#ifdef TSRM_WIN32
- DWORD last_error;
-#endif
CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, filename, NULL, CWD_REALPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return -1;
}
ret = chown(new_state.cwd, owner, group);
}
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return ret;
}
/* }}} */
{
cwd_state new_state;
int f;
-#ifdef TSRM_WIN32
- DWORD last_error;
-#endif
CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, path, NULL, CWD_FILEPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return -1;
}
} else {
f = open(new_state.cwd, flags);
}
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return f;
}
/* }}} */
{
cwd_state new_state;
int f;
-#ifdef TSRM_WIN32
- DWORD last_error;
-#endif
CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, path, NULL, CWD_FILEPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return -1;
}
f = creat(new_state.cwd, mode);
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return f;
}
/* }}} */
cwd_state old_state;
cwd_state new_state;
int retval;
-#ifdef TSRM_WIN32
- DWORD last_error;
-#endif
CWD_STATE_COPY(&old_state, &CWDG(cwd));
if (virtual_file_ex(&old_state, oldname, NULL, CWD_EXPAND TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&old_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&old_state);
return -1;
}
oldname = old_state.cwd;
CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, newname, NULL, CWD_EXPAND TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&old_state);
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&old_state);
+ CWD_STATE_FREE_ERR(&new_state);
return -1;
}
newname = new_state.cwd;
#ifdef TSRM_WIN32
/* MoveFileEx returns 0 on failure, other way 'round for this function */
retval = (MoveFileEx(oldname, newname, MOVEFILE_REPLACE_EXISTING|MOVEFILE_COPY_ALLOWED) == 0) ? -1 : 0;
- last_error = GetLastError();
#else
retval = rename(oldname, newname);
#endif
- CWD_STATE_FREE(&old_state);
- CWD_STATE_FREE(&new_state);
-
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&old_state);
+ CWD_STATE_FREE_ERR(&new_state);
return retval;
}
{
cwd_state new_state;
int retval;
-#ifdef TSRM_WIN32
- DWORD last_error;
-#endif
CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, path, NULL, CWD_REALPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return -1;
}
retval = php_sys_stat(new_state.cwd, buf);
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return retval;
}
/* }}} */
{
cwd_state new_state;
int retval;
-#ifdef TSRM_WIN32
- DWORD last_error;
-#endif
CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, path, NULL, CWD_EXPAND TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return -1;
}
retval = php_sys_lstat(new_state.cwd, buf);
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return retval;
}
/* }}} */
{
cwd_state new_state;
int retval;
-#ifdef TSRM_WIN32
- DWORD last_error;
-#endif
CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, path, NULL, CWD_EXPAND TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return -1;
}
retval = unlink(new_state.cwd);
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return retval;
}
/* }}} */
{
cwd_state new_state;
int retval;
-#ifdef TSRM_WIN32
- DWORD last_error;
-#endif
CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, pathname, NULL, CWD_FILEPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return -1;
}
#ifdef TSRM_WIN32
retval = mkdir(new_state.cwd);
- last_error = GetLastError();
#else
retval = mkdir(new_state.cwd, mode);
#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return retval;
}
/* }}} */
{
cwd_state new_state;
int retval;
-#ifdef TSRM_WIN32
- DWORD last_error;
-#endif
CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, pathname, NULL, CWD_EXPAND TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return -1;
}
retval = rmdir(new_state.cwd);
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return retval;
}
/* }}} */
{
cwd_state new_state;
DIR *retval;
-#ifdef TSRM_WIN32
- DWORD last_error;
-#endif
CWD_STATE_COPY(&new_state, &CWDG(cwd));
if (virtual_file_ex(&new_state, pathname, NULL, CWD_REALPATH TSRMLS_CC)) {
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return NULL;
}
retval = opendir(new_state.cwd);
-#ifdef TSRM_WIN32
- last_error = GetLastError();
-#endif
- CWD_STATE_FREE(&new_state);
-#ifdef TSRM_WIN32
- SetLastError(last_error);
-#endif
+ CWD_STATE_FREE_ERR(&new_state);
return retval;
}
/* }}} */