Systemnahe Programmierung in Chome Systemnahe Programmierung in C: stdio.h Prof. Dr. Uwe Schmidt FH Wedel

stdio.h

weiter

weiter

stdio.h

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

Letzte Änderung: 06.05.2002
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel