OSDN Git Service

dirent: push dirent type to prototypes
[uclinux-h8/uClibc.git] / include / stdio.h
1 /*
2    Copyright (C) 1991,1994-2002,2003,2004 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    The GNU C Library 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 GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, write to the Free
17    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18    02111-1307 USA.  */
19
20 /*
21  *      ISO C99 Standard: 7.19 Input/output     <stdio.h>
22  */
23
24 #ifndef _STDIO_H
25
26 #if !defined __need_FILE && !defined __need___FILE
27 # define _STDIO_H       1
28 # include <features.h>
29
30 __BEGIN_DECLS
31
32 # define __need_size_t
33 # define __need_NULL
34 # include <stddef.h>
35
36 # include <bits/types.h>
37 # define __need_FILE
38 # define __need___FILE
39 #endif /* Don't need FILE.  */
40
41
42 #if !defined __FILE_defined && defined __need_FILE
43
44 __BEGIN_NAMESPACE_STD
45 /* The opaque type of streams.  This is the definition used elsewhere.  */
46 typedef struct __STDIO_FILE_STRUCT FILE;
47 __END_NAMESPACE_STD
48 #if defined __USE_LARGEFILE64 || defined __USE_SVID || defined __USE_POSIX \
49     || defined __USE_BSD || defined __USE_ISOC99 || defined __USE_XOPEN \
50     || defined __USE_POSIX2
51 __USING_NAMESPACE_STD(FILE)
52 #endif
53
54 # define __FILE_defined 1
55 #endif /* FILE not defined.  */
56 #undef  __need_FILE
57
58
59 #if !defined ____FILE_defined && defined __need___FILE
60
61 /* The opaque type of streams.  This is the definition used elsewhere.  */
62 typedef struct __STDIO_FILE_STRUCT __FILE;
63
64 # define ____FILE_defined       1
65 #endif /* __FILE not defined.  */
66 #undef  __need___FILE
67
68
69 #ifdef  _STDIO_H
70 #undef _STDIO_USES_IOSTREAM
71
72 #include <bits/uClibc_stdio.h>
73
74 /* This define avoids name pollution if we're using GNU stdarg.h */
75 # define __need___va_list
76 #include <stdarg.h>
77
78 /* The type of the second argument to `fgetpos' and `fsetpos'.  */
79 __BEGIN_NAMESPACE_STD
80 #ifndef __USE_FILE_OFFSET64
81 typedef __STDIO_fpos_t fpos_t;
82 #else
83 typedef __STDIO_fpos64_t fpos_t;
84 #endif
85 __END_NAMESPACE_STD
86 #ifdef __USE_LARGEFILE64
87 typedef __STDIO_fpos64_t fpos64_t;
88 #endif
89
90 /* The possibilities for the third argument to `setvbuf'.  */
91 #define _IOFBF __STDIO_IOFBF            /* Fully buffered.  */
92 #define _IOLBF __STDIO_IOLBF            /* Line buffered.  */
93 #define _IONBF __STDIO_IONBF            /* No buffering.  */
94
95
96 /* Default buffer size.  */
97 #ifndef BUFSIZ
98 # define BUFSIZ __STDIO_BUFSIZ
99 #endif
100
101
102 /* End of file character.
103    Some things throughout the library rely on this being -1.  */
104 #ifndef EOF
105 # define EOF (-1)
106 #endif
107
108
109 /* The possibilities for the third argument to `fseek'.
110    These values should not be changed.  */
111 #define SEEK_SET        0       /* Seek from beginning of file.  */
112 #define SEEK_CUR        1       /* Seek from current position.  */
113 #define SEEK_END        2       /* Seek from end of file.  */
114
115
116 #if defined __USE_SVID || defined __USE_XOPEN
117 /* Default path prefix for `tempnam' and `tmpnam'.  */
118 # define P_tmpdir       "/tmp"
119 #endif
120
121
122 /* Get the values:
123    L_tmpnam     How long an array of chars must be to be passed to `tmpnam'.
124    TMP_MAX      The minimum number of unique filenames generated by tmpnam
125                 (and tempnam when it uses tmpnam's name space),
126                 or tempnam (the two are separate).
127    L_ctermid    How long an array to pass to `ctermid'.
128    L_cuserid    How long an array to pass to `cuserid'.
129    FOPEN_MAX    Minimum number of files that can be open at once.
130    FILENAME_MAX Maximum length of a filename.  */
131 #include <bits/stdio_lim.h>
132
133
134 /* Standard streams.  */
135 extern FILE *stdin;             /* Standard input stream.  */
136 extern FILE *stdout;        /* Standard output stream.  */
137 extern FILE *stderr;        /* Standard error output stream.  */
138 /* C89/C99 say they're macros.  Make them happy.  */
139 #define stdin stdin
140 #define stdout stdout
141 #define stderr stderr
142
143 __BEGIN_NAMESPACE_STD
144 /* Remove file FILENAME.  */
145 extern int remove (__const char *__filename) __THROW;
146 libc_hidden_proto(remove)
147 /* Rename file OLD to NEW.  */
148 extern int rename (__const char *__old, __const char *__new) __THROW;
149 __END_NAMESPACE_STD
150
151
152 __BEGIN_NAMESPACE_STD
153 /* Create a temporary file and open it read/write.
154
155    This function is a possible cancellation points and therefore not
156    marked with __THROW.  */
157 #ifndef __USE_FILE_OFFSET64
158 extern FILE *tmpfile (void) __wur;
159 #else
160 # ifdef __REDIRECT
161 extern FILE *__REDIRECT (tmpfile, (void), tmpfile64) __wur;
162 # else
163 #  define tmpfile tmpfile64
164 # endif
165 #endif
166
167 #ifdef __USE_LARGEFILE64
168 extern FILE *tmpfile64 (void) __wur;
169 #endif
170
171 /* Generate a temporary filename.  */
172 extern char *tmpnam (char *__s) __THROW __wur;
173 __END_NAMESPACE_STD
174
175 #ifdef __USE_MISC
176 /* This is the reentrant variant of `tmpnam'.  The only difference is
177    that it does not allow S to be NULL.  */
178 extern char *tmpnam_r (char *__s) __THROW __wur;
179 #endif
180
181
182 #if defined __USE_SVID || defined __USE_XOPEN
183 /* Generate a unique temporary filename using up to five characters of PFX
184    if it is not NULL.  The directory to put this file in is searched for
185    as follows: First the environment variable "TMPDIR" is checked.
186    If it contains the name of a writable directory, that directory is used.
187    If not and if DIR is not NULL, that value is checked.  If that fails,
188    P_tmpdir is tried and finally "/tmp".  The storage for the filename
189    is allocated by `malloc'.  */
190 extern char *tempnam (__const char *__dir, __const char *__pfx)
191      __THROW __attribute_malloc__ __wur;
192 #endif
193
194
195 __BEGIN_NAMESPACE_STD
196 /* Close STREAM.
197
198    This function is a possible cancellation point and therefore not
199    marked with __THROW.  */
200 extern int fclose (FILE *__stream);
201 libc_hidden_proto(fclose)
202 /* Flush STREAM, or all streams if STREAM is NULL.
203
204    This function is a possible cancellation point and therefore not
205    marked with __THROW.  */
206 extern int fflush (FILE *__stream);
207 libc_hidden_proto(fflush)
208 __END_NAMESPACE_STD
209
210 #ifdef __USE_MISC
211 /* Faster versions when locking is not required.
212
213    This function is not part of POSIX and therefore no official
214    cancellation point.  But due to similarity with an POSIX interface
215    or due to the implementation it is a cancellation point and
216    therefore not marked with __THROW.  */
217 extern int fflush_unlocked (FILE *__stream);
218 libc_hidden_proto(fflush_unlocked)
219 #endif
220
221 #ifdef __USE_GNU
222 /* Close all streams.
223
224    This function is not part of POSIX and therefore no official
225    cancellation point.  But due to similarity with an POSIX interface
226    or due to the implementation it is a cancellation point and
227    therefore not marked with __THROW.  */
228 extern int fcloseall (void);
229 #endif
230
231
232 __BEGIN_NAMESPACE_STD
233 #ifndef __USE_FILE_OFFSET64
234 /* Open a file and create a new stream for it.
235
236    This function is a possible cancellation point and therefore not
237    marked with __THROW.  */
238 extern FILE *fopen (__const char *__restrict __filename,
239                     __const char *__restrict __modes) __wur;
240 libc_hidden_proto(fopen)
241 /* Open a file, replacing an existing stream with it.
242
243    This function is a possible cancellation point and therefore not
244    marked with __THROW.  */
245 extern FILE *freopen (__const char *__restrict __filename,
246                       __const char *__restrict __modes,
247                       FILE *__restrict __stream) __wur;
248 #else
249 # ifdef __REDIRECT
250 extern FILE *__REDIRECT (fopen, (__const char *__restrict __filename,
251                                  __const char *__restrict __modes), fopen64)
252   __wur;
253 extern FILE *__REDIRECT (freopen, (__const char *__restrict __filename,
254                                    __const char *__restrict __modes,
255                                    FILE *__restrict __stream), freopen64)
256   __wur;
257 # else
258 #  define fopen fopen64
259 #  define freopen freopen64
260 # endif
261 #endif
262 __END_NAMESPACE_STD
263 #ifdef __USE_LARGEFILE64
264 extern FILE *fopen64 (__const char *__restrict __filename,
265                       __const char *__restrict __modes) __wur;
266 libc_hidden_proto(fopen64)
267 extern FILE *freopen64 (__const char *__restrict __filename,
268                         __const char *__restrict __modes,
269                         FILE *__restrict __stream) __wur;
270 #endif
271
272 #ifdef  __USE_POSIX
273 /* Create a new stream that refers to an existing system file descriptor.  */
274 extern FILE *fdopen (int __fd, __const char *__modes) __THROW __wur;
275 libc_hidden_proto(fdopen)
276 #endif
277
278 #ifdef  __USE_GNU
279 #ifdef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
280 /* Create a new stream that refers to the given magic cookie,
281    and uses the given functions for input and output.  */
282 extern FILE *fopencookie (void *__restrict __magic_cookie,
283                           __const char *__restrict __modes,
284                           _IO_cookie_io_functions_t __io_funcs) __THROW __wur;
285 libc_hidden_proto(fopencookie)
286
287 /* Create a new stream that refers to a memory buffer.  */
288 extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
289   __THROW __wur;
290
291 /* Open a stream that writes into a malloc'd buffer that is expanded as
292    necessary.  *BUFLOC and *SIZELOC are updated with the buffer's location
293    and the number of characters written on fflush or fclose.  */
294 extern FILE *open_memstream (char **__restrict __bufloc,
295                              size_t *__restrict __sizeloc) __THROW __wur;
296 libc_hidden_proto(open_memstream)
297 #endif
298 #endif
299
300
301 __BEGIN_NAMESPACE_STD
302 /* If BUF is NULL, make STREAM unbuffered.
303    Else make it use buffer BUF, of size BUFSIZ.  */
304 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __THROW;
305 /* Make STREAM use buffering mode MODE.
306    If BUF is not NULL, use N bytes of it for buffering;
307    else allocate an internal buffer N bytes long.  */
308 extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
309                     int __modes, size_t __n) __THROW;
310 libc_hidden_proto(setvbuf)
311 __END_NAMESPACE_STD
312
313 #ifdef  __USE_BSD
314 /* If BUF is NULL, make STREAM unbuffered.
315    Else make it use SIZE bytes of BUF for buffering.  */
316 extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
317                        size_t __size) __THROW;
318
319 /* Make STREAM line-buffered.  */
320 extern void setlinebuf (FILE *__stream) __THROW;
321 #endif
322
323
324 __BEGIN_NAMESPACE_STD
325 /* Write formatted output to STREAM.
326
327    This function is a possible cancellation point and therefore not
328    marked with __THROW.  */
329 extern int fprintf (FILE *__restrict __stream,
330                     __const char *__restrict __format, ...);
331 libc_hidden_proto(fprintf)
332 /* Write formatted output to stdout.
333
334    This function is a possible cancellation point and therefore not
335    marked with __THROW.  */
336 extern int printf (__const char *__restrict __format, ...);
337 libc_hidden_proto(printf)
338 /* Write formatted output to S.  */
339 extern int sprintf (char *__restrict __s,
340                     __const char *__restrict __format, ...)
341      __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
342 libc_hidden_proto(sprintf)
343
344 /* Write formatted output to S from argument list ARG.
345
346    This function is a possible cancellation point and therefore not
347    marked with __THROW.  */
348 extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
349                      __gnuc_va_list __arg);
350 libc_hidden_proto(vfprintf)
351 /* Write formatted output to stdout from argument list ARG.
352
353    This function is a possible cancellation point and therefore not
354    marked with __THROW.  */
355 extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
356 /* Write formatted output to S from argument list ARG.  */
357 extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
358                      __gnuc_va_list __arg)
359      __THROW __attribute__ ((__format__ (__printf__, 2, 0)));
360 __END_NAMESPACE_STD
361
362 #if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98
363 __BEGIN_NAMESPACE_C99
364 /* Maximum chars of output to write in MAXLEN.  */
365 extern int snprintf (char *__restrict __s, size_t __maxlen,
366                      __const char *__restrict __format, ...)
367      __THROW __attribute__ ((__format__ (__printf__, 3, 4)));
368 libc_hidden_proto(snprintf)
369
370 extern int vsnprintf (char *__restrict __s, size_t __maxlen,
371                       __const char *__restrict __format, __gnuc_va_list __arg)
372      __THROW __attribute__ ((__format__ (__printf__, 3, 0)));
373 libc_hidden_proto(vsnprintf)
374 __END_NAMESPACE_C99
375 #endif
376
377 #ifdef __USE_GNU
378 /* Write formatted output to a string dynamically allocated with `malloc'.
379    Store the address of the string in *PTR.  */
380 extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
381                       __gnuc_va_list __arg)
382      __THROW __attribute__ ((__format__ (__printf__, 2, 0))) __wur;
383 libc_hidden_proto(vasprintf)
384 #if 0 /* uClibc: disabled */
385 extern int __asprintf (char **__restrict __ptr,
386                        __const char *__restrict __fmt, ...)
387      __THROW __attribute__ ((__format__ (__printf__, 2, 3))) __wur;
388 #endif
389 extern int asprintf (char **__restrict __ptr,
390                      __const char *__restrict __fmt, ...)
391      __THROW __attribute__ ((__format__ (__printf__, 2, 3))) __wur;
392 libc_hidden_proto(asprintf)
393
394 /* Write formatted output to a file descriptor.
395
396    These functions are not part of POSIX and therefore no official
397    cancellation point.  But due to similarity with an POSIX interface
398    or due to the implementation they are cancellation points and
399    therefore not marked with __THROW.  */
400 extern int vdprintf (int __fd, __const char *__restrict __fmt,
401                      __gnuc_va_list __arg)
402      __attribute__ ((__format__ (__printf__, 2, 0)));
403 libc_hidden_proto(vdprintf)
404 extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
405      __attribute__ ((__format__ (__printf__, 2, 3)));
406 #endif
407
408
409 __BEGIN_NAMESPACE_STD
410 /* Read formatted input from STREAM.
411
412    This function is a possible cancellation point and therefore not
413    marked with __THROW.  */
414 extern int fscanf (FILE *__restrict __stream,
415                    __const char *__restrict __format, ...)
416      __attribute__ ((__format__ (__scanf__, 2, 3))) __wur;
417 libc_hidden_proto(fscanf)
418 /* Read formatted input from stdin.
419
420    This function is a possible cancellation point and therefore not
421    marked with __THROW.  */
422 extern int scanf (__const char *__restrict __format, ...)
423      __attribute__ ((__format__ (__scanf__, 1, 2))) __wur;
424 /* Read formatted input from S.  */
425 extern int sscanf (__const char *__restrict __s,
426                    __const char *__restrict __format, ...)
427      __THROW __attribute__ ((__format__ (__scanf__, 2, 3)));
428 libc_hidden_proto(sscanf)
429 __END_NAMESPACE_STD
430
431 #ifdef  __USE_ISOC99
432 __BEGIN_NAMESPACE_C99
433 /* Read formatted input from S into argument list ARG.
434
435    This function is a possible cancellation point and therefore not
436    marked with __THROW.  */
437 extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
438                     __gnuc_va_list __arg)
439      __attribute__ ((__format__ (__scanf__, 2, 0))) __wur;
440 libc_hidden_proto(vfscanf)
441
442 /* Read formatted input from stdin into argument list ARG.
443
444    This function is a possible cancellation point and therefore not
445    marked with __THROW.  */
446 extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
447      __attribute__ ((__format__ (__scanf__, 1, 0))) __wur;
448 libc_hidden_proto(vscanf)
449
450 /* Read formatted input from S into argument list ARG.  */
451 extern int vsscanf (__const char *__restrict __s,
452                     __const char *__restrict __format, __gnuc_va_list __arg)
453      __THROW __attribute__ ((__format__ (__scanf__, 2, 0)));
454 libc_hidden_proto(vsscanf)
455 __END_NAMESPACE_C99
456 #endif /* Use ISO C9x.  */
457
458
459 __BEGIN_NAMESPACE_STD
460 /* Read a character from STREAM.
461
462    These functions are possible cancellation points and therefore not
463    marked with __THROW.  */
464 extern int fgetc (FILE *__stream);
465 libc_hidden_proto(fgetc)
466 extern int getc (FILE *__stream);
467
468 /* Read a character from stdin.
469
470    This function is a possible cancellation point and therefore not
471    marked with __THROW.  */
472 extern int getchar (void);
473 __END_NAMESPACE_STD
474
475 /* The C standard explicitly says this is a macro, so we always do the
476    optimization for it.  */
477 #define getc(_fp) __GETC(_fp)
478
479 #if defined __USE_POSIX || defined __USE_MISC
480 /* These are defined in POSIX.1:1996.
481
482    These functions are possible cancellation points and therefore not
483    marked with __THROW.  */
484 extern int getc_unlocked (FILE *__stream);
485 libc_hidden_proto(getc_unlocked)
486 extern int getchar_unlocked (void);
487 libc_hidden_proto(getchar_unlocked)
488
489 /* SUSv3 allows getc_unlocked to be a macro */
490 #define getc_unlocked(_fp) __GETC_UNLOCKED(_fp)
491 #endif /* Use POSIX or MISC.  */
492
493 #ifdef __USE_MISC
494 /* Faster version when locking is not necessary.
495
496    This function is not part of POSIX and therefore no official
497    cancellation point.  But due to similarity with an POSIX interface
498    or due to the implementation it is a cancellation point and
499    therefore not marked with __THROW.  */
500 extern int fgetc_unlocked (FILE *__stream);
501 libc_hidden_proto(fgetc_unlocked)
502 #endif /* Use MISC.  */
503
504
505 __BEGIN_NAMESPACE_STD
506 /* Write a character to STREAM.
507
508    These functions are possible cancellation points and therefore not
509    marked with __THROW.
510
511    These functions is a possible cancellation point and therefore not
512    marked with __THROW.  */
513 extern int fputc (int __c, FILE *__stream);
514 libc_hidden_proto(fputc)
515 extern int putc (int __c, FILE *__stream);
516 libc_hidden_proto(putc)
517
518 /* Write a character to stdout.
519
520    This function is a possible cancellation point and therefore not
521    marked with __THROW.  */
522 extern int putchar (int __c);
523 __END_NAMESPACE_STD
524
525 /* The C standard explicitly says this can be a macro,
526    so we always do the optimization for it.  */
527 #define putc(_ch, _fp) __PUTC(_ch, _fp)
528
529 #ifdef __USE_MISC
530 /* Faster version when locking is not necessary.
531
532    This function is not part of POSIX and therefore no official
533    cancellation point.  But due to similarity with an POSIX interface
534    or due to the implementation it is a cancellation point and
535    therefore not marked with __THROW.  */
536 extern int fputc_unlocked (int __c, FILE *__stream);
537 libc_hidden_proto(fputc_unlocked)
538 #endif /* Use MISC.  */
539
540 #if defined __USE_POSIX || defined __USE_MISC
541 /* These are defined in POSIX.1:1996.
542
543    These functions are possible cancellation points and therefore not
544    marked with __THROW.  */
545 extern int putc_unlocked (int __c, FILE *__stream);
546 libc_hidden_proto(putc_unlocked)
547 extern int putchar_unlocked (int __c);
548
549 /* SUSv3 allows putc_unlocked to be a macro */
550 #define putc_unlocked(_ch, _fp) __PUTC_UNLOCKED(_ch, _fp)
551 #endif /* Use POSIX or MISC.  */
552
553
554 #if defined __USE_SVID || defined __USE_MISC \
555     || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
556 /* Get a word (int) from STREAM.  */
557 extern int getw (FILE *__stream);
558
559 /* Write a word (int) to STREAM.  */
560 extern int putw (int __w, FILE *__stream);
561 #endif
562
563
564 __BEGIN_NAMESPACE_STD
565 /* Get a newline-terminated string of finite length from STREAM.
566
567    This function is a possible cancellation point and therefore not
568    marked with __THROW.  */
569 extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
570      __wur;
571 libc_hidden_proto(fgets)
572
573 /* Get a newline-terminated string from stdin, removing the newline.
574    DO NOT USE THIS FUNCTION!!  There is no limit on how much it will read.
575
576    This function is a possible cancellation point and therefore not
577    marked with __THROW.  */
578 extern char *gets (char *__s) __wur;
579 __END_NAMESPACE_STD
580
581 #ifdef __USE_GNU
582 /* This function does the same as `fgets' but does not lock the stream.
583
584    This function is not part of POSIX and therefore no official
585    cancellation point.  But due to similarity with an POSIX interface
586    or due to the implementation it is a cancellation point and
587    therefore not marked with __THROW.  */
588 extern char *fgets_unlocked (char *__restrict __s, int __n,
589                              FILE *__restrict __stream) __wur;
590 libc_hidden_proto(fgets_unlocked)
591 #endif
592
593
594 #ifdef  __USE_GNU
595 /* Read up to (and including) a DELIMITER from STREAM into *LINEPTR
596    (and null-terminate it). *LINEPTR is a pointer returned from malloc (or
597    NULL), pointing to *N characters of space.  It is realloc'd as
598    necessary.  Returns the number of characters read (not including the
599    null terminator), or -1 on error or EOF.
600
601    These functions are not part of POSIX and therefore no official
602    cancellation point.  But due to similarity with an POSIX interface
603    or due to the implementation they are cancellation points and
604    therefore not marked with __THROW.  */
605 #if 0 /* uClibc: disabled */
606 extern __ssize_t __getdelim (char **__restrict __lineptr,
607                                size_t *__restrict __n, int __delimiter,
608                                FILE *__restrict __stream) __wur;
609 #endif
610 extern __ssize_t getdelim (char **__restrict __lineptr,
611                              size_t *__restrict __n, int __delimiter,
612                              FILE *__restrict __stream) __wur;
613 libc_hidden_proto(getdelim)
614
615 /* Like `getdelim', but reads up to a newline.
616
617    This function is not part of POSIX and therefore no official
618    cancellation point.  But due to similarity with an POSIX interface
619    or due to the implementation it is a cancellation point and
620    therefore not marked with __THROW.  */
621 extern __ssize_t getline (char **__restrict __lineptr,
622                             size_t *__restrict __n,
623                             FILE *__restrict __stream) __wur;
624 libc_hidden_proto(getline)
625 #endif
626
627
628 __BEGIN_NAMESPACE_STD
629 /* Write a string to STREAM.
630
631    This function is a possible cancellation points and therefore not
632    marked with __THROW.  */
633 extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
634 libc_hidden_proto(fputs)
635
636 /* Write a string, followed by a newline, to stdout.
637
638    This function is a possible cancellation points and therefore not
639    marked with __THROW.  */
640 extern int puts (__const char *__s);
641
642
643 /* Push a character back onto the input buffer of STREAM.
644
645    This function is a possible cancellation points and therefore not
646    marked with __THROW.  */
647 extern int ungetc (int __c, FILE *__stream);
648 libc_hidden_proto(ungetc)
649
650
651 /* Read chunks of generic data from STREAM.
652
653    This function is a possible cancellation points and therefore not
654    marked with __THROW.  */
655 extern size_t fread (void *__restrict __ptr, size_t __size,
656                      size_t __n, FILE *__restrict __stream) __wur;
657 libc_hidden_proto(fread)
658 /* Write chunks of generic data to STREAM.
659
660    This function is a possible cancellation points and therefore not
661    marked with __THROW.  */
662 extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
663                       size_t __n, FILE *__restrict __s) __wur;
664 libc_hidden_proto(fwrite)
665 __END_NAMESPACE_STD
666
667 #ifdef __USE_GNU
668 /* This function does the same as `fputs' but does not lock the stream.
669
670    This function is not part of POSIX and therefore no official
671    cancellation point.  But due to similarity with an POSIX interface
672    or due to the implementation it is a cancellation point and
673    therefore not marked with __THROW.  */
674 extern int fputs_unlocked (__const char *__restrict __s,
675                            FILE *__restrict __stream);
676 libc_hidden_proto(fputs_unlocked)
677 #endif
678
679 #ifdef __USE_MISC
680 /* Faster versions when locking is not necessary.
681
682    These functions are not part of POSIX and therefore no official
683    cancellation point.  But due to similarity with an POSIX interface
684    or due to the implementation they are cancellation points and
685    therefore not marked with __THROW.  */
686 extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
687                               size_t __n, FILE *__restrict __stream) __wur;
688 libc_hidden_proto(fread_unlocked)
689 extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
690                                size_t __n, FILE *__restrict __stream) __wur;
691 libc_hidden_proto(fwrite_unlocked)
692 #endif
693
694
695 __BEGIN_NAMESPACE_STD
696 /* Seek to a certain position on STREAM.
697
698    This function is a possible cancellation point and therefore not
699    marked with __THROW.  */
700 extern int fseek (FILE *__stream, long int __off, int __whence);
701 libc_hidden_proto(fseek)
702 /* Return the current position of STREAM.
703
704    This function is a possible cancellation point and therefore not
705    marked with __THROW.  */
706 extern long int ftell (FILE *__stream) __wur;
707 libc_hidden_proto(ftell)
708 /* Rewind to the beginning of STREAM.
709
710    This function is a possible cancellation point and therefore not
711    marked with __THROW.  */
712 extern void rewind (FILE *__stream);
713 libc_hidden_proto(rewind)
714 __END_NAMESPACE_STD
715
716 /* The Single Unix Specification, Version 2, specifies an alternative,
717    more adequate interface for the two functions above which deal with
718    file offset.  `long int' is not the right type.  These definitions
719    are originally defined in the Large File Support API.  */
720
721 #if defined __USE_LARGEFILE || defined __USE_XOPEN2K
722 # ifndef __USE_FILE_OFFSET64
723 /* Seek to a certain position on STREAM.
724
725    This function is a possible cancellation point and therefore not
726    marked with __THROW.  */
727 extern int fseeko (FILE *__stream, __off_t __off, int __whence);
728 /* Return the current position of STREAM.
729
730    This function is a possible cancellation point and therefore not
731    marked with __THROW.  */
732 extern __off_t ftello (FILE *__stream) __wur;
733 # else
734 #  ifdef __REDIRECT
735 extern int __REDIRECT (fseeko,
736                        (FILE *__stream, __off64_t __off, int __whence),
737                        fseeko64);
738 extern __off64_t __REDIRECT (ftello, (FILE *__stream), ftello64);
739 #  else
740 #   define fseeko fseeko64
741 #   define ftello ftello64
742 #  endif
743 # endif
744 #endif
745
746 __BEGIN_NAMESPACE_STD
747 #ifndef __USE_FILE_OFFSET64
748 /* Get STREAM's position.
749
750    This function is a possible cancellation point and therefore not
751    marked with __THROW.  */
752 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
753 /* Set STREAM's position.
754
755    This function is a possible cancellation point and therefore not
756    marked with __THROW.  */
757 extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
758 #else
759 # ifdef __REDIRECT
760 extern int __REDIRECT (fgetpos, (FILE *__restrict __stream,
761                                  fpos_t *__restrict __pos), fgetpos64);
762 extern int __REDIRECT (fsetpos,
763                        (FILE *__stream, __const fpos_t *__pos), fsetpos64);
764 # else
765 #  define fgetpos fgetpos64
766 #  define fsetpos fsetpos64
767 # endif
768 #endif
769 __END_NAMESPACE_STD
770
771 #ifdef __USE_LARGEFILE64
772 extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
773 libc_hidden_proto(fseeko64)
774 extern __off64_t ftello64 (FILE *__stream) __wur;
775 libc_hidden_proto(ftello64)
776 extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
777 extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
778 #endif
779
780 __BEGIN_NAMESPACE_STD
781 /* Clear the error and EOF indicators for STREAM.  */
782 extern void clearerr (FILE *__stream) __THROW;
783 /* Return the EOF indicator for STREAM.  */
784 extern int feof (FILE *__stream) __THROW __wur;
785 /* Return the error indicator for STREAM.  */
786 extern int ferror (FILE *__stream) __THROW __wur;
787 __END_NAMESPACE_STD
788
789 #ifdef __USE_MISC
790 /* Faster versions when locking is not required.  */
791 extern void clearerr_unlocked (FILE *__stream) __THROW;
792 extern int feof_unlocked (FILE *__stream) __THROW __wur;
793 extern int ferror_unlocked (FILE *__stream) __THROW __wur;
794 #endif
795
796
797 __BEGIN_NAMESPACE_STD
798 /* Print a message describing the meaning of the value of errno.
799
800    This function is a possible cancellation point and therefore not
801    marked with __THROW.  */
802 extern void perror (__const char *__s);
803 libc_hidden_proto(perror)
804 __END_NAMESPACE_STD
805
806 #ifdef __UCLIBC_HAS_SYS_ERRLIST__
807 /* These variables normally should not be used directly.  The `strerror'
808    function provides all the needed functionality.  */
809 #ifdef  __USE_BSD
810 extern int sys_nerr;
811 extern __const char *__const sys_errlist[];
812 #endif
813 #endif /* __UCLIBC_HAS_SYS_ERRLIST__ */
814
815
816 #ifdef  __USE_POSIX
817 /* Return the system file descriptor for STREAM.  */
818 extern int fileno (FILE *__stream) __THROW __wur;
819 libc_hidden_proto(fileno)
820 #endif /* Use POSIX.  */
821
822 #ifdef __USE_MISC
823 /* Faster version when locking is not required.  */
824 extern int fileno_unlocked (FILE *__stream) __THROW __wur;
825 libc_hidden_proto(fileno_unlocked)
826 #endif
827
828
829 #if (defined __USE_POSIX2 || defined __USE_SVID  || defined __USE_BSD || \
830      defined __USE_MISC)
831 /* Create a new stream connected to a pipe running the given command.
832
833    This function is a possible cancellation point and therefore not
834    marked with __THROW.  */
835 extern FILE *popen (__const char *__command, __const char *__modes) __wur;
836
837 /* Close a stream opened by popen and return the status of its child.
838
839    This function is a possible cancellation point and therefore not
840    marked with __THROW.  */
841 extern int pclose (FILE *__stream);
842 #endif
843
844
845 #ifdef  __USE_POSIX
846 /* Return the name of the controlling terminal.  */
847 extern char *ctermid (char *__s) __THROW;
848 #endif /* Use POSIX.  */
849
850
851 #ifdef __USE_XOPEN
852 /* Return the name of the current user.  */
853 extern char *cuserid (char *__s);
854 #endif /* Use X/Open, but not issue 6.  */
855
856
857 #if 0 /* def    __USE_GNU uClibc note: not supported */
858 struct obstack;                 /* See <obstack.h>.  */
859
860 /* Write formatted output to an obstack.  */
861 extern int obstack_printf (struct obstack *__restrict __obstack,
862                            __const char *__restrict __format, ...)
863      __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
864 extern int obstack_vprintf (struct obstack *__restrict __obstack,
865                             __const char *__restrict __format,
866                             __gnuc_va_list __args)
867      __THROW __attribute__ ((__format__ (__printf__, 2, 0)));
868 #endif /* Use GNU.  */
869
870
871 #if defined __USE_POSIX || defined __USE_MISC
872 /* These are defined in POSIX.1:1996.  */
873
874 /* Acquire ownership of STREAM.  */
875 extern void flockfile (FILE *__stream) __THROW;
876
877 /* Try to acquire ownership of STREAM but do not block if it is not
878    possible.  */
879 extern int ftrylockfile (FILE *__stream) __THROW __wur;
880
881 /* Relinquish the ownership granted for STREAM.  */
882 extern void funlockfile (FILE *__stream) __THROW;
883 #endif /* POSIX || misc */
884
885 #if defined __USE_XOPEN && !defined __USE_XOPEN2K && !defined __USE_GNU
886 /* The X/Open standard requires some functions and variables to be
887    declared here which do not belong into this header.  But we have to
888    follow.  In GNU mode we don't do this nonsense.  */
889 # define __need_getopt
890 # include <bits/getopt.h>
891 #endif  /* X/Open, but not issue 6 and not for GNU.  */
892
893 /* If we are compiling with optimizing read this file.  It contains
894    several optimizing inline functions and macros.  */
895 #define fgetc(_fp)                   __FGETC(_fp)
896 #define fputc(_ch, _fp)              __FPUTC(_ch, _fp)
897
898 #ifdef __USE_MISC
899 #define fgetc_unlocked(_fp)          __FGETC_UNLOCKED(_fp)
900 #define fputc_unlocked(_ch, _fp)     __FPUTC_UNLOCKED(_ch, _fp)
901 #endif
902
903 #ifndef __STDIO_GETC_MACRO
904 #define __stdin stdin
905 #endif
906 #define getchar()                    __GETC(__stdin)
907
908 #ifndef __STDIO_PUTC_MACRO
909 #define __stdout stdout
910 #endif
911 #define putchar(_ch)                 __PUTC((_ch), __stdout)
912
913 #if defined __USE_POSIX || defined __USE_MISC
914 #define getchar_unlocked()           __GETC_UNLOCKED(__stdin)
915 #define putchar_unlocked(_ch)        __PUTC_UNLOCKED((_ch), __stdout)
916 #endif
917
918 /* Clear the error and EOF indicators for STREAM.  */
919 #define clearerr(_fp)                __CLEARERR(_fp)
920 #define feof(_fp)                    __FEOF(_fp)
921 #define ferror(_fp)                  __FERROR(_fp)
922
923 #ifdef __USE_MISC
924 #define clearerr_unlocked(_fp)       __CLEARERR_UNLOCKED(_fp)
925 #define feof_unlocked(_fp)           __FEOF_UNLOCKED(_fp)
926 #define ferror_unlocked(_fp)         __FERROR_UNLOCKED(_fp)
927 #endif
928
929 __END_DECLS
930
931 #endif /* <stdio.h> included.  */
932
933 #endif /* !_STDIO_H */