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_ */