summaryrefslogtreecommitdiffstats
path: root/newlib/testsuite/newlib.stdio/swprintf.c
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2011-07-15 17:20:16 +0000
committerJeff Johnston <jjohnstn@redhat.com>2011-07-15 17:20:16 +0000
commit7890be6e7d2658fd14c793c77be4d91a461abce8 (patch)
tree84abb89a995479358c4c27fe0b198059ee5c009f /newlib/testsuite/newlib.stdio/swprintf.c
parentc842ff73e769b4c35007c866778be0b3840160fe (diff)
downloadcygnal-7890be6e7d2658fd14c793c77be4d91a461abce8.tar.gz
cygnal-7890be6e7d2658fd14c793c77be4d91a461abce8.tar.bz2
cygnal-7890be6e7d2658fd14c793c77be4d91a461abce8.zip
2011-07-15 Yufeng Zhang <yufeng.zhang@arm.com>
* libc/stdio/vfwprintf.c (wcvt): Add a new parameter len of type int. *length is set to the value of (rev - digits) regardless of whether _MB_CAPABLE is defined or not. Replace BUF with len in calling _mbsnrtowcs_r and also in the loop where _MB_CAPABLE is not defined. (_VFWPRINTF_R): Call wcvt with an extra argument. Call wcvt again with allocated new buffer if buf is not large enough for the conversion. * testsuite/newlib.stdio/stdio.exp: New. * testsuite/newlib.stdio/swprintf.c: Likewise.
Diffstat (limited to 'newlib/testsuite/newlib.stdio/swprintf.c')
-rw-r--r--newlib/testsuite/newlib.stdio/swprintf.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/newlib/testsuite/newlib.stdio/swprintf.c b/newlib/testsuite/newlib.stdio/swprintf.c
new file mode 100644
index 000000000..b925da487
--- /dev/null
+++ b/newlib/testsuite/newlib.stdio/swprintf.c
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2011 by ARM Ltd. All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software
+ * is freely granted, provided that this notice is preserved.
+ */
+
+#include <stdio.h>
+#include <newlib.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include "check.h"
+
+int main()
+{
+#if defined(INTEGER_ONLY) || defined(NO_FLOATING_POINT)
+
+#else
+ char cbuf[512];
+ wchar_t wcbuf[512], wcbuf2[512];
+ double val = 1E+308;
+ snprintf(cbuf, 512, "%.*f", 3, val);
+ swprintf(wcbuf, 512, L"%.*f", 3, val);
+ mbstowcs(wcbuf2, cbuf, 512);
+
+ CHECK (wcscmp(wcbuf, wcbuf2) == 0);
+#endif
+
+ exit (0);
+}