Mercurial > hg-old > index.cgi
comparison lib/stdio.in.h @ 272:d5392bb5da3c 2.5
Added generated files
author | lost |
---|---|
date | Sun, 16 Aug 2009 17:16:49 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
271:3b793ba7a6c6 | 272:d5392bb5da3c |
---|---|
1 /* A GNU-like <stdio.h>. | |
2 | |
3 Copyright (C) 2004, 2007-2008 Free Software Foundation, Inc. | |
4 | |
5 This program is free software; you can redistribute it and/or modify | |
6 it under the terms of the GNU General Public License as published by | |
7 the Free Software Foundation; either version 3, or (at your option) | |
8 any later version. | |
9 | |
10 This program is distributed in the hope that it will be useful, | |
11 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 GNU General Public License for more details. | |
14 | |
15 You should have received a copy of the GNU General Public License | |
16 along with this program; if not, write to the Free Software Foundation, | |
17 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | |
18 | |
19 #if __GNUC__ >= 3 | |
20 @PRAGMA_SYSTEM_HEADER@ | |
21 #endif | |
22 | |
23 #if defined __need_FILE || defined __need___FILE | |
24 /* Special invocation convention inside glibc header files. */ | |
25 | |
26 #@INCLUDE_NEXT@ @NEXT_STDIO_H@ | |
27 | |
28 #else | |
29 /* Normal invocation convention. */ | |
30 | |
31 #ifndef _GL_STDIO_H | |
32 | |
33 /* The include_next requires a split double-inclusion guard. */ | |
34 #@INCLUDE_NEXT@ @NEXT_STDIO_H@ | |
35 | |
36 #ifndef _GL_STDIO_H | |
37 #define _GL_STDIO_H | |
38 | |
39 #include <stdarg.h> | |
40 #include <stddef.h> | |
41 | |
42 #if (@GNULIB_FSEEKO@ && @REPLACE_FSEEKO@) \ | |
43 || (@GNULIB_FTELLO@ && @REPLACE_FTELLO@) \ | |
44 || (@GNULIB_GETDELIM@ && !@HAVE_DECL_GETDELIM@) \ | |
45 || (@GNULIB_GETLINE@ && (!@HAVE_DECL_GETLINE@ || @REPLACE_GETLINE@)) | |
46 /* Get off_t and ssize_t. */ | |
47 # include <sys/types.h> | |
48 #endif | |
49 | |
50 #ifndef __attribute__ | |
51 /* This feature is available in gcc versions 2.5 and later. */ | |
52 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) | |
53 # define __attribute__(Spec) /* empty */ | |
54 # endif | |
55 /* The __-protected variants of `format' and `printf' attributes | |
56 are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ | |
57 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) | |
58 # define __format__ format | |
59 # define __printf__ printf | |
60 # endif | |
61 #endif | |
62 | |
63 | |
64 /* The definition of GL_LINK_WARNING is copied here. */ | |
65 | |
66 | |
67 #ifdef __cplusplus | |
68 extern "C" { | |
69 #endif | |
70 | |
71 | |
72 #if @GNULIB_FPRINTF_POSIX@ | |
73 # if @REPLACE_FPRINTF@ | |
74 # define fprintf rpl_fprintf | |
75 extern int fprintf (FILE *fp, const char *format, ...) | |
76 __attribute__ ((__format__ (__printf__, 2, 3))); | |
77 # endif | |
78 #elif @GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | |
79 # define fprintf rpl_fprintf | |
80 extern int fprintf (FILE *fp, const char *format, ...) | |
81 __attribute__ ((__format__ (__printf__, 2, 3))); | |
82 #elif defined GNULIB_POSIXCHECK | |
83 # undef fprintf | |
84 # define fprintf \ | |
85 (GL_LINK_WARNING ("fprintf is not always POSIX compliant - " \ | |
86 "use gnulib module fprintf-posix for portable " \ | |
87 "POSIX compliance"), \ | |
88 fprintf) | |
89 #endif | |
90 | |
91 #if @GNULIB_VFPRINTF_POSIX@ | |
92 # if @REPLACE_VFPRINTF@ | |
93 # define vfprintf rpl_vfprintf | |
94 extern int vfprintf (FILE *fp, const char *format, va_list args) | |
95 __attribute__ ((__format__ (__printf__, 2, 0))); | |
96 # endif | |
97 #elif @GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | |
98 # define vfprintf rpl_vfprintf | |
99 extern int vfprintf (FILE *fp, const char *format, va_list args) | |
100 __attribute__ ((__format__ (__printf__, 2, 0))); | |
101 #elif defined GNULIB_POSIXCHECK | |
102 # undef vfprintf | |
103 # define vfprintf(s,f,a) \ | |
104 (GL_LINK_WARNING ("vfprintf is not always POSIX compliant - " \ | |
105 "use gnulib module vfprintf-posix for portable " \ | |
106 "POSIX compliance"), \ | |
107 vfprintf (s, f, a)) | |
108 #endif | |
109 | |
110 #if @GNULIB_PRINTF_POSIX@ | |
111 # if @REPLACE_PRINTF@ | |
112 /* Don't break __attribute__((format(printf,M,N))). */ | |
113 # define printf __printf__ | |
114 extern int printf (const char *format, ...) | |
115 __attribute__ ((__format__ (__printf__, 1, 2))); | |
116 # endif | |
117 #elif @GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | |
118 /* Don't break __attribute__((format(printf,M,N))). */ | |
119 # define printf __printf__ | |
120 extern int printf (const char *format, ...) | |
121 __attribute__ ((__format__ (__printf__, 1, 2))); | |
122 #elif defined GNULIB_POSIXCHECK | |
123 # undef printf | |
124 # define printf \ | |
125 (GL_LINK_WARNING ("printf is not always POSIX compliant - " \ | |
126 "use gnulib module printf-posix for portable " \ | |
127 "POSIX compliance"), \ | |
128 printf) | |
129 /* Don't break __attribute__((format(printf,M,N))). */ | |
130 # define format(kind,m,n) format (__##kind##__, m, n) | |
131 # define __format__(kind,m,n) __format__ (__##kind##__, m, n) | |
132 # define ____printf____ __printf__ | |
133 # define ____scanf____ __scanf__ | |
134 # define ____strftime____ __strftime__ | |
135 # define ____strfmon____ __strfmon__ | |
136 #endif | |
137 | |
138 #if @GNULIB_VPRINTF_POSIX@ | |
139 # if @REPLACE_VPRINTF@ | |
140 # define vprintf rpl_vprintf | |
141 extern int vprintf (const char *format, va_list args) | |
142 __attribute__ ((__format__ (__printf__, 1, 0))); | |
143 # endif | |
144 #elif @GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | |
145 # define vprintf rpl_vprintf | |
146 extern int vprintf (const char *format, va_list args) | |
147 __attribute__ ((__format__ (__printf__, 1, 0))); | |
148 #elif defined GNULIB_POSIXCHECK | |
149 # undef vprintf | |
150 # define vprintf(f,a) \ | |
151 (GL_LINK_WARNING ("vprintf is not always POSIX compliant - " \ | |
152 "use gnulib module vprintf-posix for portable " \ | |
153 "POSIX compliance"), \ | |
154 vprintf (f, a)) | |
155 #endif | |
156 | |
157 #if @GNULIB_SNPRINTF@ | |
158 # if @REPLACE_SNPRINTF@ | |
159 # define snprintf rpl_snprintf | |
160 # endif | |
161 # if @REPLACE_SNPRINTF@ || !@HAVE_DECL_SNPRINTF@ | |
162 extern int snprintf (char *str, size_t size, const char *format, ...) | |
163 __attribute__ ((__format__ (__printf__, 3, 4))); | |
164 # endif | |
165 #elif defined GNULIB_POSIXCHECK | |
166 # undef snprintf | |
167 # define snprintf \ | |
168 (GL_LINK_WARNING ("snprintf is unportable - " \ | |
169 "use gnulib module snprintf for portability"), \ | |
170 snprintf) | |
171 #endif | |
172 | |
173 #if @GNULIB_VSNPRINTF@ | |
174 # if @REPLACE_VSNPRINTF@ | |
175 # define vsnprintf rpl_vsnprintf | |
176 # endif | |
177 # if @REPLACE_VSNPRINTF@ || !@HAVE_DECL_VSNPRINTF@ | |
178 extern int vsnprintf (char *str, size_t size, const char *format, va_list args) | |
179 __attribute__ ((__format__ (__printf__, 3, 0))); | |
180 # endif | |
181 #elif defined GNULIB_POSIXCHECK | |
182 # undef vsnprintf | |
183 # define vsnprintf(b,s,f,a) \ | |
184 (GL_LINK_WARNING ("vsnprintf is unportable - " \ | |
185 "use gnulib module vsnprintf for portability"), \ | |
186 vsnprintf (b, s, f, a)) | |
187 #endif | |
188 | |
189 #if @GNULIB_SPRINTF_POSIX@ | |
190 # if @REPLACE_SPRINTF@ | |
191 # define sprintf rpl_sprintf | |
192 extern int sprintf (char *str, const char *format, ...) | |
193 __attribute__ ((__format__ (__printf__, 2, 3))); | |
194 # endif | |
195 #elif defined GNULIB_POSIXCHECK | |
196 # undef sprintf | |
197 # define sprintf \ | |
198 (GL_LINK_WARNING ("sprintf is not always POSIX compliant - " \ | |
199 "use gnulib module sprintf-posix for portable " \ | |
200 "POSIX compliance"), \ | |
201 sprintf) | |
202 #endif | |
203 | |
204 #if @GNULIB_VSPRINTF_POSIX@ | |
205 # if @REPLACE_VSPRINTF@ | |
206 # define vsprintf rpl_vsprintf | |
207 extern int vsprintf (char *str, const char *format, va_list args) | |
208 __attribute__ ((__format__ (__printf__, 2, 0))); | |
209 # endif | |
210 #elif defined GNULIB_POSIXCHECK | |
211 # undef vsprintf | |
212 # define vsprintf(b,f,a) \ | |
213 (GL_LINK_WARNING ("vsprintf is not always POSIX compliant - " \ | |
214 "use gnulib module vsprintf-posix for portable " \ | |
215 "POSIX compliance"), \ | |
216 vsprintf (b, f, a)) | |
217 #endif | |
218 | |
219 #if @GNULIB_VASPRINTF@ | |
220 # if @REPLACE_VASPRINTF@ | |
221 # define asprintf rpl_asprintf | |
222 # define vasprintf rpl_vasprintf | |
223 # endif | |
224 # if @REPLACE_VASPRINTF@ || !@HAVE_VASPRINTF@ | |
225 /* Write formatted output to a string dynamically allocated with malloc(). | |
226 If the memory allocation succeeds, store the address of the string in | |
227 *RESULT and return the number of resulting bytes, excluding the trailing | |
228 NUL. Upon memory allocation error, or some other error, return -1. */ | |
229 extern int asprintf (char **result, const char *format, ...) | |
230 __attribute__ ((__format__ (__printf__, 2, 3))); | |
231 extern int vasprintf (char **result, const char *format, va_list args) | |
232 __attribute__ ((__format__ (__printf__, 2, 0))); | |
233 # endif | |
234 #endif | |
235 | |
236 #if @GNULIB_OBSTACK_PRINTF@ | |
237 # if @REPLACE_OBSTACK_PRINTF@ | |
238 # define obstack_printf rpl_osbtack_printf | |
239 # define obstack_vprintf rpl_obstack_vprintf | |
240 # endif | |
241 # if @REPLACE_OBSTACK_PRINTF@ || !@HAVE_DECL_OBSTACK_PRINTF@ | |
242 struct obstack; | |
243 /* Grow an obstack with formatted output. Return the number of | |
244 bytes added to OBS. No trailing nul byte is added, and the | |
245 object should be closed with obstack_finish before use. Upon | |
246 memory allocation error, call obstack_alloc_failed_handler. Upon | |
247 other error, return -1. */ | |
248 extern int obstack_printf (struct obstack *obs, const char *format, ...) | |
249 __attribute__ ((__format__ (__printf__, 2, 3))); | |
250 extern int obstack_vprintf (struct obstack *obs, const char *format, | |
251 va_list args) | |
252 __attribute__ ((__format__ (__printf__, 2, 0))); | |
253 # endif | |
254 #endif | |
255 | |
256 #if @GNULIB_FOPEN@ | |
257 # if @REPLACE_FOPEN@ | |
258 # undef fopen | |
259 # define fopen rpl_fopen | |
260 extern FILE * fopen (const char *filename, const char *mode); | |
261 # endif | |
262 #elif defined GNULIB_POSIXCHECK | |
263 # undef fopen | |
264 # define fopen(f,m) \ | |
265 (GL_LINK_WARNING ("fopen on Win32 platforms is not POSIX compatible - " \ | |
266 "use gnulib module fopen for portability"), \ | |
267 fopen (f, m)) | |
268 #endif | |
269 | |
270 #if @GNULIB_FREOPEN@ | |
271 # if @REPLACE_FREOPEN@ | |
272 # undef freopen | |
273 # define freopen rpl_freopen | |
274 extern FILE * freopen (const char *filename, const char *mode, FILE *stream); | |
275 # endif | |
276 #elif defined GNULIB_POSIXCHECK | |
277 # undef freopen | |
278 # define freopen(f,m,s) \ | |
279 (GL_LINK_WARNING ("freopen on Win32 platforms is not POSIX compatible - " \ | |
280 "use gnulib module freopen for portability"), \ | |
281 freopen (f, m, s)) | |
282 #endif | |
283 | |
284 #if @GNULIB_FSEEKO@ | |
285 # if @REPLACE_FSEEKO@ | |
286 /* Provide fseek, fseeko functions that are aware of a preceding | |
287 fflush(), and which detect pipes. */ | |
288 # define fseeko rpl_fseeko | |
289 extern int fseeko (FILE *fp, off_t offset, int whence); | |
290 # define fseek(fp, offset, whence) fseeko (fp, (off_t)(offset), whence) | |
291 # endif | |
292 #elif defined GNULIB_POSIXCHECK | |
293 # undef fseeko | |
294 # define fseeko(f,o,w) \ | |
295 (GL_LINK_WARNING ("fseeko is unportable - " \ | |
296 "use gnulib module fseeko for portability"), \ | |
297 fseeko (f, o, w)) | |
298 #endif | |
299 | |
300 #if @GNULIB_FSEEK@ && @REPLACE_FSEEK@ | |
301 extern int rpl_fseek (FILE *fp, long offset, int whence); | |
302 # undef fseek | |
303 # if defined GNULIB_POSIXCHECK | |
304 # define fseek(f,o,w) \ | |
305 (GL_LINK_WARNING ("fseek cannot handle files larger than 4 GB " \ | |
306 "on 32-bit platforms - " \ | |
307 "use fseeko function for handling of large files"), \ | |
308 rpl_fseek (f, o, w)) | |
309 # else | |
310 # define fseek rpl_fseek | |
311 # endif | |
312 #elif defined GNULIB_POSIXCHECK | |
313 # ifndef fseek | |
314 # define fseek(f,o,w) \ | |
315 (GL_LINK_WARNING ("fseek cannot handle files larger than 4 GB " \ | |
316 "on 32-bit platforms - " \ | |
317 "use fseeko function for handling of large files"), \ | |
318 fseek (f, o, w)) | |
319 # endif | |
320 #endif | |
321 | |
322 #if @GNULIB_FTELLO@ | |
323 # if @REPLACE_FTELLO@ | |
324 # define ftello rpl_ftello | |
325 extern off_t ftello (FILE *fp); | |
326 # define ftell(fp) ftello (fp) | |
327 # endif | |
328 #elif defined GNULIB_POSIXCHECK | |
329 # undef ftello | |
330 # define ftello(f) \ | |
331 (GL_LINK_WARNING ("ftello is unportable - " \ | |
332 "use gnulib module ftello for portability"), \ | |
333 ftello (f)) | |
334 #endif | |
335 | |
336 #if @GNULIB_FTELL@ && @REPLACE_FTELL@ | |
337 extern long rpl_ftell (FILE *fp); | |
338 # undef ftell | |
339 # if GNULIB_POSIXCHECK | |
340 # define ftell(f) \ | |
341 (GL_LINK_WARNING ("ftell cannot handle files larger than 4 GB " \ | |
342 "on 32-bit platforms - " \ | |
343 "use ftello function for handling of large files"), \ | |
344 rpl_ftell (f)) | |
345 # else | |
346 # define ftell rpl_ftell | |
347 # endif | |
348 #elif defined GNULIB_POSIXCHECK | |
349 # ifndef ftell | |
350 # define ftell(f) \ | |
351 (GL_LINK_WARNING ("ftell cannot handle files larger than 4 GB " \ | |
352 "on 32-bit platforms - " \ | |
353 "use ftello function for handling of large files"), \ | |
354 ftell (f)) | |
355 # endif | |
356 #endif | |
357 | |
358 #if @GNULIB_FFLUSH@ | |
359 # if @REPLACE_FFLUSH@ | |
360 # define fflush rpl_fflush | |
361 /* Flush all pending data on STREAM according to POSIX rules. Both | |
362 output and seekable input streams are supported. | |
363 Note! LOSS OF DATA can occur if fflush is applied on an input stream | |
364 that is _not_seekable_ or on an update stream that is _not_seekable_ | |
365 and in which the most recent operation was input. Seekability can | |
366 be tested with lseek(fileno(fp),0,SEEK_CUR). */ | |
367 extern int fflush (FILE *gl_stream); | |
368 # endif | |
369 #elif defined GNULIB_POSIXCHECK | |
370 # undef fflush | |
371 # define fflush(f) \ | |
372 (GL_LINK_WARNING ("fflush is not always POSIX compliant - " \ | |
373 "use gnulib module fflush for portable " \ | |
374 "POSIX compliance"), \ | |
375 fflush (f)) | |
376 #endif | |
377 | |
378 #if @GNULIB_FCLOSE@ | |
379 # if @REPLACE_FCLOSE@ | |
380 # define fclose rpl_fclose | |
381 /* Close STREAM and its underlying file descriptor. */ | |
382 extern int fclose (FILE *stream); | |
383 # endif | |
384 #elif defined GNULIB_POSIXCHECK | |
385 # undef fclose | |
386 # define fclose(f) \ | |
387 (GL_LINK_WARNING ("fclose is not always POSIX compliant - " \ | |
388 "use gnulib module fclose for portable " \ | |
389 "POSIX compliance"), \ | |
390 fclose (f)) | |
391 #endif | |
392 | |
393 #if @GNULIB_FPUTC@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | |
394 # undef fputc | |
395 # define fputc rpl_fputc | |
396 extern int fputc (int c, FILE *stream); | |
397 #endif | |
398 | |
399 #if @GNULIB_PUTC@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | |
400 # undef putc | |
401 # define putc rpl_fputc | |
402 extern int putc (int c, FILE *stream); | |
403 #endif | |
404 | |
405 #if @GNULIB_PUTCHAR@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | |
406 # undef putchar | |
407 # define putchar rpl_putchar | |
408 extern int putchar (int c); | |
409 #endif | |
410 | |
411 #if @GNULIB_FPUTS@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | |
412 # undef fputs | |
413 # define fputs rpl_fputs | |
414 extern int fputs (const char *string, FILE *stream); | |
415 #endif | |
416 | |
417 #if @GNULIB_PUTS@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | |
418 # undef puts | |
419 # define puts rpl_puts | |
420 extern int puts (const char *string); | |
421 #endif | |
422 | |
423 #if @GNULIB_FWRITE@ && @REPLACE_STDIO_WRITE_FUNCS@ && @GNULIB_STDIO_H_SIGPIPE@ | |
424 # undef fwrite | |
425 # define fwrite rpl_fwrite | |
426 extern size_t fwrite (const void *ptr, size_t s, size_t n, FILE *stream); | |
427 #endif | |
428 | |
429 #if @GNULIB_GETDELIM@ | |
430 # if !@HAVE_DECL_GETDELIM@ | |
431 /* Read input, up to (and including) the next occurrence of DELIMITER, from | |
432 STREAM, store it in *LINEPTR (and NUL-terminate it). | |
433 *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE | |
434 bytes of space. It is realloc'd as necessary. | |
435 Return the number of bytes read and stored at *LINEPTR (not including the | |
436 NUL terminator), or -1 on error or EOF. */ | |
437 extern ssize_t getdelim (char **lineptr, size_t *linesize, int delimiter, | |
438 FILE *stream); | |
439 # endif | |
440 #elif defined GNULIB_POSIXCHECK | |
441 # undef getdelim | |
442 # define getdelim(l, s, d, f) \ | |
443 (GL_LINK_WARNING ("getdelim is unportable - " \ | |
444 "use gnulib module getdelim for portability"), \ | |
445 getdelim (l, s, d, f)) | |
446 #endif | |
447 | |
448 #if @GNULIB_GETLINE@ | |
449 # if @REPLACE_GETLINE@ | |
450 # undef getline | |
451 # define getline rpl_getline | |
452 # endif | |
453 # if !@HAVE_DECL_GETLINE@ || @REPLACE_GETLINE@ | |
454 /* Read a line, up to (and including) the next newline, from STREAM, store it | |
455 in *LINEPTR (and NUL-terminate it). | |
456 *LINEPTR is a pointer returned from malloc (or NULL), pointing to *LINESIZE | |
457 bytes of space. It is realloc'd as necessary. | |
458 Return the number of bytes read and stored at *LINEPTR (not including the | |
459 NUL terminator), or -1 on error or EOF. */ | |
460 extern ssize_t getline (char **lineptr, size_t *linesize, FILE *stream); | |
461 # endif | |
462 #elif defined GNULIB_POSIXCHECK | |
463 # undef getline | |
464 # define getline(l, s, f) \ | |
465 (GL_LINK_WARNING ("getline is unportable - " \ | |
466 "use gnulib module getline for portability"), \ | |
467 getline (l, s, f)) | |
468 #endif | |
469 | |
470 #if @GNULIB_PERROR@ | |
471 # if @REPLACE_PERROR@ | |
472 # define perror rpl_perror | |
473 /* Print a message to standard error, describing the value of ERRNO, | |
474 (if STRING is not NULL and not empty) prefixed with STRING and ": ", | |
475 and terminated with a newline. */ | |
476 extern void perror (const char *string); | |
477 # endif | |
478 #elif defined GNULIB_POSIXCHECK | |
479 # undef perror | |
480 # define perror(s) \ | |
481 (GL_LINK_WARNING ("perror is not always POSIX compliant - " \ | |
482 "use gnulib module perror for portability"), \ | |
483 perror (s)) | |
484 #endif | |
485 | |
486 #ifdef __cplusplus | |
487 } | |
488 #endif | |
489 | |
490 #endif /* _GL_STDIO_H */ | |
491 #endif /* _GL_STDIO_H */ | |
492 #endif |