]> git.saurik.com Git - apple/libc.git/blob - stdio/FreeBSD/local.h.patch
Libc-594.1.4.tar.gz
[apple/libc.git] / stdio / FreeBSD / local.h.patch
1 --- local.h.orig 2009-02-15 03:11:22.000000000 -0800
2 +++ local.h 2009-02-15 18:12:54.000000000 -0800
3 @@ -37,8 +37,11 @@
4 * $FreeBSD: src/lib/libc/stdio/local.h,v 1.26 2004/07/16 05:52:51 tjr Exp $
5 */
6
7 +#include <sys/cdefs.h>
8 +#include "xlocale_private.h"
9 #include <sys/types.h> /* for off_t */
10 #include <pthread.h>
11 +#include <limits.h>
12 #include <string.h>
13 #include <wchar.h>
14
15 @@ -53,12 +56,15 @@ extern fpos_t _sseek(FILE *, fpos_t, int
16 extern int _ftello(FILE *, fpos_t *);
17 extern int _fseeko(FILE *, off_t, int, int);
18 extern int __fflush(FILE *fp);
19 -extern wint_t __fgetwc(FILE *);
20 -extern wint_t __fputwc(wchar_t, FILE *);
21 +extern wint_t __fgetwc(FILE *, locale_t);
22 +extern wint_t __fputwc(wchar_t, FILE *, locale_t);
23 extern int __sflush(FILE *);
24 -extern FILE *__sfp(void);
25 +extern FILE *__sfp(int); /* arg is whether to count against STREAM_MAX or not */
26 +extern void __sfprelease(FILE *); /* mark free and update count as needed */
27 extern int __slbexpand(FILE *, size_t);
28 extern int __srefill(FILE *);
29 +extern int __srefill0(FILE *);
30 +extern int __srefill1(FILE *);
31 extern int __sread(void *, char *, int);
32 extern int __swrite(void *, char const *, int);
33 extern fpos_t __sseek(void *, fpos_t, int);
34 @@ -69,16 +75,16 @@ extern void (*__cleanup)(void);
35 extern void __smakebuf(FILE *);
36 extern int __swhatbuf(FILE *, size_t *, int *);
37 extern int _fwalk(int (*)(FILE *));
38 -extern int __svfscanf(FILE *, const char *, __va_list);
39 +extern int __svfscanf_l(FILE *, locale_t, const char *, __va_list) __DARWIN_LDBL_COMPAT(__svfscanf_l);
40 extern int __swsetup(FILE *);
41 extern int __sflags(const char *, int *);
42 extern int __ungetc(int, FILE *);
43 -extern wint_t __ungetwc(wint_t, FILE *);
44 -extern int __vfprintf(FILE *, const char *, __va_list);
45 -extern int __vfscanf(FILE *, const char *, __va_list);
46 -extern int __vfwprintf(FILE *, const wchar_t *, __va_list);
47 -extern int __vfwscanf(FILE * __restrict, const wchar_t * __restrict,
48 - __va_list);
49 +extern wint_t __ungetwc(wint_t, FILE *, locale_t);
50 +extern int __vfprintf(FILE *, locale_t, const char *, __va_list) __DARWIN_LDBL_COMPAT(__vfprintf);
51 +extern int __vfscanf(FILE *, const char *, __va_list) __DARWIN_LDBL_COMPAT(__vfscanf);
52 +extern int __vfwprintf(FILE *, locale_t, const wchar_t *, __va_list) __DARWIN_LDBL_COMPAT(__vfwprintf);
53 +extern int __vfwscanf(FILE * __restrict, locale_t, const wchar_t * __restrict,
54 + __va_list) __DARWIN_LDBL_COMPAT(__vfwscanf);
55
56 extern int __sdidinit;
57
58 @@ -89,7 +95,8 @@ struct __sFILEX {
59 pthread_mutex_t fl_mutex; /* used for MT-safety */
60 pthread_t fl_owner; /* current owner */
61 int fl_count; /* recursive lock count */
62 - int orientation; /* orientation for fwide() */
63 + int orientation:2; /* orientation for fwide() */
64 + int counted:1; /* stream counted against STREAM_MAX */
65 mbstate_t mbstate; /* multibyte conversion state */
66 };
67
68 @@ -124,7 +131,7 @@ struct __sFILEX {
69
70 #define INITEXTRA(fp) { \
71 (fp)->_extra->_up = NULL; \
72 - (fp)->_extra->fl_mutex = PTHREAD_MUTEX_INITIALIZER; \
73 + (fp)->_extra->fl_mutex = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER; \
74 (fp)->_extra->fl_owner = NULL; \
75 (fp)->_extra->fl_count = 0; \
76 (fp)->_extra->orientation = 0; \