]> git.saurik.com Git - apple/libc.git/blame - stdio/FreeBSD/ungetwc.c.patch
Libc-763.11.tar.gz
[apple/libc.git] / stdio / FreeBSD / ungetwc.c.patch
CommitLineData
1f2f436a
A
1--- ungetwc.c.bsdnew 2009-11-11 13:33:18.000000000 -0800
2+++ ungetwc.c 2009-11-11 16:30:36.000000000 -0800
3d9156a7
A
3@@ -27,6 +27,8 @@
4 #include <sys/cdefs.h>
1f2f436a 5 __FBSDID("$FreeBSD: src/lib/libc/stdio/ungetwc.c,v 1.11 2008/04/17 22:17:54 jhb Exp $");
3d9156a7
A
6
7+#include "xlocale_private.h"
8+
9 #include "namespace.h"
10 #include <errno.h>
1f2f436a
A
11 #include <limits.h>
12@@ -42,14 +44,14 @@ __FBSDID("$FreeBSD: src/lib/libc/stdio/u
3d9156a7
A
13 * Non-MT-safe version.
14 */
15 wint_t
16-__ungetwc(wint_t wc, FILE *fp)
17+__ungetwc(wint_t wc, FILE *fp, locale_t loc)
18 {
19 char buf[MB_LEN_MAX];
20 size_t len;
21
22 if (wc == WEOF)
23 return (WEOF);
1f2f436a
A
24- if ((len = __wcrtomb(buf, wc, &fp->_mbstate)) == (size_t)-1) {
25+ if ((len = loc->__lc_ctype->__wcrtomb(buf, wc, &fp->_mbstate, loc)) == (size_t)-1) {
3d9156a7
A
26 fp->_flags |= __SERR;
27 return (WEOF);
28 }
1f2f436a 29@@ -70,7 +72,21 @@ ungetwc(wint_t wc, FILE *fp)
3d9156a7
A
30
31 FLOCKFILE(fp);
32 ORIENT(fp, 1);
33- r = __ungetwc(wc, fp);
34+ r = __ungetwc(wc, fp, __current_locale());
35+ FUNLOCKFILE(fp);
36+
37+ return (r);
38+}
39+
40+wint_t
41+ungetwc_l(wint_t wc, FILE *fp, locale_t loc)
42+{
43+ wint_t r;
44+
45+ NORMALIZE_LOCALE(loc);
46+ FLOCKFILE(fp);
47+ ORIENT(fp, 1);
48+ r = __ungetwc(wc, fp, loc);
49 FUNLOCKFILE(fp);
50
51 return (r);