From e39a6e2ceaa5a2ad70f4f6aa5ed7056b25a52ccd Mon Sep 17 00:00:00 2001 From: Valentyn Korniienko Date: Thu, 18 Jun 2020 16:26:13 +0300 Subject: [PATCH] multibyte: Fixed access-> waccess to file for Windows Plarform Reviewed-by: Marcel Raad Closes #5580 --- lib/curl_multibyte.c | 21 +++++++++++++++++++++ lib/curl_setup.h | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/lib/curl_multibyte.c b/lib/curl_multibyte.c index 5345d7b366..2c8925b531 100644 --- a/lib/curl_multibyte.c +++ b/lib/curl_multibyte.c @@ -129,4 +129,25 @@ int curlx_win32_stat(const char *path, struct_stat *buffer) 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 + free(path_w); +#endif + + return result; +} + #endif /* USE_WIN32_LARGE_FILES || USE_WIN32_SMALL_FILES */ diff --git a/lib/curl_setup.h b/lib/curl_setup.h index 82b962b89a..d76c630d05 100644 --- a/lib/curl_setup.h +++ b/lib/curl_setup.h @@ -335,8 +335,10 @@ # define struct_stat struct _stati64 # define LSEEK_ERROR (__int64)-1 # define fopen(fname,mode) curlx_win32_fopen(fname, mode) +# define access(fname,mode) curlx_win32_access(fname, mode) int curlx_win32_stat(const char *path, struct_stat *buffer); FILE *curlx_win32_fopen(const char *filename, const char *mode); + int curlx_win32_access(const char *path, int mode); #endif /* @@ -354,8 +356,10 @@ # define stat(fname,stp) curlx_win32_stat(fname, stp) # define struct_stat struct _stat # define fopen(fname,mode) curlx_win32_fopen(fname, mode) +# define access(fname,mode) curlx_win32_access(fname, mode) int curlx_win32_stat(const char *path, struct_stat *buffer); FILE *curlx_win32_fopen(const char *filename, const char *mode); + int curlx_win32_access(const char *path, int mode); # endif # define LSEEK_ERROR (long)-1 #endif