=?UTF-8?Q?Andr=C3=A9=20Hentschel=20?=: msvcrt: Implement freopen_s.

Alexandre Julliard julliard at winehq.org
Tue Nov 15 13:17:31 CST 2011


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

Author: André Hentschel <nerv at dawncrow.de>
Date:   Sun Nov 13 18:33:00 2011 +0100

msvcrt: Implement freopen_s.

---

 dlls/msvcr100/msvcr100.spec |    2 +-
 dlls/msvcr80/msvcr80.spec   |    2 +-
 dlls/msvcr90/msvcr90.spec   |    2 +-
 dlls/msvcrt/file.c          |   19 +++++++++++++++++++
 dlls/msvcrt/msvcrt.spec     |    2 +-
 5 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 76618ea..87cae04 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -1469,7 +1469,7 @@
 @ stub fread_s
 @ cdecl free(ptr) msvcrt.free
 @ cdecl freopen(str str ptr) msvcrt.freopen
-@ stub freopen_s
+@ cdecl freopen_s(ptr str str ptr) msvcrt.freopen_s
 @ cdecl frexp(double ptr) msvcrt.frexp
 @ varargs fscanf(ptr str) msvcrt.fscanf
 @ varargs fscanf_s(ptr str) msvcrt.fscanf_s
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index f3c0a94..06751ef 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -1325,7 +1325,7 @@
 @ stub fread_s
 @ cdecl free(ptr) msvcrt.free
 @ cdecl freopen(str str ptr) msvcrt.freopen
-@ stub freopen_s
+@ cdecl freopen_s(ptr str str ptr) msvcrt.freopen_s
 @ cdecl frexp(double ptr) msvcrt.frexp
 @ varargs fscanf(ptr str) msvcrt.fscanf
 @ varargs fscanf_s(ptr str) msvcrt.fscanf_s
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index e40d2e9..688bdc6 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -1326,7 +1326,7 @@
 @ stub fread_s
 @ cdecl free(ptr) msvcrt.free
 @ cdecl freopen(str str ptr) msvcrt.freopen
-@ stub freopen_s
+@ cdecl freopen_s(ptr str str ptr) msvcrt.freopen_s
 @ cdecl frexp(double ptr) msvcrt.frexp
 @ varargs fscanf(ptr str) msvcrt.fscanf
 @ varargs fscanf_s(ptr str) msvcrt.fscanf_s
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index b6af98f..f3200eb 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -3300,6 +3300,25 @@ MSVCRT_FILE* CDECL MSVCRT_freopen(const char *path, const char *mode, MSVCRT_FIL
 }
 
 /*********************************************************************
+ *      freopen_s (MSVCRT.@)
+ */
+int CDECL MSVCRT_freopen_s(MSVCRT_FILE** pFile,
+        const char *path, const char *mode, MSVCRT_FILE* file)
+{
+    if (!MSVCRT_CHECK_PMT(pFile != NULL) || !MSVCRT_CHECK_PMT(path != NULL) ||
+        !MSVCRT_CHECK_PMT(mode != NULL) || !MSVCRT_CHECK_PMT(file != NULL)) {
+        *MSVCRT__errno() = MSVCRT_EINVAL;
+        return MSVCRT_EINVAL;
+    }
+
+    *pFile = MSVCRT_freopen(path, mode, file);
+
+    if(!*pFile)
+        return *MSVCRT__errno();
+    return 0;
+}
+
+/*********************************************************************
  *		fsetpos (MSVCRT.@)
  */
 int CDECL MSVCRT_fsetpos(MSVCRT_FILE* file, MSVCRT_fpos_t *pos)
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index c8c710d..f2b5e33 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -1269,7 +1269,7 @@
 @ cdecl fread(ptr long long ptr) MSVCRT_fread
 @ cdecl free(ptr) MSVCRT_free
 @ cdecl freopen(str str ptr) MSVCRT_freopen
-# stub freopen_s(ptr str str ptr)
+@ cdecl freopen_s(ptr str str ptr) MSVCRT_freopen_s
 @ cdecl frexp(double ptr) MSVCRT_frexp
 @ cdecl -arch=x86_64 frexpf(float ptr) MSVCRT_frexpf
 @ varargs fscanf(ptr str) MSVCRT_fscanf




More information about the wine-cvs mailing list