stdio.h
  1  /*
  2   * Copyright (c) 2000, 2005, 2007, 2009, 2010 Apple Inc. All rights reserved.
  3   *
  4   * @APPLE_LICENSE_HEADER_START@
  5   *
  6   * This file contains Original Code and/or Modifications of Original Code
  7   * as defined in and that are subject to the Apple Public Source License
  8   * Version 2.0 (the 'License'). You may not use this file except in
  9   * compliance with the License. Please obtain a copy of the License at
 10   * http://www.opensource.apple.com/apsl/ and read it before using this
 11   * file.
 12   *
 13   * The Original Code and all software distributed under the License are
 14   * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 15   * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 16   * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 17   * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 18   * Please see the License for the specific language governing rights and
 19   * limitations under the License.
 20   *
 21   * @APPLE_LICENSE_HEADER_END@
 22   */
 23  /*-
 24   * Copyright (c) 1990, 1993
 25   *	The Regents of the University of California.  All rights reserved.
 26   *
 27   * This code is derived from software contributed to Berkeley by
 28   * Chris Torek.
 29   *
 30   * Redistribution and use in source and binary forms, with or without
 31   * modification, are permitted provided that the following conditions
 32   * are met:
 33   * 1. Redistributions of source code must retain the above copyright
 34   *    notice, this list of conditions and the following disclaimer.
 35   * 2. Redistributions in binary form must reproduce the above copyright
 36   *    notice, this list of conditions and the following disclaimer in the
 37   *    documentation and/or other materials provided with the distribution.
 38   * 3. All advertising materials mentioning features or use of this software
 39   *    must display the following acknowledgement:
 40   *	This product includes software developed by the University of
 41   *	California, Berkeley and its contributors.
 42   * 4. Neither the name of the University nor the names of its contributors
 43   *    may be used to endorse or promote products derived from this software
 44   *    without specific prior written permission.
 45   *
 46   * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 47   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 48   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 49   * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 50   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 51   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 52   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 53   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 54   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 55   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 56   * SUCH DAMAGE.
 57   *
 58   *	@(#)stdio.h	8.5 (Berkeley) 4/29/95
 59   */
 60  
 61  #ifndef	_STDIO_H_
 62  #define	_STDIO_H_
 63  
 64  #include <_stdio.h>
 65  
 66  #ifndef UNIFDEF_DRIVERKIT
 67  __BEGIN_DECLS
 68  extern FILE *__stdinp;
 69  extern FILE *__stdoutp;
 70  extern FILE *__stderrp;
 71  __END_DECLS
 72  
 73  #define	__SLBF	0x0001		/* line buffered */
 74  #define	__SNBF	0x0002		/* unbuffered */
 75  #define	__SRD	0x0004		/* OK to read */
 76  #define	__SWR	0x0008		/* OK to write */
 77  	/* RD and WR are never simultaneously asserted */
 78  #define	__SRW	0x0010		/* open for reading & writing */
 79  #define	__SEOF	0x0020		/* found EOF */
 80  #define	__SERR	0x0040		/* found error */
 81  #define	__SMBF	0x0080		/* _buf is from malloc */
 82  #define	__SAPP	0x0100		/* fdopen()ed in append mode */
 83  #define	__SSTR	0x0200		/* this is an sprintf/snprintf string */
 84  #define	__SOPT	0x0400		/* do fseek() optimisation */
 85  #define	__SNPT	0x0800		/* do not do fseek() optimisation */
 86  #define	__SOFF	0x1000		/* set iff _offset is in fact correct */
 87  #define	__SMOD	0x2000		/* true => fgetln modified _p text */
 88  #define __SALC  0x4000		/* allocate string space dynamically */
 89  #define __SIGN  0x8000		/* ignore this file in _fwalk */
 90  
 91  /*
 92   * The following three definitions are for ANSI C, which took them
 93   * from System V, which brilliantly took internal interface macros and
 94   * made them official arguments to setvbuf(), without renaming them.
 95   * Hence, these ugly _IOxxx names are *supposed* to appear in user code.
 96   *
 97   * Although numbered as their counterparts above, the implementation
 98   * does not rely on this.
 99   */
100  #define	_IOFBF	0		/* setvbuf should set fully buffered */
101  #define	_IOLBF	1		/* setvbuf should set line buffered */
102  #define	_IONBF	2		/* setvbuf should set unbuffered */
103  
104  #define	BUFSIZ	1024		/* size of buffer used by setbuf */
105  #define	EOF	(-1)
106  
107  				/* must be == _POSIX_STREAM_MAX <limits.h> */
108  #define	FOPEN_MAX	20	/* must be <= OPEN_MAX <sys/syslimits.h> */
109  #define	FILENAME_MAX	1024	/* must be <= PATH_MAX <sys/syslimits.h> */
110  
111  /* System V/ANSI C; this is the wrong way to do this, do *not* use these. */
112  #ifndef _ANSI_SOURCE
113  #define	P_tmpdir	"/var/tmp/"
114  #endif
115  #define	L_tmpnam	1024	/* XXX must be == PATH_MAX */
116  #define	TMP_MAX		308915776
117  
118  #ifndef SEEK_SET
119  #define	SEEK_SET	0	/* set file offset to offset */
120  #endif
121  #ifndef SEEK_CUR
122  #define	SEEK_CUR	1	/* set file offset to current plus offset */
123  #endif
124  #ifndef SEEK_END
125  #define	SEEK_END	2	/* set file offset to EOF plus offset */
126  #endif
127  
128  #define	stdin	__stdinp
129  #define	stdout	__stdoutp
130  #define	stderr	__stderrp
131  
132  #ifdef _DARWIN_UNLIMITED_STREAMS
133  #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_3_2
134  #error "_DARWIN_UNLIMITED_STREAMS specified, but -miphoneos-version-min version does not support it."
135  #elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_6
136  #error "_DARWIN_UNLIMITED_STREAMS specified, but -mmacosx-version-min version does not support it."
137  #endif
138  #endif
139  
140  /* ANSI-C */
141  
142  __BEGIN_DECLS
143  void	 clearerr(FILE *);
144  int	 fclose(FILE *);
145  int	 feof(FILE *);
146  int	 ferror(FILE *);
147  int	 fflush(FILE *);
148  int	 fgetc(FILE *);
149  int	 fgetpos(FILE * __restrict, fpos_t *);
150  char	*fgets(char * __restrict, int, FILE *);
151  #if defined(_DARWIN_UNLIMITED_STREAMS) || defined(_DARWIN_C_SOURCE)
152  FILE	*fopen(const char * __restrict __filename, const char * __restrict __mode) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_3_2, __DARWIN_EXTSN(fopen));
153  #else /* !_DARWIN_UNLIMITED_STREAMS && !_DARWIN_C_SOURCE */
154  //Begin-Libc
155  #ifndef LIBC_ALIAS_FOPEN
156  //End-Libc
157  FILE	*fopen(const char * __restrict __filename, const char * __restrict __mode) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(fopen));
158  //Begin-Libc
159  #else /* LIBC_ALIAS_FOPEN */
160  FILE	*fopen(const char * __restrict __filename, const char * __restrict __mode) LIBC_ALIAS(fopen);
161  #endif /* !LIBC_ALIAS_FOPEN */
162  //End-Libc
163  #endif /* (DARWIN_UNLIMITED_STREAMS || _DARWIN_C_SOURCE) */
164  int	 fprintf(FILE * __restrict, const char * __restrict, ...) __printflike(2, 3);
165  int	 fputc(int, FILE *);
166  //Begin-Libc
167  #ifndef LIBC_ALIAS_FPUTS
168  //End-Libc
169  int	 fputs(const char * __restrict, FILE * __restrict) __DARWIN_ALIAS(fputs);
170  //Begin-Libc
171  #else /* LIBC_ALIAS_FPUTS */
172  int	 fputs(const char * __restrict, FILE * __restrict) LIBC_ALIAS(fputs);
173  #endif /* !LIBC_ALIAS_FPUTS */
174  //End-Libc
175  size_t	 fread(void * __restrict __ptr, size_t __size, size_t __nitems, FILE * __restrict __stream);
176  //Begin-Libc
177  #ifndef LIBC_ALIAS_FREOPEN
178  //End-Libc
179  FILE	*freopen(const char * __restrict, const char * __restrict,
180                   FILE * __restrict) __DARWIN_ALIAS(freopen);
181  //Begin-Libc
182  #else /* LIBC_ALIAS_FREOPEN */
183  FILE	*freopen(const char * __restrict, const char * __restrict,
184                   FILE * __restrict) LIBC_ALIAS(freopen);
185  #endif /* !LIBC_ALIAS_FREOPEN */
186  //End-Libc
187  int	 fscanf(FILE * __restrict, const char * __restrict, ...) __scanflike(2, 3);
188  int	 fseek(FILE *, long, int);
189  int	 fsetpos(FILE *, const fpos_t *);
190  long	 ftell(FILE *);
191  //Begin-Libc
192  #ifndef LIBC_ALIAS_FWRITE
193  //End-Libc
194  size_t	 fwrite(const void * __restrict __ptr, size_t __size, size_t __nitems, FILE * __restrict __stream) __DARWIN_ALIAS(fwrite);
195  //Begin-Libc
196  #else /* LIBC_ALIAS_FWRITE */
197  size_t	 fwrite(const void * __restrict __ptr, size_t __size, size_t __nitems, FILE * __restrict __stream) LIBC_ALIAS(fwrite);
198  #endif /* !LIBC_ALIAS_FWRITE */
199  //End-Libc
200  int	 getc(FILE *);
201  int	 getchar(void);
202  char	*gets(char *);
203  void	 perror(const char *) __cold;
204  int	 printf(const char * __restrict, ...) __printflike(1, 2);
205  int	 putc(int, FILE *);
206  int	 putchar(int);
207  int	 puts(const char *);
208  int	 remove(const char *);
209  int	 rename (const char *__old, const char *__new);
210  void	 rewind(FILE *);
211  int	 scanf(const char * __restrict, ...) __scanflike(1, 2);
212  void	 setbuf(FILE * __restrict, char * __restrict);
213  int	 setvbuf(FILE * __restrict, char * __restrict, int, size_t);
214  int	 sprintf(char * __restrict, const char * __restrict, ...) __printflike(2, 3) __swift_unavailable("Use snprintf instead.");
215  int	 sscanf(const char * __restrict, const char * __restrict, ...) __scanflike(2, 3);
216  FILE	*tmpfile(void);
217  
218  __swift_unavailable("Use mkstemp(3) instead.")
219  #if !defined(_POSIX_C_SOURCE)
220  __deprecated_msg("This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of tmpnam(3), it is highly recommended that you use mkstemp(3) instead.")
221  #endif
222  char	*tmpnam(char *);
223  int	 ungetc(int, FILE *);
224  int	 vfprintf(FILE * __restrict, const char * __restrict, va_list) __printflike(2, 0);
225  int	 vprintf(const char * __restrict, va_list) __printflike(1, 0);
226  int	 vsprintf(char * __restrict, const char * __restrict, va_list) __printflike(2, 0) __swift_unavailable("Use vsnprintf instead.");
227  __END_DECLS
228  
229  
230  
231  /* Additional functionality provided by:
232   * POSIX.1-1988
233   */
234  
235  #if __DARWIN_C_LEVEL >= 198808L
236  #define	L_ctermid	1024	/* size for ctermid(); PATH_MAX */
237  
238  __BEGIN_DECLS
239  #include <_ctermid.h>
240  
241  #if defined(_DARWIN_UNLIMITED_STREAMS) || defined(_DARWIN_C_SOURCE)
242  FILE	*fdopen(int, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_3_2, __DARWIN_EXTSN(fdopen));
243  #else /* !_DARWIN_UNLIMITED_STREAMS && !_DARWIN_C_SOURCE */
244  //Begin-Libc
245  #ifndef LIBC_ALIAS_FDOPEN
246  //End-Libc
247  FILE	*fdopen(int, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(fdopen));
248  //Begin-Libc
249  #else /* LIBC_ALIAS_FDOPEN */
250  FILE	*fdopen(int, const char *) LIBC_ALIAS(fdopen);
251  #endif /* !LIBC_ALIAS_FDOPEN */
252  //End-Libc
253  #endif /* (DARWIN_UNLIMITED_STREAMS || _DARWIN_C_SOURCE) */
254  int	 fileno(FILE *);
255  __END_DECLS
256  #endif /* __DARWIN_C_LEVEL >= 198808L */
257  
258  
259  /* Additional functionality provided by:
260   * POSIX.2-1992 C Language Binding Option
261   */
262  #if TARGET_OS_IPHONE
263  #define __swift_unavailable_on(osx_msg, ios_msg) __swift_unavailable(ios_msg)
264  #else
265  #define __swift_unavailable_on(osx_msg, ios_msg) __swift_unavailable(osx_msg)
266  #endif
267  
268  #if __DARWIN_C_LEVEL >= 199209L
269  __BEGIN_DECLS
270  int	 pclose(FILE *) __swift_unavailable_on("Use posix_spawn APIs or NSTask instead.", "Process spawning is unavailable.");
271  #if defined(_DARWIN_UNLIMITED_STREAMS) || defined(_DARWIN_C_SOURCE)
272  FILE	*popen(const char *, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_3_2, __DARWIN_EXTSN(popen)) __swift_unavailable_on("Use posix_spawn APIs or NSTask instead.", "Process spawning is unavailable.");
273  #else /* !_DARWIN_UNLIMITED_STREAMS && !_DARWIN_C_SOURCE */
274  //Begin-Libc
275  #ifndef LIBC_ALIAS_POPEN
276  //End-Libc
277  FILE	*popen(const char *, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(popen)) __swift_unavailable_on("Use posix_spawn APIs or NSTask instead.", "Process spawning is unavailable.");
278  //Begin-Libc
279  #else /* LIBC_ALIAS_POPEN */
280  FILE	*popen(const char *, const char *) LIBC_ALIAS(popen);
281  #endif /* !LIBC_ALIAS_POPEN */
282  //End-Libc
283  #endif /* (DARWIN_UNLIMITED_STREAMS || _DARWIN_C_SOURCE) */
284  __END_DECLS
285  #endif /* __DARWIN_C_LEVEL >= 199209L */
286  
287  #undef __swift_unavailable_on
288  
289  /* Additional functionality provided by:
290   * POSIX.1c-1995,
291   * POSIX.1i-1995,
292   * and the omnibus ISO/IEC 9945-1: 1996
293   */
294  
295  #if __DARWIN_C_LEVEL >= 199506L
296  
297  /* Functions internal to the implementation. */
298  __BEGIN_DECLS
299  int	__srget(FILE *);
300  int	__svfscanf(FILE *, const char *, va_list) __scanflike(2, 0);
301  int	__swbuf(int, FILE *);
302  __END_DECLS
303  
304  /*
305   * The __sfoo macros are here so that we can
306   * define function versions in the C library.
307   */
308  #define	__sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++))
309  #if defined(__GNUC__) && defined(__STDC__)
310  __header_always_inline int __sputc(int _c, FILE *_p) {
311  	if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
312  		return (*_p->_p++ = _c);
313  	else
314  		return (__swbuf(_c, _p));
315  }
316  #else
317  /*
318   * This has been tuned to generate reasonable code on the vax using pcc.
319   */
320  #define	__sputc(c, p) \
321  	(--(p)->_w < 0 ? \
322  		(p)->_w >= (p)->_lbfsize ? \
323  			(*(p)->_p = (c)), *(p)->_p != '\n' ? \
324  				(int)*(p)->_p++ : \
325  				__swbuf('\n', p) : \
326  			__swbuf((int)(c), p) : \
327  		(*(p)->_p = (c), (int)*(p)->_p++))
328  #endif
329  
330  #define	__sfeof(p)	(((p)->_flags & __SEOF) != 0)
331  #define	__sferror(p)	(((p)->_flags & __SERR) != 0)
332  #define	__sclearerr(p)	((void)((p)->_flags &= ~(__SERR|__SEOF)))
333  #define	__sfileno(p)	((p)->_file)
334  
335  __BEGIN_DECLS
336  void	 flockfile(FILE *);
337  int	 ftrylockfile(FILE *);
338  void	 funlockfile(FILE *);
339  int	 getc_unlocked(FILE *);
340  int	 getchar_unlocked(void);
341  int	 putc_unlocked(int, FILE *);
342  int	 putchar_unlocked(int);
343  
344  /* Removed in Issue 6 */
345  #if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200112L
346  int	 getw(FILE *);
347  int	 putw(int, FILE *);
348  #endif
349  
350  __swift_unavailable("Use mkstemp(3) instead.")
351  #if !defined(_POSIX_C_SOURCE)
352  __deprecated_msg("This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of tempnam(3), it is highly recommended that you use mkstemp(3) instead.")
353  #endif
354  //Begin-Libc
355  #ifndef LIBC_ALIAS_TEMPNAM
356  //End-Libc
357  char	*tempnam(const char *__dir, const char *__prefix) __DARWIN_ALIAS(tempnam);
358  //Begin-Libc
359  #else /* LIBC_ALIAS_TEMPNAM */
360  char	*tempnam(const char *__dir, const char *__prefix) LIBC_ALIAS(tempnam);
361  #endif /* !LIBC_ALIAS_TEMPNAM */
362  //End-Libc
363  __END_DECLS
364  
365  #ifndef lint
366  #define	getc_unlocked(fp)	__sgetc(fp)
367  #define putc_unlocked(x, fp)	__sputc(x, fp)
368  #endif /* lint */
369  
370  #define	getchar_unlocked()	getc_unlocked(stdin)
371  #define	putchar_unlocked(x)	putc_unlocked(x, stdout)
372  #endif /* __DARWIN_C_LEVEL >= 199506L */
373  
374  
375  
376  /* Additional functionality provided by:
377   * POSIX.1-2001
378   * ISO C99
379   */
380  
381  #if __DARWIN_C_LEVEL >= 200112L
382  #include <sys/_types/_off_t.h>
383  
384  __BEGIN_DECLS
385  int	 fseeko(FILE * __stream, off_t __offset, int __whence);
386  off_t	 ftello(FILE * __stream);
387  __END_DECLS
388  #endif /* __DARWIN_C_LEVEL >= 200112L */
389  
390  #if __DARWIN_C_LEVEL >= 200112L || defined(_C99_SOURCE) || defined(__cplusplus)
391  __BEGIN_DECLS
392  int	 snprintf(char * __restrict __str, size_t __size, const char * __restrict __format, ...) __printflike(3, 4);
393  int	 vfscanf(FILE * __restrict __stream, const char * __restrict __format, va_list) __scanflike(2, 0);
394  int	 vscanf(const char * __restrict __format, va_list) __scanflike(1, 0);
395  int	 vsnprintf(char * __restrict __str, size_t __size, const char * __restrict __format, va_list) __printflike(3, 0);
396  int	 vsscanf(const char * __restrict __str, const char * __restrict __format, va_list) __scanflike(2, 0);
397  __END_DECLS
398  #endif /* __DARWIN_C_LEVEL >= 200112L || defined(_C99_SOURCE) || defined(__cplusplus) */
399  
400  
401  
402  /* Additional functionality provided by:
403   * POSIX.1-2008
404   */
405  
406  #if __DARWIN_C_LEVEL >= 200809L
407  #include <sys/_types/_ssize_t.h>
408  
409  __BEGIN_DECLS
410  int	dprintf(int, const char * __restrict, ...) __printflike(2, 3) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
411  int	vdprintf(int, const char * __restrict, va_list) __printflike(2, 0) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
412  ssize_t getdelim(char ** __restrict __linep, size_t * __restrict __linecapp, int __delimiter, FILE * __restrict __stream) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
413  ssize_t getline(char ** __restrict __linep, size_t * __restrict __linecapp, FILE * __restrict __stream) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
414  FILE *fmemopen(void * __restrict __buf, size_t __size, const char * __restrict __mode) __API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
415  FILE *open_memstream(char **__bufp, size_t *__sizep) __API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
416  __END_DECLS
417  #endif /* __DARWIN_C_LEVEL >= 200809L */
418  
419  
420  
421  /* Darwin extensions */
422  
423  #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
424  __BEGIN_DECLS
425  extern __const int sys_nerr;		/* perror(3) external variables */
426  extern __const char *__const sys_errlist[];
427  
428  int	 asprintf(char ** __restrict, const char * __restrict, ...) __printflike(2, 3);
429  char	*ctermid_r(char *);
430  char	*fgetln(FILE *, size_t *);
431  __const char *fmtcheck(const char *, const char *);
432  int	 fpurge(FILE *);
433  void	 setbuffer(FILE *, char *, int);
434  int	 setlinebuf(FILE *);
435  int	 vasprintf(char ** __restrict, const char * __restrict, va_list) __printflike(2, 0);
436  FILE	*zopen(const char *, const char *, int);
437  
438  
439  /*
440   * Stdio function-access interface.
441   */
442  FILE	*funopen(const void *,
443                   int (* _Nullable)(void *, char *, int),
444                   int (* _Nullable)(void *, const char *, int),
445                   fpos_t (* _Nullable)(void *, fpos_t, int),
446                   int (* _Nullable)(void *));
447  __END_DECLS
448  #define	fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0)
449  #define	fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0)
450  
451  #define	feof_unlocked(p)	__sfeof(p)
452  #define	ferror_unlocked(p)	__sferror(p)
453  #define	clearerr_unlocked(p)	__sclearerr(p)
454  #define	fileno_unlocked(p)	__sfileno(p)
455  
456  #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
457  
458  #else /* UNIFDEF_DRIVERKIT */
459  #define	EOF	(-1)
460  
461  __BEGIN_DECLS
462  int	 sscanf(const char * __restrict, const char * __restrict, ...) __scanflike(2, 3);
463  #if __DARWIN_C_LEVEL >= 200112L || defined(_C99_SOURCE) || defined(__cplusplus)
464  int	 snprintf(char * __restrict __str, size_t __size, const char * __restrict __format, ...) __printflike(3, 4);
465  int	 vsnprintf(char * __restrict __str, size_t __size, const char * __restrict __format, va_list) __printflike(3, 0);
466  int	 vsscanf(const char * __restrict __str, const char * __restrict __format, va_list) __scanflike(2, 0);
467  #endif /* __DARWIN_C_LEVEL >= 200112L || defined(_C99_SOURCE) || defined(__cplusplus) */
468  #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
469  int	 asprintf(char ** __restrict, const char * __restrict, ...) __printflike(2, 3);
470  int	 vasprintf(char ** __restrict, const char * __restrict, va_list) __printflike(2, 0);
471  #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
472  __END_DECLS
473  #endif /* UNIFDEF_DRIVERKIT */
474  
475  #ifdef _USE_EXTENDED_LOCALES_
476  #include <xlocale/_stdio.h>
477  #endif /* _USE_EXTENDED_LOCALES_ */
478  
479  #if defined (__GNUC__) && _FORTIFY_SOURCE > 0 && !defined (__cplusplus)
480  /* Security checking functions.  */
481  #include <secure/_stdio.h>
482  #endif
483  
484  #endif /* _STDIO_H_ */