Eryk Wieliczko : msvcrt: Implement printf_s and wprintf_s.

Alexandre Julliard julliard at winehq.org
Thu Nov 25 11:18:55 CST 2010


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

Author: Eryk Wieliczko <ewdevel at gmail.com>
Date:   Wed Nov 24 21:12:37 2010 +0100

msvcrt: Implement printf_s and wprintf_s.

---

 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 2600fc0..25467ff 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -1543,7 +1543,7 @@
 @ cdecl perror(str) msvcrt.perror
 @ cdecl pow(double double) msvcrt.pow
 @ varargs printf(str) msvcrt.printf
-@ stub printf_s
+@ varargs printf_s(str) msvcrt.printf_s
 @ cdecl putc(long ptr) msvcrt.putc
 @ cdecl putchar(long) msvcrt.putchar
 @ cdecl puts(str) msvcrt.puts
@@ -1665,6 +1665,6 @@
 @ stub wmemcpy_s
 @ stub wmemmove_s
 @ varargs wprintf(wstr) msvcrt.wprintf
-@ stub wprintf_s
+@ varargs wprintf_s(wstr) msvcrt.wprintf_s
 @ varargs wscanf(wstr) msvcrt.wscanf
 @ varargs wscanf_s(wstr) msvcrt.wscanf_s
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 9823273..742144d 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -1397,7 +1397,7 @@
 @ cdecl perror(str) msvcrt.perror
 @ cdecl pow(double double) msvcrt.pow
 @ varargs printf(str) msvcrt.printf
-@ stub printf_s
+@ varargs printf_s(str) msvcrt.printf_s
 @ cdecl putc(long ptr) msvcrt.putc
 @ cdecl putchar(long) msvcrt.putchar
 @ cdecl puts(str) msvcrt.puts
@@ -1517,6 +1517,6 @@
 @ cdecl wctomb(ptr long) msvcrt.wctomb
 @ stub wctomb_s
 @ varargs wprintf(wstr) msvcrt.wprintf
-@ stub wprintf_s
+@ varargs wprintf_s(wstr) msvcrt.wprintf_s
 @ varargs wscanf(wstr) msvcrt.wscanf
 @ varargs wscanf_s(wstr) msvcrt.wscanf_s
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 4f68724..3c0279f 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -1381,7 +1381,7 @@
 @ cdecl perror(str) msvcrt.perror
 @ cdecl pow(double double) msvcrt.pow
 @ varargs printf(str) msvcrt.printf
-@ stub printf_s
+@ varargs printf_s(str) msvcrt.printf_s
 @ cdecl putc(long ptr) msvcrt.putc
 @ cdecl putchar(long) msvcrt.putchar
 @ cdecl puts(str) msvcrt.puts
@@ -1501,6 +1501,6 @@
 @ cdecl wctomb(ptr long) msvcrt.wctomb
 @ stub wctomb_s
 @ varargs wprintf(wstr) msvcrt.wprintf
-@ stub wprintf_s
+@ varargs wprintf_s(wstr) msvcrt.wprintf_s
 @ varargs wscanf(wstr) msvcrt.wscanf
 @ varargs wscanf_s(wstr) msvcrt.wscanf_s
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index b8f4338..866ea46 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -3526,6 +3526,19 @@ int CDECL MSVCRT_printf(const char *format, ...)
 }
 
 /*********************************************************************
+ *		printf_s (MSVCRT.@)
+ */
+int CDECL MSVCRT_printf_s(const char *format, ...)
+{
+    __ms_va_list valist;
+    int res;
+    __ms_va_start(valist, format);
+    res = MSVCRT_vprintf_s(format, valist);
+    __ms_va_end(valist);
+    return res;
+}
+
+/*********************************************************************
  *		ungetc (MSVCRT.@)
  */
 int CDECL MSVCRT_ungetc(int c, MSVCRT_FILE * file)
@@ -3575,6 +3588,19 @@ int CDECL MSVCRT_wprintf(const MSVCRT_wchar_t *format, ...)
 }
 
 /*********************************************************************
+ *		wprintf_s (MSVCRT.@)
+ */
+int CDECL MSVCRT_wprintf_s(const MSVCRT_wchar_t *format, ...)
+{
+    __ms_va_list valist;
+    int res;
+    __ms_va_start(valist, format);
+    res = MSVCRT_vwprintf_s(format, valist);
+    __ms_va_end(valist);
+    return res;
+}
+
+/*********************************************************************
  *		_getmaxstdio (MSVCRT.@)
  */
 int CDECL _getmaxstdio(void)
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index c861643..d528e06 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -1339,7 +1339,7 @@
 @ cdecl pow(double double) MSVCRT_pow
 @ cdecl -arch=x86_64 powf(float float) MSVCRT_powf
 @ varargs printf(str) MSVCRT_printf
-# stub printf_s
+@ varargs printf_s(str) MSVCRT_printf_s
 @ cdecl putc(long ptr) MSVCRT_putc
 @ cdecl putchar(long) MSVCRT_putchar
 @ cdecl puts(str) MSVCRT_puts
@@ -1470,7 +1470,7 @@
 @ cdecl wctomb(ptr long) MSVCRT_wctomb
 # stub wctomb_s
 @ varargs wprintf(wstr) MSVCRT_wprintf
-# stub wprintf_s
+@ varargs wprintf_s(wstr) MSVCRT_wprintf_s
 @ varargs wscanf(wstr) MSVCRT_wscanf
 @ varargs wscanf_s(wstr) MSVCRT_wscanf_s
 
diff --git a/include/msvcrt/stdio.h b/include/msvcrt/stdio.h
index e8c7671..31ba8ca 100644
--- a/include/msvcrt/stdio.h
+++ b/include/msvcrt/stdio.h
@@ -148,6 +148,7 @@ int    __cdecl getchar(void);
 char*  __cdecl gets(char*);
 void   __cdecl perror(const char*);
 int    __cdecl printf(const char*,...);
+int    __cdecl printf_s(const char*,...);
 int    __cdecl putc(int,FILE*);
 int    __cdecl putchar(int);
 int    __cdecl puts(const char*);
@@ -220,6 +221,7 @@ int      __cdecl vswprintf_s(wchar_t*,size_t,const wchar_t*,__ms_va_list);
 int      __cdecl vwprintf(const wchar_t*,__ms_va_list);
 int      __cdecl vwprintf_s(const wchar_t*,__ms_va_list);
 int      __cdecl wprintf(const wchar_t*,...);
+int      __cdecl wprintf_s(const wchar_t*,...);
 int      __cdecl wscanf(const wchar_t*,...);
 int      __cdecl wscanf_s(const wchar_t*,...);
 #endif /* _WSTDIO_DEFINED */
diff --git a/include/msvcrt/wchar.h b/include/msvcrt/wchar.h
index d0a6a37..e753e3f 100644
--- a/include/msvcrt/wchar.h
+++ b/include/msvcrt/wchar.h
@@ -316,6 +316,7 @@ int      __cdecl vswprintf_s(wchar_t*,size_t,const wchar_t*,__ms_va_list);
 int      __cdecl vwprintf(const wchar_t*,__ms_va_list);
 int      __cdecl vwprintf_s(const wchar_t*,__ms_va_list);
 int      __cdecl wprintf(const wchar_t*,...);
+int      __cdecl wprintf_s(const wchar_t*,...);
 int      __cdecl wscanf(const wchar_t*,...);
 int      __cdecl wscanf_s(const wchar_t*,...);
 #endif /* _WSTDIO_DEFINED */




More information about the wine-cvs mailing list