Root/
Source at commit 1083 created 13 years 1 month ago. By meklort, add GetDriveInfo | |
---|---|
1 | /*␊ |
2 | * Copyright (c) 2000, 2005, 2007, 2009 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 <_types.h>␊ |
65 | ␊ |
66 | #ifndef _VA_LIST␊ |
67 | #define _VA_LIST␊ |
68 | /* DO NOT REMOVE THIS COMMENT: fixincludes needs to see:␊ |
69 | * __gnuc_va_list and include <stdarg.h> */␊ |
70 | typedef __darwin_va_list␉va_list;␊ |
71 | #endif␊ |
72 | ␊ |
73 | #ifndef␉_OFF_T␊ |
74 | #define␉_OFF_T␊ |
75 | typedef␉__darwin_off_t␉␉off_t;␊ |
76 | #endif␊ |
77 | ␊ |
78 | #ifndef␉_SIZE_T␊ |
79 | #define␉_SIZE_T␊ |
80 | typedef␉__darwin_size_t␉␉size_t;␊ |
81 | #endif␊ |
82 | ␊ |
83 | #ifndef NULL␊ |
84 | #define NULL __DARWIN_NULL␊ |
85 | #endif /* ! NULL */␊ |
86 | ␊ |
87 | typedef __darwin_off_t␉␉fpos_t;␊ |
88 | ␊ |
89 | #define␉_FSTDIO␉␉␉/* Define for new stdio with functions. */␊ |
90 | ␊ |
91 | /*␊ |
92 | * NB: to fit things in six character monocase externals, the stdio␊ |
93 | * code uses the prefix `__s' for stdio objects, typically followed␊ |
94 | * by a three-character attempt at a mnemonic.␊ |
95 | */␊ |
96 | ␊ |
97 | /* stdio buffers */␊ |
98 | struct __sbuf {␊ |
99 | ␉unsigned char␉*_base;␊ |
100 | ␉int␉␉_size;␊ |
101 | };␊ |
102 | ␊ |
103 | /* hold a buncha junk that would grow the ABI */␊ |
104 | struct __sFILEX;␊ |
105 | ␊ |
106 | /*␊ |
107 | * stdio state variables.␊ |
108 | *␊ |
109 | * The following always hold:␊ |
110 | *␊ |
111 | *␉if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR),␊ |
112 | *␉␉_lbfsize is -_bf._size, else _lbfsize is 0␊ |
113 | *␉if _flags&__SRD, _w is 0␊ |
114 | *␉if _flags&__SWR, _r is 0␊ |
115 | *␊ |
116 | * This ensures that the getc and putc macros (or inline functions) never␊ |
117 | * try to write or read from a file that is in `read' or `write' mode.␊ |
118 | * (Moreover, they can, and do, automatically switch from read mode to␊ |
119 | * write mode, and back, on "r+" and "w+" files.)␊ |
120 | *␊ |
121 | * _lbfsize is used only to make the inline line-buffered output stream␊ |
122 | * code as compact as possible.␊ |
123 | *␊ |
124 | * _ub, _up, and _ur are used when ungetc() pushes back more characters␊ |
125 | * than fit in the current _bf, or when ungetc() pushes back a character␊ |
126 | * that does not match the previous one in _bf. When this happens,␊ |
127 | * _ub._base becomes non-nil (i.e., a stream has ungetc() data iff␊ |
128 | * _ub._base!=NULL) and _up and _ur save the current values of _p and _r.␊ |
129 | *␊ |
130 | * NB: see WARNING above before changing the layout of this structure!␊ |
131 | */␊ |
132 | typedef␉struct __sFILE {␊ |
133 | ␉unsigned char *_p;␉/* current position in (some) buffer */␊ |
134 | ␉int␉_r;␉␉/* read space left for getc() */␊ |
135 | ␉int␉_w;␉␉/* write space left for putc() */␊ |
136 | ␉short␉_flags;␉␉/* flags, below; this FILE is free if 0 */␊ |
137 | ␉short␉_file;␉␉/* fileno, if Unix descriptor, else -1 */␊ |
138 | ␉struct␉__sbuf _bf;␉/* the buffer (at least 1 byte, if !NULL) */␊ |
139 | ␉int␉_lbfsize;␉/* 0 or -_bf._size, for inline putc */␊ |
140 | ␊ |
141 | ␉/* operations */␊ |
142 | ␉void␉*_cookie;␉/* cookie passed to io functions */␊ |
143 | ␉int␉(*_close)(void *);␊ |
144 | ␉int␉(*_read) (void *, char *, int);␊ |
145 | ␉fpos_t␉(*_seek) (void *, fpos_t, int);␊ |
146 | ␉int␉(*_write)(void *, const char *, int);␊ |
147 | ␊ |
148 | ␉/* separate buffer for long sequences of ungetc() */␊ |
149 | ␉struct␉__sbuf _ub;␉/* ungetc buffer */␊ |
150 | ␉struct __sFILEX *_extra; /* additions to FILE to not break ABI */␊ |
151 | ␉int␉_ur;␉␉/* saved _r when _r is counting ungetc data */␊ |
152 | ␊ |
153 | ␉/* tricks to meet minimum requirements even when malloc() fails */␊ |
154 | ␉unsigned char _ubuf[3];␉/* guarantee an ungetc() buffer */␊ |
155 | ␉unsigned char _nbuf[1];␉/* guarantee a getc() buffer */␊ |
156 | ␊ |
157 | ␉/* separate buffer for fgetln() when line crosses buffer boundary */␊ |
158 | ␉struct␉__sbuf _lb;␉/* buffer for fgetln() */␊ |
159 | ␊ |
160 | ␉/* Unix stdio files get aligned to block boundaries on fseek() */␊ |
161 | ␉int␉_blksize;␉/* stat.st_blksize (may be != _bf._size) */␊ |
162 | ␉fpos_t␉_offset;␉/* current lseek offset (see WARNING) */␊ |
163 | } FILE;␊ |
164 | ␊ |
165 | __BEGIN_DECLS␊ |
166 | #if __DARWIN_UNIX03␊ |
167 | extern FILE *__stdinp;␊ |
168 | extern FILE *__stdoutp;␊ |
169 | extern FILE *__stderrp;␊ |
170 | #else /* !__DARWIN_UNIX03 */␊ |
171 | extern FILE __sF[];␊ |
172 | #endif /* __DARWIN_UNIX03 */␊ |
173 | __END_DECLS␊ |
174 | ␊ |
175 | #define␉__SLBF␉0x0001␉␉/* line buffered */␊ |
176 | #define␉__SNBF␉0x0002␉␉/* unbuffered */␊ |
177 | #define␉__SRD␉0x0004␉␉/* OK to read */␊ |
178 | #define␉__SWR␉0x0008␉␉/* OK to write */␊ |
179 | ␉/* RD and WR are never simultaneously asserted */␊ |
180 | #define␉__SRW␉0x0010␉␉/* open for reading & writing */␊ |
181 | #define␉__SEOF␉0x0020␉␉/* found EOF */␊ |
182 | #define␉__SERR␉0x0040␉␉/* found error */␊ |
183 | #define␉__SMBF␉0x0080␉␉/* _buf is from malloc */␊ |
184 | #define␉__SAPP␉0x0100␉␉/* fdopen()ed in append mode */␊ |
185 | #define␉__SSTR␉0x0200␉␉/* this is an sprintf/snprintf string */␊ |
186 | #define␉__SOPT␉0x0400␉␉/* do fseek() optimisation */␊ |
187 | #define␉__SNPT␉0x0800␉␉/* do not do fseek() optimisation */␊ |
188 | #define␉__SOFF␉0x1000␉␉/* set iff _offset is in fact correct */␊ |
189 | #define␉__SMOD␉0x2000␉␉/* true => fgetln modified _p text */␊ |
190 | #define __SALC 0x4000␉␉/* allocate string space dynamically */␊ |
191 | #define __SIGN 0x8000␉␉/* ignore this file in _fwalk */␊ |
192 | ␊ |
193 | /*␊ |
194 | * The following three definitions are for ANSI C, which took them␊ |
195 | * from System V, which brilliantly took internal interface macros and␊ |
196 | * made them official arguments to setvbuf(), without renaming them.␊ |
197 | * Hence, these ugly _IOxxx names are *supposed* to appear in user code.␊ |
198 | *␊ |
199 | * Although numbered as their counterparts above, the implementation␊ |
200 | * does not rely on this.␊ |
201 | */␊ |
202 | #define␉_IOFBF␉0␉␉/* setvbuf should set fully buffered */␊ |
203 | #define␉_IOLBF␉1␉␉/* setvbuf should set line buffered */␊ |
204 | #define␉_IONBF␉2␉␉/* setvbuf should set unbuffered */␊ |
205 | ␊ |
206 | #define␉BUFSIZ␉1024␉␉/* size of buffer used by setbuf */␊ |
207 | #define␉EOF␉(-1)␊ |
208 | ␊ |
209 | /*␊ |
210 | * FOPEN_MAX is a minimum maximum, and is the number of streams that␊ |
211 | * stdio can provide without attempting to allocate further resources␊ |
212 | * (which could fail). Do not use this for anything.␊ |
213 | */␊ |
214 | ␉␉␉␉/* must be == _POSIX_STREAM_MAX <limits.h> */␊ |
215 | #define␉FOPEN_MAX␉20␉/* must be <= OPEN_MAX <sys/syslimits.h> */␊ |
216 | #define␉FILENAME_MAX␉1024␉/* must be <= PATH_MAX <sys/syslimits.h> */␊ |
217 | ␊ |
218 | /* System V/ANSI C; this is the wrong way to do this, do *not* use these. */␊ |
219 | #ifndef _ANSI_SOURCE␊ |
220 | #define␉P_tmpdir␉"/var/tmp/"␊ |
221 | #endif␊ |
222 | #define␉L_tmpnam␉1024␉/* XXX must be == PATH_MAX */␊ |
223 | #define␉TMP_MAX␉␉308915776␊ |
224 | ␊ |
225 | #ifndef SEEK_SET␊ |
226 | #define␉SEEK_SET␉0␉/* set file offset to offset */␊ |
227 | #endif␊ |
228 | #ifndef SEEK_CUR␊ |
229 | #define␉SEEK_CUR␉1␉/* set file offset to current plus offset */␊ |
230 | #endif␊ |
231 | #ifndef SEEK_END␊ |
232 | #define␉SEEK_END␉2␉/* set file offset to EOF plus offset */␊ |
233 | #endif␊ |
234 | ␊ |
235 | #if __DARWIN_UNIX03␊ |
236 | #define␉stdin␉__stdinp␊ |
237 | #define␉stdout␉__stdoutp␊ |
238 | #define␉stderr␉__stderrp␊ |
239 | #else /* !__DARWIN_UNIX03 */␊ |
240 | #define stdin␉(&__sF[0])␊ |
241 | #define stdout␉(&__sF[1])␊ |
242 | #define stderr␉(&__sF[2])␊ |
243 | #endif /* __DARWIN_UNIX03 */␊ |
244 | ␊ |
245 | /*␊ |
246 | * Functions defined in ANSI C standard.␊ |
247 | */␊ |
248 | __BEGIN_DECLS␊ |
249 | void␉ clearerr(FILE *);␊ |
250 | int␉ fclose(FILE *);␊ |
251 | int␉ feof(FILE *);␊ |
252 | int␉ ferror(FILE *);␊ |
253 | int␉ fflush(FILE *);␊ |
254 | int␉ fgetc(FILE *);␊ |
255 | int␉ fgetpos(FILE * __restrict, fpos_t *);␊ |
256 | char␉*fgets(char * __restrict, int, FILE *);␊ |
257 | #if defined(__DARWIN_10_6_AND_LATER) && (defined(_DARWIN_UNLIMITED_STREAMS) || defined(_DARWIN_C_SOURCE))␊ |
258 | FILE␉*fopen(const char * __restrict, const char * __restrict) __DARWIN_EXTSN(fopen);␊ |
259 | #else /* < 10.6 || !_DARWIN_UNLIMITED_STREAMS && !_DARWIN_C_SOURCE */␊ |
260 | //Begin-Libc␊ |
261 | #ifndef LIBC_ALIAS_FOPEN␊ |
262 | //End-Libc␊ |
263 | FILE␉*fopen(const char * __restrict, const char * __restrict) __DARWIN_10_6_AND_LATER_ALIAS(__DARWIN_ALIAS(fopen));␊ |
264 | //Begin-Libc␊ |
265 | #else /* LIBC_ALIAS_FOPEN */␊ |
266 | FILE␉*fopen(const char * __restrict, const char * __restrict) LIBC_ALIAS(fopen);␊ |
267 | #endif /* !LIBC_ALIAS_FOPEN */␊ |
268 | //End-Libc␊ |
269 | #endif /* >= 10.6 &&_(DARWIN_UNLIMITED_STREAMS || _DARWIN_C_SOURCE) */␊ |
270 | int␉ fprintf(FILE * __restrict, const char * __restrict, ...) __DARWIN_LDBL_COMPAT(fprintf);␊ |
271 | int␉ fputc(int, FILE *);␊ |
272 | //Begin-Libc␊ |
273 | #ifndef LIBC_ALIAS_FPUTS␊ |
274 | //End-Libc␊ |
275 | int␉ fputs(const char * __restrict, FILE * __restrict) __DARWIN_ALIAS(fputs);␊ |
276 | //Begin-Libc␊ |
277 | #else /* LIBC_ALIAS_FPUTS */␊ |
278 | int␉ fputs(const char * __restrict, FILE * __restrict) LIBC_ALIAS(fputs);␊ |
279 | #endif /* !LIBC_ALIAS_FPUTS */␊ |
280 | //End-Libc␊ |
281 | size_t␉ fread(void * __restrict, size_t, size_t, FILE * __restrict);␊ |
282 | //Begin-Libc␊ |
283 | #ifndef LIBC_ALIAS_FREOPEN␊ |
284 | //End-Libc␊ |
285 | FILE␉*freopen(const char * __restrict, const char * __restrict,␊ |
286 | ␉ FILE * __restrict) __DARWIN_ALIAS(freopen);␊ |
287 | //Begin-Libc␊ |
288 | #else /* LIBC_ALIAS_FREOPEN */␊ |
289 | FILE␉*freopen(const char * __restrict, const char * __restrict,␊ |
290 | ␉ FILE * __restrict) LIBC_ALIAS(freopen);␊ |
291 | #endif /* !LIBC_ALIAS_FREOPEN */␊ |
292 | //End-Libc␊ |
293 | int␉ fscanf(FILE * __restrict, const char * __restrict, ...) __DARWIN_LDBL_COMPAT(fscanf);␊ |
294 | int␉ fseek(FILE *, long, int);␊ |
295 | int␉ fsetpos(FILE *, const fpos_t *);␊ |
296 | long␉ ftell(FILE *);␊ |
297 | //Begin-Libc␊ |
298 | #ifndef LIBC_ALIAS_FWRITE␊ |
299 | //End-Libc␊ |
300 | size_t␉ fwrite(const void * __restrict, size_t, size_t, FILE * __restrict) __DARWIN_ALIAS(fwrite);␊ |
301 | //Begin-Libc␊ |
302 | #else /* LIBC_ALIAS_FWRITE */␊ |
303 | size_t␉ fwrite(const void * __restrict, size_t, size_t, FILE * __restrict) LIBC_ALIAS(fwrite);␊ |
304 | #endif /* !LIBC_ALIAS_FWRITE */␊ |
305 | //End-Libc␊ |
306 | int␉ getc(FILE *);␊ |
307 | int␉ getchar(void);␊ |
308 | char␉*gets(char *);␊ |
309 | #if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))␊ |
310 | extern __const int sys_nerr;␉␉/* perror(3) external variables */␊ |
311 | extern __const char *__const sys_errlist[];␊ |
312 | #endif␊ |
313 | void␉ perror(const char *);␊ |
314 | int␉ printf(const char * __restrict, ...) __DARWIN_LDBL_COMPAT(printf);␊ |
315 | int␉ putc(int, FILE *);␊ |
316 | int␉ putchar(int);␊ |
317 | int␉ puts(const char *);␊ |
318 | int␉ remove(const char *);␊ |
319 | int␉ rename (const char *, const char *);␊ |
320 | void␉ rewind(FILE *);␊ |
321 | int␉ scanf(const char * __restrict, ...) __DARWIN_LDBL_COMPAT(scanf);␊ |
322 | void␉ setbuf(FILE * __restrict, char * __restrict);␊ |
323 | int␉ setvbuf(FILE * __restrict, char * __restrict, int, size_t);␊ |
324 | int␉ sprintf(char * __restrict, const char * __restrict, ...) __DARWIN_LDBL_COMPAT(sprintf);␊ |
325 | int␉ sscanf(const char * __restrict, const char * __restrict, ...) __DARWIN_LDBL_COMPAT(sscanf);␊ |
326 | FILE␉*tmpfile(void);␊ |
327 | char␉*tmpnam(char *);␊ |
328 | int␉ ungetc(int, FILE *);␊ |
329 | int␉ vfprintf(FILE * __restrict, const char * __restrict, va_list) __DARWIN_LDBL_COMPAT(vfprintf);␊ |
330 | int␉ vprintf(const char * __restrict, va_list) __DARWIN_LDBL_COMPAT(vprintf);␊ |
331 | int␉ vsprintf(char * __restrict, const char * __restrict, va_list) __DARWIN_LDBL_COMPAT(vsprintf);␊ |
332 | #if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))␊ |
333 | int␉ asprintf(char **, const char *, ...) __DARWIN_LDBL_COMPAT(asprintf);␊ |
334 | int␉ vasprintf(char **, const char *, va_list) __DARWIN_LDBL_COMPAT(vasprintf);␊ |
335 | #endif␊ |
336 | __END_DECLS␊ |
337 | ␊ |
338 | /*␊ |
339 | * Functions defined in POSIX 1003.1.␊ |
340 | */␊ |
341 | #ifndef _ANSI_SOURCE␊ |
342 | #define␉L_ctermid␉1024␉/* size for ctermid(); PATH_MAX */␊ |
343 | ␊ |
344 | __BEGIN_DECLS␊ |
345 | char␉*ctermid(char *);␊ |
346 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
347 | char␉*ctermid_r(char *);␊ |
348 | #endif /* not POSIX */␊ |
349 | #if defined(__DARWIN_10_6_AND_LATER) && (defined(_DARWIN_UNLIMITED_STREAMS) || defined(_DARWIN_C_SOURCE))␊ |
350 | FILE␉*fdopen(int, const char *) __DARWIN_EXTSN(fdopen);␊ |
351 | #else /* < 10.6 || !_DARWIN_UNLIMITED_STREAMS && !_DARWIN_C_SOURCE */␊ |
352 | //Begin-Libc␊ |
353 | #ifndef LIBC_ALIAS_FDOPEN␊ |
354 | //End-Libc␊ |
355 | FILE␉*fdopen(int, const char *) __DARWIN_10_6_AND_LATER_ALIAS(__DARWIN_ALIAS(fdopen));␊ |
356 | //Begin-Libc␊ |
357 | #else /* LIBC_ALIAS_FDOPEN */␊ |
358 | FILE␉*fdopen(int, const char *) LIBC_ALIAS(fdopen);␊ |
359 | #endif /* !LIBC_ALIAS_FDOPEN */␊ |
360 | //End-Libc␊ |
361 | #endif /* >= 10.6 &&_(DARWIN_UNLIMITED_STREAMS || _DARWIN_C_SOURCE) */␊ |
362 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
363 | char␉*fgetln(FILE *, size_t *);␊ |
364 | #endif /* not POSIX */␊ |
365 | int␉ fileno(FILE *);␊ |
366 | void␉ flockfile(FILE *);␊ |
367 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
368 | __const char␊ |
369 | ␉*fmtcheck(const char *, const char *);␊ |
370 | int␉ fpurge(FILE *);␊ |
371 | #endif /* not POSIX */␊ |
372 | int␉ fseeko(FILE *, off_t, int);␊ |
373 | off_t␉ ftello(FILE *);␊ |
374 | int␉ ftrylockfile(FILE *);␊ |
375 | void␉ funlockfile(FILE *);␊ |
376 | int␉ getc_unlocked(FILE *);␊ |
377 | int␉ getchar_unlocked(void);␊ |
378 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
379 | int␉ getw(FILE *);␊ |
380 | #endif /* not POSIX */␊ |
381 | int␉ pclose(FILE *);␊ |
382 | #if defined(__DARWIN_10_6_AND_LATER) && (defined(_DARWIN_UNLIMITED_STREAMS) || defined(_DARWIN_C_SOURCE))␊ |
383 | FILE␉*popen(const char *, const char *) __DARWIN_EXTSN(popen);␊ |
384 | #else /* < 10.6 || !_DARWIN_UNLIMITED_STREAMS && !_DARWIN_C_SOURCE */␊ |
385 | //Begin-Libc␊ |
386 | #ifndef LIBC_ALIAS_POPEN␊ |
387 | //End-Libc␊ |
388 | FILE␉*popen(const char *, const char *) __DARWIN_10_6_AND_LATER_ALIAS(__DARWIN_ALIAS(popen));␊ |
389 | //Begin-Libc␊ |
390 | #else /* LIBC_ALIAS_POPEN */␊ |
391 | FILE␉*popen(const char *, const char *) LIBC_ALIAS(popen);␊ |
392 | #endif /* !LIBC_ALIAS_POPEN */␊ |
393 | //End-Libc␊ |
394 | #endif /* >= 10.6 &&_(DARWIN_UNLIMITED_STREAMS || _DARWIN_C_SOURCE) */␊ |
395 | int␉ putc_unlocked(int, FILE *);␊ |
396 | int␉ putchar_unlocked(int);␊ |
397 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
398 | int␉ putw(int, FILE *);␊ |
399 | void␉ setbuffer(FILE *, char *, int);␊ |
400 | int␉ setlinebuf(FILE *);␊ |
401 | #endif /* not POSIX */␊ |
402 | int␉ snprintf(char * __restrict, size_t, const char * __restrict, ...) __DARWIN_LDBL_COMPAT(snprintf);␊ |
403 | //Begin-Libc␊ |
404 | #ifndef LIBC_ALIAS_TEMPNAM␊ |
405 | //End-Libc␊ |
406 | char␉*tempnam(const char *, const char *) __DARWIN_ALIAS(tempnam);␊ |
407 | //Begin-Libc␊ |
408 | #else /* LIBC_ALIAS_TEMPNAM */␊ |
409 | char␉*tempnam(const char *, const char *) LIBC_ALIAS(tempnam);␊ |
410 | #endif /* !LIBC_ALIAS_TEMPNAM */␊ |
411 | //End-Libc␊ |
412 | int␉ vfscanf(FILE * __restrict, const char * __restrict, va_list) __DARWIN_LDBL_COMPAT(vfscanf);␊ |
413 | int␉ vscanf(const char * __restrict, va_list) __DARWIN_LDBL_COMPAT(vscanf);␊ |
414 | int␉ vsnprintf(char * __restrict, size_t, const char * __restrict, va_list) __DARWIN_LDBL_COMPAT(vsnprintf);␊ |
415 | int␉ vsscanf(const char * __restrict, const char * __restrict, va_list) __DARWIN_LDBL_COMPAT(vsscanf);␊ |
416 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
417 | FILE␉*zopen(const char *, const char *, int);␊ |
418 | #endif /* not POSIX */␊ |
419 | __END_DECLS␊ |
420 | ␊ |
421 | /*␊ |
422 | * Stdio function-access interface.␊ |
423 | */␊ |
424 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
425 | __BEGIN_DECLS␊ |
426 | FILE␉*funopen(const void *,␊ |
427 | ␉␉int (*)(void *, char *, int),␊ |
428 | ␉␉int (*)(void *, const char *, int),␊ |
429 | ␉␉fpos_t (*)(void *, fpos_t, int),␊ |
430 | ␉␉int (*)(void *));␊ |
431 | __END_DECLS␊ |
432 | #define␉fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0)␊ |
433 | #define␉fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0)␊ |
434 | #endif /* not POSIX */␊ |
435 | #endif /* not ANSI */␊ |
436 | ␊ |
437 | /*␊ |
438 | * Functions internal to the implementation.␊ |
439 | */␊ |
440 | __BEGIN_DECLS␊ |
441 | int␉__srget(FILE *);␊ |
442 | int␉__svfscanf(FILE *, const char *, va_list) __DARWIN_LDBL_COMPAT(__svfscanf);␊ |
443 | int␉__swbuf(int, FILE *);␊ |
444 | __END_DECLS␊ |
445 | ␊ |
446 | /*␊ |
447 | * The __sfoo macros are here so that we can␊ |
448 | * define function versions in the C library.␊ |
449 | */␊ |
450 | #define␉__sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++))␊ |
451 | #if defined(__GNUC__) && defined(__STDC__)␊ |
452 | static __inline int __sputc(int _c, FILE *_p) {␊ |
453 | ␉if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))␊ |
454 | ␉␉return (*_p->_p++ = _c);␊ |
455 | ␉else␊ |
456 | ␉␉return (__swbuf(_c, _p));␊ |
457 | }␊ |
458 | #else␊ |
459 | /*␊ |
460 | * This has been tuned to generate reasonable code on the vax using pcc.␊ |
461 | */␊ |
462 | #define␉__sputc(c, p) \␊ |
463 | ␉(--(p)->_w < 0 ? \␊ |
464 | ␉␉(p)->_w >= (p)->_lbfsize ? \␊ |
465 | ␉␉␉(*(p)->_p = (c)), *(p)->_p != '\n' ? \␊ |
466 | ␉␉␉␉(int)*(p)->_p++ : \␊ |
467 | ␉␉␉␉__swbuf('\n', p) : \␊ |
468 | ␉␉␉__swbuf((int)(c), p) : \␊ |
469 | ␉␉(*(p)->_p = (c), (int)*(p)->_p++))␊ |
470 | #endif␊ |
471 | ␊ |
472 | #define␉__sfeof(p)␉(((p)->_flags & __SEOF) != 0)␊ |
473 | #define␉__sferror(p)␉(((p)->_flags & __SERR) != 0)␊ |
474 | #define␉__sclearerr(p)␉((void)((p)->_flags &= ~(__SERR|__SEOF)))␊ |
475 | #define␉__sfileno(p)␉((p)->_file)␊ |
476 | ␊ |
477 | #ifndef _ANSI_SOURCE␊ |
478 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
479 | #define␉feof_unlocked(p)␉__sfeof(p)␊ |
480 | #define␉ferror_unlocked(p)␉__sferror(p)␊ |
481 | #define␉clearerr_unlocked(p)␉__sclearerr(p)␊ |
482 | #define␉fileno_unlocked(p)␉__sfileno(p)␊ |
483 | #endif /* not POSIX */␊ |
484 | ␊ |
485 | #ifndef lint␊ |
486 | #define␉getc_unlocked(fp)␉__sgetc(fp)␊ |
487 | #define putc_unlocked(x, fp)␉__sputc(x, fp)␊ |
488 | #endif /* lint */␊ |
489 | ␊ |
490 | #define␉getchar_unlocked()␉getc_unlocked(stdin)␊ |
491 | #define␉putchar_unlocked(x)␉putc_unlocked(x, stdout)␊ |
492 | #endif /* not ANSI */␊ |
493 | ␊ |
494 | #ifdef _USE_EXTENDED_LOCALES_␊ |
495 | #include <xlocale/_stdio.h>␊ |
496 | #endif /* _USE_EXTENDED_LOCALES_ */␊ |
497 | ␊ |
498 | #if defined (__GNUC__) && _FORTIFY_SOURCE > 0 && !defined (__cplusplus)␊ |
499 | /* Security checking functions. */␊ |
500 | #include <secure/_stdio.h>␊ |
501 | #endif␊ |
502 | ␊ |
503 | #endif /* _STDIO_H_ */␊ |
504 |