summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbluhm <>2020-01-13 16:51:04 +0000
committerbluhm <>2020-01-13 16:51:04 +0000
commit6031db198e734431ffd3c59e4e4ec3afb103042d (patch)
tree0709f3cbdca623f6c0ad78c787bc7e6b29089b56 /src
parente0e501bf6a71ed70fd4978ad8b97a2d70a3d6808 (diff)
downloadopenbsd-6031db198e734431ffd3c59e4e4ec3afb103042d.tar.gz
openbsd-6031db198e734431ffd3c59e4e4ec3afb103042d.tar.bz2
openbsd-6031db198e734431ffd3c59e4e4ec3afb103042d.zip
Fix printf compiler warnings in wfp regress. Convert wchar to a
printable error message when failing.
Diffstat (limited to 'src')
-rw-r--r--src/regress/lib/libc/wprintf/wfp.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/regress/lib/libc/wprintf/wfp.c b/src/regress/lib/libc/wprintf/wfp.c
index fc3120b53c..fa9bc07166 100644
--- a/src/regress/lib/libc/wprintf/wfp.c
+++ b/src/regress/lib/libc/wprintf/wfp.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: wfp.c,v 1.1 2011/04/24 08:00:22 stsp Exp $ */ 1/* $OpenBSD: wfp.c,v 1.2 2020/01/13 16:51:04 bluhm Exp $ */
2/*- 2/*-
3 * Copyright (c) 2002, 2005 David Schultz <das@FreeBSD.org> 3 * Copyright (c) 2002, 2005 David Schultz <das@FreeBSD.org>
4 * All rights reserved. 4 * All rights reserved.
@@ -201,18 +201,27 @@ smash_stack(void)
201} 201}
202 202
203void 203void
204_testfmt(const wchar_t *result, int line, const char *argstr, const wchar_t *fmt,...) 204_testfmt(const wchar_t *result, int line, const char *argstr,
205 const wchar_t *fmt, ...)
205{ 206{
206 wchar_t s[100]; 207 wchar_t ws[100];
207 va_list ap; 208 va_list ap;
208 209
209 va_start(ap, fmt); 210 va_start(ap, fmt);
210 smash_stack(); 211 smash_stack();
211 vswprintf(s, sizeof(s), fmt, ap); 212 vswprintf(ws, sizeof(ws)/sizeof(ws[0]), fmt, ap);
212 if (wcscmp(result, s) != 0) { 213 if (wcscmp(result, ws) != 0) {
213 fprintf(stderr, 214 const wchar_t *p = ws;
214 "%d: printf(\"%s\", %s) ==> [%s], expected [%s]\n", 215 char f[100], s[100], r[100];
215 line, (char*)fmt, argstr, s, result); 216
216 abort(); 217 memset(f, 0, sizeof(f));
218 memset(s, 0, sizeof(s));
219 memset(r, 0, sizeof(r));
220 wcsrtombs(f, &fmt, sizeof(f) - 1, NULL);
221 wcsrtombs(s, &p, sizeof(s) - 1, NULL);
222 wcsrtombs(r, &result, sizeof(r) - 1, NULL);
223
224 errx(1, "line %d: printf(\"%s\", %s) ==> [%s], expected [%s]",
225 line, f, argstr, s, r);
217 } 226 }
218} 227}