Module: wine Branch: master Commit: ba5b0c34a83bbf939f5ad70239c4c0c1d5a5e0b7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ba5b0c34a83bbf939f5ad70239...
Author: André Hentschel nerv@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