[PATCH 5/5] msvcrt: Implement fprintf_s and fwprintf_s.
Eryk Wieliczko
ewdevel at gmail.com
Wed Nov 24 14:12:38 CST 2010
---
dlls/msvcr100/msvcr100.spec | 4 ++--
dlls/msvcr80/msvcr80.spec | 4 ++--
dlls/msvcr90/msvcr90.spec | 4 ++--
dlls/msvcrt/file.c | 26 ++++++++++++++++++++++++++
dlls/msvcrt/msvcrt.spec | 4 ++--
include/msvcrt/stdio.h | 2 ++
include/msvcrt/wchar.h | 1 +
7 files changed, 37 insertions(+), 8 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index b0b325f..eb3cb22 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -1459,7 +1459,7 @@
@ cdecl fopen(str str) msvcrt.fopen
@ cdecl fopen_s(ptr str str) msvcrt.fopen_s
@ varargs fprintf(ptr str) msvcrt.fprintf
-@ stub fprintf_s
+@ varargs fprintf_s(ptr str) msvcrt.fprintf_s
@ cdecl fputc(long ptr) msvcrt.fputc
@ cdecl fputs(str ptr) msvcrt.fputs
@ cdecl fputwc(long ptr) msvcrt.fputwc
@@ -1476,7 +1476,7 @@
@ cdecl fsetpos(ptr ptr) msvcrt.fsetpos
@ cdecl ftell(ptr) msvcrt.ftell
@ varargs fwprintf(ptr wstr) msvcrt.fwprintf
-@ stub fwprintf_s
+@ varargs fwprintf_s(ptr str) msvcrt.fwprintf_s
@ cdecl fwrite(ptr long long ptr) msvcrt.fwrite
@ varargs fwscanf(ptr wstr) msvcrt.fwscanf
@ varargs fwscanf_s(ptr wstr) msvcrt.fwscanf_s
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 742144d..ab74956 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -1315,7 +1315,7 @@
@ cdecl fopen(str str) msvcrt.fopen
@ cdecl fopen_s(ptr str str) msvcrt.fopen_s
@ varargs fprintf(ptr str) msvcrt.fprintf
-@ stub fprintf_s
+@ varargs fprintf_s(ptr str) msvcrt.fprintf_s
@ cdecl fputc(long ptr) msvcrt.fputc
@ cdecl fputs(str ptr) msvcrt.fputs
@ cdecl fputwc(long ptr) msvcrt.fputwc
@@ -1332,7 +1332,7 @@
@ cdecl fsetpos(ptr ptr) msvcrt.fsetpos
@ cdecl ftell(ptr) msvcrt.ftell
@ varargs fwprintf(ptr wstr) msvcrt.fwprintf
-@ stub fwprintf_s
+@ varargs fwprintf_s(ptr str) msvcrt.fwprintf_s
@ cdecl fwrite(ptr long long ptr) msvcrt.fwrite
@ varargs fwscanf(ptr wstr) msvcrt.fwscanf
@ varargs fwscanf_s(ptr wstr) msvcrt.fwscanf_s
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 3c0279f..e6da0da 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -1299,7 +1299,7 @@
@ cdecl fopen(str str) msvcrt.fopen
@ cdecl fopen_s(ptr str str) msvcrt.fopen_s
@ varargs fprintf(ptr str) msvcrt.fprintf
-@ stub fprintf_s
+@ varargs fprintf_s(ptr str) msvcrt.fprintf_s
@ cdecl fputc(long ptr) msvcrt.fputc
@ cdecl fputs(str ptr) msvcrt.fputs
@ cdecl fputwc(long ptr) msvcrt.fputwc
@@ -1316,7 +1316,7 @@
@ cdecl fsetpos(ptr ptr) msvcrt.fsetpos
@ cdecl ftell(ptr) msvcrt.ftell
@ varargs fwprintf(ptr wstr) msvcrt.fwprintf
-@ stub fwprintf_s
+@ varargs fwprintf_s(ptr str) msvcrt.fwprintf_s
@ cdecl fwrite(ptr long long ptr) msvcrt.fwrite
@ varargs fwscanf(ptr wstr) msvcrt.fwscanf
@ varargs fwscanf_s(ptr wstr) msvcrt.fwscanf_s
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index a0640ce..697a1b0 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -3518,6 +3518,19 @@ int CDECL MSVCRT_fprintf(MSVCRT_FILE* file, const char *format, ...)
}
/*********************************************************************
+ * fprintf_s (MSVCRT.@)
+ */
+int CDECL MSVCRT_fprintf_s(MSVCRT_FILE* file, const char *format, ...)
+{
+ __ms_va_list valist;
+ int res;
+ __ms_va_start(valist, format);
+ res = MSVCRT_vfprintf_s(file, format, valist);
+ __ms_va_end(valist);
+ return res;
+}
+
+/*********************************************************************
* fwprintf (MSVCRT.@)
*/
int CDECL MSVCRT_fwprintf(MSVCRT_FILE* file, const MSVCRT_wchar_t *format, ...)
@@ -3531,6 +3544,19 @@ int CDECL MSVCRT_fwprintf(MSVCRT_FILE* file, const MSVCRT_wchar_t *format, ...)
}
/*********************************************************************
+ * fwprintf_s (MSVCRT.@)
+ */
+int CDECL MSVCRT_fwprintf_s(MSVCRT_FILE* file, const MSVCRT_wchar_t *format, ...)
+{
+ __ms_va_list valist;
+ int res;
+ __ms_va_start(valist, format);
+ res = MSVCRT_vfwprintf_s(file, format, valist);
+ __ms_va_end(valist);
+ return res;
+}
+
+/*********************************************************************
* printf (MSVCRT.@)
*/
int CDECL MSVCRT_printf(const char *format, ...)
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index d528e06..efa380a 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -1250,7 +1250,7 @@
@ cdecl fopen(str str) MSVCRT_fopen
@ cdecl fopen_s(ptr str str) MSVCRT_fopen_s
@ varargs fprintf(ptr str) MSVCRT_fprintf
-# stub fprintf_s
+@ varargs fprintf_s(ptr str) MSVCRT_fprintf_s
@ cdecl fputc(long ptr) MSVCRT_fputc
@ cdecl fputs(str ptr) MSVCRT_fputs
@ cdecl fputwc(long ptr) MSVCRT_fputwc
@@ -1267,7 +1267,7 @@
@ cdecl fsetpos(ptr ptr) MSVCRT_fsetpos
@ cdecl ftell(ptr) MSVCRT_ftell
@ varargs fwprintf(ptr wstr) MSVCRT_fwprintf
-# stub fwprintf_s
+@ varargs fwprintf_s(ptr wstr) MSVCRT_fwprintf_s
@ cdecl fwrite(ptr long long ptr) MSVCRT_fwrite
@ varargs fwscanf(ptr wstr) MSVCRT_fwscanf
@ varargs fwscanf_s(ptr wstr) MSVCRT_fwscanf_s
diff --git a/include/msvcrt/stdio.h b/include/msvcrt/stdio.h
index 31ba8ca..fa5290f 100644
--- a/include/msvcrt/stdio.h
+++ b/include/msvcrt/stdio.h
@@ -131,6 +131,7 @@ char* __cdecl fgets(char*,int,FILE*);
FILE* __cdecl fopen(const char*,const char*);
errno_t __cdecl fopen_s(FILE**,const char*,const char*);
int __cdecl fprintf(FILE*,const char*,...);
+int __cdecl fprintf_s(FILE*,const char*,...);
int __cdecl fputc(int,FILE*);
int __cdecl fputs(const char*,FILE*);
size_t __cdecl fread(void*,size_t,size_t,FILE*);
@@ -200,6 +201,7 @@ wchar_t* __cdecl fgetws(wchar_t*,int,FILE*);
wint_t __cdecl fputwc(wint_t,FILE*);
int __cdecl fputws(const wchar_t*,FILE*);
int __cdecl fwprintf(FILE*,const wchar_t*,...);
+int __cdecl fwprintf_s(FILE*,const wchar_t*,...);
int __cdecl fputws(const wchar_t*,FILE*);
int __cdecl fwscanf(FILE*,const wchar_t*,...);
int __cdecl fwscanf_s(FILE*,const wchar_t*,...);
diff --git a/include/msvcrt/wchar.h b/include/msvcrt/wchar.h
index e753e3f..285168a 100644
--- a/include/msvcrt/wchar.h
+++ b/include/msvcrt/wchar.h
@@ -295,6 +295,7 @@ wchar_t* __cdecl fgetws(wchar_t*,int,FILE*);
wint_t __cdecl fputwc(wint_t,FILE*);
int __cdecl fputws(const wchar_t*,FILE*);
int __cdecl fwprintf(FILE*,const wchar_t*,...);
+int __cdecl fwprintf_s(FILE*,const wchar_t*,...);
int __cdecl fputws(const wchar_t*,FILE*);
int __cdecl fwscanf(FILE*,const wchar_t*,...);
int __cdecl fwscanf_s(FILE*,const wchar_t*,...);
--
1.7.0.4
More information about the wine-patches
mailing list