summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/curl_multibyte.c50
1 files changed, 19 insertions, 31 deletions
diff --git a/lib/curl_multibyte.c b/lib/curl_multibyte.c
index 571f1d38a..39b2c587c 100644
--- a/lib/curl_multibyte.c
+++ b/lib/curl_multibyte.c
@@ -130,50 +130,38 @@ int curlx_win32_stat(const char *path, struct_stat *buffer)
int result = -1;
#ifdef _UNICODE
wchar_t *path_w = curlx_convert_UTF8_to_wchar(path);
-#endif /* _UNICODE */
-
+ if(path_w) {
#if defined(USE_WIN32_SMALL_FILES)
-#if defined(_UNICODE)
- if(path_w)
result = _wstat(path_w, buffer);
- else
-#endif /* _UNICODE */
- result = _stat(path, buffer);
-#else /* USE_WIN32_SMALL_FILES */
-#if defined(_UNICODE)
- if(path_w)
+#else
result = _wstati64(path_w, buffer);
- else
+#endif
+ free(path_w);
+ if(result != -1)
+ return result;
+ }
#endif /* _UNICODE */
- result = _stati64(path, buffer);
-#endif /* USE_WIN32_SMALL_FILES */
-#ifdef _UNICODE
- free(path_w);
+#if defined(USE_WIN32_SMALL_FILES)
+ result = _stat(path, buffer);
+#else
+ result = _stati64(path, buffer);
#endif
-
return result;
}
int curlx_win32_access(const char *path, int mode)
{
- int result = -1;
-#ifdef _UNICODE
- wchar_t *path_w = curlx_convert_UTF8_to_wchar(path);
-#endif /* _UNICODE */
-
#if defined(_UNICODE)
- if(path_w)
- result = _waccess(path_w, mode);
- else
-#endif /* _UNICODE */
- result = _access(path, mode);
-
-#ifdef _UNICODE
+ wchar_t *path_w = curlx_convert_UTF8_to_wchar(path);
+ if(path_w) {
+ int result = _waccess(path_w, mode);
free(path_w);
-#endif
-
- return result;
+ if(result != -1)
+ return result;
+ }
+#endif /* _UNICODE */
+ return _access(path, mode);
}
#endif /* USE_WIN32_LARGE_FILES || USE_WIN32_SMALL_FILES */