]> git.saurik.com Git - apple/libc.git/blobdiff - stdio/FreeBSD/vsprintf.c
Libc-1439.100.3.tar.gz
[apple/libc.git] / stdio / FreeBSD / vsprintf.c
index 6cbc3681dc679b613e89d17a28f668e140983b20..9ec7b246a441b9c3bb48744e2b8aad1620d5ce29 100644 (file)
@@ -36,15 +36,20 @@ static char sccsid[] = "@(#)vsprintf.c      8.1 (Berkeley) 6/4/93";
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD: src/lib/libc/stdio/vsprintf.c,v 1.16 2008/04/17 22:17:54 jhb Exp $");
 
+#include "xlocale_private.h"
+
 #include <stdio.h>
 #include <limits.h>
 #include "local.h"
 
 int
-vsprintf(char * __restrict str, const char * __restrict fmt, __va_list ap)
+vsprintf_l(char * __restrict str, locale_t loc, const char * __restrict fmt, __va_list ap)
 {
        int ret;
        FILE f;
+       struct __sFILEX ext;
+       f._extra = &ext;
+       INITEXTRA(&f);
 
        f._file = -1;
        f._flags = __SWR | __SSTR;
@@ -52,7 +57,13 @@ vsprintf(char * __restrict str, const char * __restrict fmt, __va_list ap)
        f._bf._size = f._w = INT_MAX;
        f._orientation = 0;
        memset(&f._mbstate, 0, sizeof(mbstate_t));
-       ret = __vfprintf(&f, fmt, ap);
+       ret = __v2printf(XPRINTF_PLAIN, NULL, &f, loc, fmt, ap);
        *f._p = 0;
        return (ret);
 }
+
+int
+vsprintf(char * __restrict str, const char * __restrict fmt, __va_list ap)
+{
+       return vsprintf_l(str, __current_locale(), fmt, ap);
+}