Module: wine Branch: master Commit: cff575fbb35336fe5ef5b2f529e0fa81577f8299 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cff575fbb35336fe5ef5b2f529...
Author: Eric Pouech eric.pouech@orange.fr Date: Tue Nov 2 22:03:41 2010 +0100
msvcrt: Implemented _(w)access_s.
---
dlls/msvcr100/msvcr100.spec | 4 ++-- dlls/msvcr80/msvcr80.spec | 4 ++-- dlls/msvcr90/msvcr90.spec | 4 ++-- dlls/msvcrt/file.c | 31 +++++++++++++++++++++++++++++++ dlls/msvcrt/msvcrt.spec | 4 ++-- 5 files changed, 39 insertions(+), 8 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index ab4e654..e6fadd6 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -490,7 +490,7 @@ @ cdecl _abnormal_termination() msvcrt._abnormal_termination @ stub _abs64 @ cdecl _access(str long) msvcrt._access -@ stub _access_s +@ cdecl _access_s(str long) msvcrt._access_s @ extern _acmdln msvcrt._acmdln @ cdecl _aligned_free(ptr) msvcrt._aligned_free @ cdecl _aligned_malloc(long long) msvcrt._aligned_malloc @@ -1274,7 +1274,7 @@ @ stub _vwprintf_p_l @ stub _vwprintf_s_l @ cdecl _waccess(wstr long) msvcrt._waccess -@ stub _waccess_s +@ cdecl _waccess_s(wstr long) msvcrt.waccess_s @ cdecl _wasctime(ptr) msvcrt._wasctime @ stub _wasctime_s @ stub _wassert diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 7e14ecf..3953b5c 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -314,7 +314,7 @@ @ cdecl _abnormal_termination() msvcrt._abnormal_termination @ stub _abs64 @ cdecl _access(str long) msvcrt._access -@ stub _access_s +@ cdecl _access_s(str long) msvcrt._access_s @ extern _acmdln msvcrt._acmdln @ stdcall -arch=i386 _adj_fdiv_m16i(long) msvcrt._adj_fdiv_m16i @ stdcall -arch=i386 _adj_fdiv_m32(long) msvcrt._adj_fdiv_m32 @@ -1127,7 +1127,7 @@ @ stub _vwprintf_p_l @ stub _vwprintf_s_l @ cdecl _waccess(wstr long) msvcrt._waccess -@ stub _waccess_s +@ cdecl _waccess_s(wstr long) msvcrt._waccess_s @ cdecl _wasctime(ptr) msvcrt._wasctime @ stub _wasctime_s @ stub _wassert diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index c331365..f9188e3 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -306,7 +306,7 @@ @ cdecl _abnormal_termination() msvcrt._abnormal_termination @ stub _abs64 @ cdecl _access(str long) msvcrt._access -@ stub _access_s +@ cdecl _access_s(str long) msvcrt._access_s @ extern _acmdln msvcrt._acmdln @ stdcall -arch=i386 _adj_fdiv_m16i(long) msvcrt._adj_fdiv_m16i @ stdcall -arch=i386 _adj_fdiv_m32(long) msvcrt._adj_fdiv_m32 @@ -1114,7 +1114,7 @@ @ stub _vwprintf_p_l @ stub _vwprintf_s_l @ cdecl _waccess(wstr long) msvcrt._waccess -@ stub _waccess_s +@ cdecl _waccess_s(wstr long) msvcrt._waccess_s @ cdecl _wasctime(ptr) msvcrt._wasctime @ stub _wasctime_s @ stub _wassert diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index 7074120..ab18c1f 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -55,6 +55,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
/* _access() bit flags FIXME: incomplete */ #define MSVCRT_W_OK 0x02 +#define MSVCRT_R_OK 0x04
/* values for wxflag in file descriptor */ #define WX_OPEN 0x01 @@ -507,6 +508,21 @@ int CDECL MSVCRT__access(const char *filename, int mode) }
/********************************************************************* + * _access_s (MSVCRT.@) + */ +int CDECL _access_s(const char *filename, int mode) +{ + if (!MSVCRT_CHECK_PMT(filename != NULL) || + !MSVCRT_CHECK_PMT((mode & ~(MSVCRT_R_OK | MSVCRT_W_OK)) == 0)) + { + *MSVCRT__errno() = MSVCRT_EINVAL; + return -1; + } + + return MSVCRT__access(filename, mode); +} + +/********************************************************************* * _waccess (MSVCRT.@) */ int CDECL _waccess(const MSVCRT_wchar_t *filename, int mode) @@ -529,6 +545,21 @@ int CDECL _waccess(const MSVCRT_wchar_t *filename, int mode) }
/********************************************************************* + * _waccess_s (MSVCRT.@) + */ +int CDECL _waccess_s(const MSVCRT_wchar_t *filename, int mode) +{ + if (!MSVCRT_CHECK_PMT(filename != NULL) || + !MSVCRT_CHECK_PMT((mode & ~(MSVCRT_R_OK | MSVCRT_W_OK)) == 0)) + { + *MSVCRT__errno() = MSVCRT_EINVAL; + return -1; + } + + return _waccess(filename, mode); +} + +/********************************************************************* * _chmod (MSVCRT.@) */ int CDECL MSVCRT__chmod(const char *path, int flags) diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 0a929af..f6baa10 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -271,7 +271,7 @@ @ cdecl _abnormal_termination() # stub _abs64 @ cdecl _access(str long) MSVCRT__access -# stub _access_s +@ cdecl _access_s(str long) @ extern _acmdln MSVCRT__acmdln @ stdcall -arch=i386 _adj_fdiv_m16i(long) @ stdcall -arch=i386 _adj_fdiv_m32(long) @@ -1046,7 +1046,7 @@ # stub _vwprintf_p_l # stub _vwprintf_s_l @ cdecl _waccess(wstr long) -# stub _waccess_s +@ cdecl _waccess_s(wstr long) @ cdecl _wasctime(ptr) MSVCRT__wasctime # stub _wasctime_s # stub _wassert