Eric Pouech : msvcrt: Implemented _(w)access_s.

Alexandre Julliard julliard at winehq.org
Wed Nov 3 11:37:04 CDT 2010


Module: wine
Branch: master
Commit: cff575fbb35336fe5ef5b2f529e0fa81577f8299
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=cff575fbb35336fe5ef5b2f529e0fa81577f8299

Author: Eric Pouech <eric.pouech at 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




More information about the wine-cvs mailing list