Browse Source

Update to add missing c++ namespace support.

Manuel Novoa III 21 years ago
parent
commit
402649ba48
1 changed files with 344 additions and 144 deletions
  1. 344 144
      include/stdio.h

+ 344 - 144
include/stdio.h

@@ -1,5 +1,5 @@
 /*
 /*
-   Copyright (C) 1991, 1994-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1991,1994-2002,2003,2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    This file is part of the GNU C Library.
 
 
    The GNU C Library is free software; you can redistribute it and/or
    The GNU C Library is free software; you can redistribute it and/or
@@ -41,8 +41,15 @@ __BEGIN_DECLS
 
 
 #if !defined __FILE_defined && defined __need_FILE
 #if !defined __FILE_defined && defined __need_FILE
 
 
+__BEGIN_NAMESPACE_STD
 /* The opaque type of streams.  This is the definition used elsewhere.  */
 /* The opaque type of streams.  This is the definition used elsewhere.  */
 typedef struct __STDIO_FILE_STRUCT FILE;
 typedef struct __STDIO_FILE_STRUCT FILE;
+__END_NAMESPACE_STD
+#if defined __USE_LARGEFILE64 || defined __USE_SVID || defined __USE_POSIX \
+    || defined __USE_BSD || defined __USE_ISOC99 || defined __USE_XOPEN \
+    || defined __USE_POSIX2
+__USING_NAMESPACE_STD(FILE)
+#endif
 
 
 # define __FILE_defined	1
 # define __FILE_defined	1
 #endif /* FILE not defined.  */
 #endif /* FILE not defined.  */
@@ -69,11 +76,13 @@ typedef struct __STDIO_FILE_STRUCT __FILE;
 #include <stdarg.h>
 #include <stdarg.h>
 
 
 /* The type of the second argument to `fgetpos' and `fsetpos'.  */
 /* The type of the second argument to `fgetpos' and `fsetpos'.  */
+__BEGIN_NAMESPACE_STD
 #ifndef __USE_FILE_OFFSET64
 #ifndef __USE_FILE_OFFSET64
 typedef __STDIO_fpos_t fpos_t;
 typedef __STDIO_fpos_t fpos_t;
 #else
 #else
 typedef __STDIO_fpos64_t fpos_t;
 typedef __STDIO_fpos64_t fpos_t;
 #endif
 #endif
+__END_NAMESPACE_STD
 #ifdef __USE_LARGEFILE64
 #ifdef __USE_LARGEFILE64
 typedef __STDIO_fpos64_t fpos64_t;
 typedef __STDIO_fpos64_t fpos64_t;
 #endif
 #endif
@@ -126,34 +135,41 @@ typedef __STDIO_fpos64_t fpos64_t;
 extern FILE *stdin;	        /* Standard input stream.  */
 extern FILE *stdin;	        /* Standard input stream.  */
 extern FILE *stdout;        /* Standard output stream.  */
 extern FILE *stdout;        /* Standard output stream.  */
 extern FILE *stderr;        /* Standard error output stream.  */
 extern FILE *stderr;        /* Standard error output stream.  */
-#ifdef __STDC__
 /* C89/C99 say they're macros.  Make them happy.  */
 /* C89/C99 say they're macros.  Make them happy.  */
 #define stdin stdin
 #define stdin stdin
 #define stdout stdout
 #define stdout stdout
 #define stderr stderr
 #define stderr stderr
-#endif
 
 
+__BEGIN_NAMESPACE_STD
 /* Remove file FILENAME.  */
 /* Remove file FILENAME.  */
 extern int remove (__const char *__filename) __THROW;
 extern int remove (__const char *__filename) __THROW;
 /* Rename file OLD to NEW.  */
 /* Rename file OLD to NEW.  */
 extern int rename (__const char *__old, __const char *__new) __THROW;
 extern int rename (__const char *__old, __const char *__new) __THROW;
+__END_NAMESPACE_STD
+
 
 
+__BEGIN_NAMESPACE_STD
+/* Create a temporary file and open it read/write.
 
 
-/* Create a temporary file and open it read/write.  */
+   This function is a possible cancellation points and therefore not
+   marked with __THROW.  */
 #ifndef __USE_FILE_OFFSET64
 #ifndef __USE_FILE_OFFSET64
-extern FILE *tmpfile (void) __THROW;
+extern FILE *tmpfile (void);
 #else
 #else
 # ifdef __REDIRECT
 # ifdef __REDIRECT
-extern FILE *__REDIRECT (tmpfile, (void) __THROW, tmpfile64);
+extern FILE *__REDIRECT (tmpfile, (void), tmpfile64);
 # else
 # else
 #  define tmpfile tmpfile64
 #  define tmpfile tmpfile64
 # endif
 # endif
 #endif
 #endif
+
 #ifdef __USE_LARGEFILE64
 #ifdef __USE_LARGEFILE64
-extern FILE *tmpfile64 (void) __THROW;
+extern FILE *tmpfile64 (void);
 #endif
 #endif
+
 /* Generate a temporary filename.  */
 /* Generate a temporary filename.  */
 extern char *tmpnam (char *__s) __THROW;
 extern char *tmpnam (char *__s) __THROW;
+__END_NAMESPACE_STD
 
 
 #ifdef __USE_MISC
 #ifdef __USE_MISC
 /* This is the reentrant variant of `tmpnam'.  The only difference is
 /* This is the reentrant variant of `tmpnam'.  The only difference is
@@ -175,50 +191,74 @@ extern char *tempnam (__const char *__dir, __const char *__pfx)
 #endif
 #endif
 
 
 
 
-/* Close STREAM.  */
+__BEGIN_NAMESPACE_STD
-extern int fclose (FILE *__stream) __THROW;
+/* Close STREAM.
-/* Flush STREAM, or all streams if STREAM is NULL.  */
+
-extern int fflush (FILE *__stream) __THROW;
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern int fclose (FILE *__stream);
+/* Flush STREAM, or all streams if STREAM is NULL.
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern int fflush (FILE *__stream);
+__END_NAMESPACE_STD
 
 
 #ifdef __USE_MISC
 #ifdef __USE_MISC
-/* Faster versions when locking is not required.  */
+/* Faster versions when locking is not required.
-extern int fflush_unlocked (FILE *__stream) __THROW;
+
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
+extern int fflush_unlocked (FILE *__stream);
 #endif
 #endif
 
 
 #ifdef __USE_GNU
 #ifdef __USE_GNU
-/* Close all streams.  */
+/* Close all streams.
-extern int fcloseall (void) __THROW;
+
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
+extern int fcloseall (void);
 #endif
 #endif
 
 
 
 
+__BEGIN_NAMESPACE_STD
 #ifndef __USE_FILE_OFFSET64
 #ifndef __USE_FILE_OFFSET64
-/* Open a file and create a new stream for it.  */
+/* Open a file and create a new stream for it.
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
 extern FILE *fopen (__const char *__restrict __filename,
 extern FILE *fopen (__const char *__restrict __filename,
-		    __const char *__restrict __modes) __THROW;
+		    __const char *__restrict __modes);
-/* Open a file, replacing an existing stream with it. */
+/* Open a file, replacing an existing stream with it.
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
 extern FILE *freopen (__const char *__restrict __filename,
 extern FILE *freopen (__const char *__restrict __filename,
 		      __const char *__restrict __modes,
 		      __const char *__restrict __modes,
-		      FILE *__restrict __stream) __THROW;
+		      FILE *__restrict __stream);
 #else
 #else
 # ifdef __REDIRECT
 # ifdef __REDIRECT
 extern FILE *__REDIRECT (fopen, (__const char *__restrict __filename,
 extern FILE *__REDIRECT (fopen, (__const char *__restrict __filename,
-				 __const char *__restrict __modes) __THROW,
+				 __const char *__restrict __modes), fopen64);
-			 fopen64);
 extern FILE *__REDIRECT (freopen, (__const char *__restrict __filename,
 extern FILE *__REDIRECT (freopen, (__const char *__restrict __filename,
 				   __const char *__restrict __modes,
 				   __const char *__restrict __modes,
-				   FILE *__restrict __stream) __THROW,
+				   FILE *__restrict __stream), freopen64);
-			 freopen64);
 # else
 # else
 #  define fopen fopen64
 #  define fopen fopen64
 #  define freopen freopen64
 #  define freopen freopen64
 # endif
 # endif
 #endif
 #endif
+__END_NAMESPACE_STD
 #ifdef __USE_LARGEFILE64
 #ifdef __USE_LARGEFILE64
 extern FILE *fopen64 (__const char *__restrict __filename,
 extern FILE *fopen64 (__const char *__restrict __filename,
-		      __const char *__restrict __modes) __THROW;
+		      __const char *__restrict __modes);
 extern FILE *freopen64 (__const char *__restrict __filename,
 extern FILE *freopen64 (__const char *__restrict __filename,
 			__const char *__restrict __modes,
 			__const char *__restrict __modes,
-			FILE *__restrict __stream) __THROW;
+			FILE *__restrict __stream);
 #endif
 #endif
 
 
 #ifdef	__USE_POSIX
 #ifdef	__USE_POSIX
@@ -246,6 +286,7 @@ extern FILE *open_memstream (char **__restrict __bufloc,
 #endif
 #endif
 
 
 
 
+__BEGIN_NAMESPACE_STD
 /* If BUF is NULL, make STREAM unbuffered.
 /* If BUF is NULL, make STREAM unbuffered.
    Else make it use buffer BUF, of size BUFSIZ.  */
    Else make it use buffer BUF, of size BUFSIZ.  */
 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __THROW;
 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __THROW;
@@ -254,6 +295,7 @@ extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __THROW;
    else allocate an internal buffer N bytes long.  */
    else allocate an internal buffer N bytes long.  */
 extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
 extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
 		    int __modes, size_t __n) __THROW;
 		    int __modes, size_t __n) __THROW;
+__END_NAMESPACE_STD
 
 
 #ifdef	__USE_BSD
 #ifdef	__USE_BSD
 /* If BUF is NULL, make STREAM unbuffered.
 /* If BUF is NULL, make STREAM unbuffered.
@@ -266,26 +308,40 @@ extern void setlinebuf (FILE *__stream) __THROW;
 #endif
 #endif
 
 
 
 
-/* Write formatted output to STREAM.  */
+__BEGIN_NAMESPACE_STD
+/* Write formatted output to STREAM.
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
 extern int fprintf (FILE *__restrict __stream,
 extern int fprintf (FILE *__restrict __stream,
-		    __const char *__restrict __format, ...) __THROW;
+		    __const char *__restrict __format, ...);
-/* Write formatted output to stdout.  */
+/* Write formatted output to stdout.
-extern int printf (__const char *__restrict __format, ...) __THROW;
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern int printf (__const char *__restrict __format, ...);
 /* Write formatted output to S.  */
 /* Write formatted output to S.  */
 extern int sprintf (char *__restrict __s,
 extern int sprintf (char *__restrict __s,
 		    __const char *__restrict __format, ...) __THROW;
 		    __const char *__restrict __format, ...) __THROW;
 
 
-/* Write formatted output to S from argument list ARG.  */
+/* Write formatted output to S from argument list ARG.
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
 extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
 extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
-		     __gnuc_va_list __arg) __THROW;
+		     __gnuc_va_list __arg);
-/* Write formatted output to stdout from argument list ARG.  */
+/* Write formatted output to stdout from argument list ARG.
-extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg)
+
-     __THROW;
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
 /* Write formatted output to S from argument list ARG.  */
 /* Write formatted output to S from argument list ARG.  */
 extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
 extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
 		     __gnuc_va_list __arg) __THROW;
 		     __gnuc_va_list __arg) __THROW;
+__END_NAMESPACE_STD
 
 
 #if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98
 #if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98
+__BEGIN_NAMESPACE_C99
 /* Maximum chars of output to write in MAXLEN.  */
 /* Maximum chars of output to write in MAXLEN.  */
 extern int snprintf (char *__restrict __s, size_t __maxlen,
 extern int snprintf (char *__restrict __s, size_t __maxlen,
 		     __const char *__restrict __format, ...)
 		     __const char *__restrict __format, ...)
@@ -294,6 +350,7 @@ extern int snprintf (char *__restrict __s, size_t __maxlen,
 extern int vsnprintf (char *__restrict __s, size_t __maxlen,
 extern int vsnprintf (char *__restrict __s, size_t __maxlen,
 		      __const char *__restrict __format, __gnuc_va_list __arg)
 		      __const char *__restrict __format, __gnuc_va_list __arg)
      __THROW __attribute__ ((__format__ (__printf__, 3, 0)));
      __THROW __attribute__ ((__format__ (__printf__, 3, 0)));
+__END_NAMESPACE_C99
 #endif
 #endif
 
 
 #ifdef __USE_GNU
 #ifdef __USE_GNU
@@ -309,115 +366,184 @@ extern int asprintf (char **__restrict __ptr,
 		     __const char *__restrict __fmt, ...)
 		     __const char *__restrict __fmt, ...)
      __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
      __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
 
 
-/* Write formatted output to a file descriptor.  */
+/* Write formatted output to a file descriptor.
+
+   These functions are not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation they are cancellation points and
+   therefore not marked with __THROW.  */
 extern int vdprintf (int __fd, __const char *__restrict __fmt,
 extern int vdprintf (int __fd, __const char *__restrict __fmt,
 		     __gnuc_va_list __arg)
 		     __gnuc_va_list __arg)
-     __THROW __attribute__ ((__format__ (__printf__, 2, 0)));
+     __attribute__ ((__format__ (__printf__, 2, 0)));
 extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
 extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
-     __THROW __attribute__ ((__format__ (__printf__, 2, 3)));
+     __attribute__ ((__format__ (__printf__, 2, 3)));
 #endif
 #endif
 
 
 
 
-/* Read formatted input from STREAM.  */
+__BEGIN_NAMESPACE_STD
+/* Read formatted input from STREAM.
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
 extern int fscanf (FILE *__restrict __stream,
 extern int fscanf (FILE *__restrict __stream,
-		   __const char *__restrict __format, ...) __THROW;
+		   __const char *__restrict __format, ...);
-/* Read formatted input from stdin.  */
+/* Read formatted input from stdin.
-extern int scanf (__const char *__restrict __format, ...) __THROW;
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern int scanf (__const char *__restrict __format, ...);
 /* Read formatted input from S.  */
 /* Read formatted input from S.  */
 extern int sscanf (__const char *__restrict __s,
 extern int sscanf (__const char *__restrict __s,
 		   __const char *__restrict __format, ...) __THROW;
 		   __const char *__restrict __format, ...) __THROW;
+__END_NAMESPACE_STD
 
 
 #ifdef	__USE_ISOC99
 #ifdef	__USE_ISOC99
-/* Read formatted input from S into argument list ARG.  */
+__BEGIN_NAMESPACE_C99
+/* Read formatted input from S into argument list ARG.
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
 extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
 extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
 		    __gnuc_va_list __arg)
 		    __gnuc_va_list __arg)
-     __THROW __attribute__ ((__format__ (__scanf__, 2, 0)));
+     __attribute__ ((__format__ (__scanf__, 2, 0)));
+
+/* Read formatted input from stdin into argument list ARG.
 
 
-/* Read formatted input from stdin into argument list ARG.  */
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
 extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
 extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
-     __THROW __attribute__ ((__format__ (__scanf__, 1, 0)));
+     __attribute__ ((__format__ (__scanf__, 1, 0)));
 
 
 /* Read formatted input from S into argument list ARG.  */
 /* Read formatted input from S into argument list ARG.  */
 extern int vsscanf (__const char *__restrict __s,
 extern int vsscanf (__const char *__restrict __s,
 		    __const char *__restrict __format, __gnuc_va_list __arg)
 		    __const char *__restrict __format, __gnuc_va_list __arg)
      __THROW __attribute__ ((__format__ (__scanf__, 2, 0)));
      __THROW __attribute__ ((__format__ (__scanf__, 2, 0)));
+__END_NAMESPACE_C99
 #endif /* Use ISO C9x.  */
 #endif /* Use ISO C9x.  */
 
 
 
 
-/* Read a character from STREAM.  */
+__BEGIN_NAMESPACE_STD
-extern int fgetc (FILE *__stream) __THROW;
+/* Read a character from STREAM.
-extern int getc (FILE *__stream) __THROW;
 
 
-/* Read a character from stdin.  */
+   These functions are possible cancellation points and therefore not
-extern int getchar (void) __THROW;
+   marked with __THROW.  */
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+
+/* Read a character from stdin.
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern int getchar (void);
+__END_NAMESPACE_STD
 
 
 /* The C standard explicitly says this is a macro, so we always do the
 /* The C standard explicitly says this is a macro, so we always do the
    optimization for it.  */
    optimization for it.  */
 #define getc(_fp) __GETC(_fp)
 #define getc(_fp) __GETC(_fp)
 
 
 #if defined __USE_POSIX || defined __USE_MISC
 #if defined __USE_POSIX || defined __USE_MISC
-/* These are defined in POSIX.1:1996.  */
+/* These are defined in POSIX.1:1996.
-extern int getc_unlocked (FILE *__stream) __THROW;
+
-extern int getchar_unlocked (void) __THROW;
+   These functions are possible cancellation points and therefore not
+   marked with __THROW.  */
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
 
 
 /* SUSv3 allows getc_unlocked to be a macro */
 /* SUSv3 allows getc_unlocked to be a macro */
 #define getc_unlocked(_fp) __GETC_UNLOCKED(_fp)
 #define getc_unlocked(_fp) __GETC_UNLOCKED(_fp)
 #endif /* Use POSIX or MISC.  */
 #endif /* Use POSIX or MISC.  */
 
 
 #ifdef __USE_MISC
 #ifdef __USE_MISC
-/* Faster version when locking is not necessary.  */
+/* Faster version when locking is not necessary.
-extern int fgetc_unlocked (FILE *__stream) __THROW;
+
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
+extern int fgetc_unlocked (FILE *__stream);
 #endif /* Use MISC.  */
 #endif /* Use MISC.  */
 
 
 
 
-/* Write a character to STREAM.  */
+__BEGIN_NAMESPACE_STD
-extern int fputc (int __c, FILE *__stream) __THROW;
+/* Write a character to STREAM.
-extern int putc (int __c, FILE *__stream) __THROW;
 
 
-/* Write a character to stdout.  */
+   These functions are possible cancellation points and therefore not
-extern int putchar (int __c) __THROW;
+   marked with __THROW.
+
+   These functions is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+
+/* Write a character to stdout.
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern int putchar (int __c);
+__END_NAMESPACE_STD
 
 
 /* The C standard explicitly says this can be a macro,
 /* The C standard explicitly says this can be a macro,
    so we always do the optimization for it.  */
    so we always do the optimization for it.  */
 #define putc(_ch, _fp) __PUTC(_ch, _fp)
 #define putc(_ch, _fp) __PUTC(_ch, _fp)
 
 
 #ifdef __USE_MISC
 #ifdef __USE_MISC
-/* Faster version when locking is not necessary.  */
+/* Faster version when locking is not necessary.
-extern int fputc_unlocked (int __c, FILE *__stream) __THROW;
+
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
+extern int fputc_unlocked (int __c, FILE *__stream);
 #endif /* Use MISC.  */
 #endif /* Use MISC.  */
 
 
 #if defined __USE_POSIX || defined __USE_MISC
 #if defined __USE_POSIX || defined __USE_MISC
-/* These are defined in POSIX.1:1996.  */
+/* These are defined in POSIX.1:1996.
-extern int putc_unlocked (int __c, FILE *__stream) __THROW;
+
-extern int putchar_unlocked (int __c) __THROW;
+   These functions are possible cancellation points and therefore not
+   marked with __THROW.  */
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
 
 
 /* SUSv3 allows putc_unlocked to be a macro */
 /* SUSv3 allows putc_unlocked to be a macro */
 #define putc_unlocked(_ch, _fp) __PUTC_UNLOCKED(_ch, _fp)
 #define putc_unlocked(_ch, _fp) __PUTC_UNLOCKED(_ch, _fp)
 #endif /* Use POSIX or MISC.  */
 #endif /* Use POSIX or MISC.  */
 
 
 
 
-#if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN
+#if defined __USE_SVID || defined __USE_MISC \
+    || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
 /* Get a word (int) from STREAM.  */
 /* Get a word (int) from STREAM.  */
-extern int getw (FILE *__stream) __THROW;
+extern int getw (FILE *__stream);
 
 
 /* Write a word (int) to STREAM.  */
 /* Write a word (int) to STREAM.  */
-extern int putw (int __w, FILE *__stream) __THROW;
+extern int putw (int __w, FILE *__stream);
 #endif
 #endif
 
 
 
 
-/* Get a newline-terminated string of finite length from STREAM.  */
+__BEGIN_NAMESPACE_STD
-extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+/* Get a newline-terminated string of finite length from STREAM.
-     __THROW;
 
 
-#if defined(__USE_GNU) || defined(__USE_MISC)
+   This function is a possible cancellation point and therefore not
-/* This function does the same as `fgets' but does not lock the stream.  */
+   marked with __THROW.  */
-extern char *fgets_unlocked (char *__restrict __s, int __n,
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream);
-			     FILE *__restrict __stream) __THROW;
-#endif
 
 
 /* Get a newline-terminated string from stdin, removing the newline.
 /* Get a newline-terminated string from stdin, removing the newline.
-   DO NOT USE THIS FUNCTION!!  There is no limit on how much it will read.  */
+   DO NOT USE THIS FUNCTION!!  There is no limit on how much it will read.
-extern char *gets (char *__s) __THROW;
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern char *gets (char *__s);
+__END_NAMESPACE_STD
+
+#ifdef __USE_GNU
+/* This function does the same as `fgets' but does not lock the stream.
+
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
+extern char *fgets_unlocked (char *__restrict __s, int __n,
+			     FILE *__restrict __stream);
+#endif
 
 
 
 
 #ifdef	__USE_GNU
 #ifdef	__USE_GNU
@@ -425,117 +551,179 @@ extern char *gets (char *__s) __THROW;
    (and null-terminate it). *LINEPTR is a pointer returned from malloc (or
    (and null-terminate it). *LINEPTR is a pointer returned from malloc (or
    NULL), pointing to *N characters of space.  It is realloc'd as
    NULL), pointing to *N characters of space.  It is realloc'd as
    necessary.  Returns the number of characters read (not including the
    necessary.  Returns the number of characters read (not including the
-   null terminator), or -1 on error or EOF.  */
+   null terminator), or -1 on error or EOF.
+
+   These functions are not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation they are cancellation points and
+   therefore not marked with __THROW.  */
 extern __ssize_t __getdelim (char **__restrict __lineptr,
 extern __ssize_t __getdelim (char **__restrict __lineptr,
 			       size_t *__restrict __n, int __delimiter,
 			       size_t *__restrict __n, int __delimiter,
-			       FILE *__restrict __stream) __THROW;
+			       FILE *__restrict __stream);
 extern __ssize_t getdelim (char **__restrict __lineptr,
 extern __ssize_t getdelim (char **__restrict __lineptr,
 			     size_t *__restrict __n, int __delimiter,
 			     size_t *__restrict __n, int __delimiter,
-			     FILE *__restrict __stream) __THROW;
+			     FILE *__restrict __stream);
+
+/* Like `getdelim', but reads up to a newline.
 
 
-/* Like `getdelim', but reads up to a newline.  */
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
 extern __ssize_t getline (char **__restrict __lineptr,
 extern __ssize_t getline (char **__restrict __lineptr,
 			    size_t *__restrict __n,
 			    size_t *__restrict __n,
-			    FILE *__restrict __stream) __THROW;
+			    FILE *__restrict __stream);
 #endif
 #endif
 
 
 
 
-/* Write a string to STREAM.  */
+__BEGIN_NAMESPACE_STD
-extern int fputs (__const char *__restrict __s, FILE *__restrict __stream)
+/* Write a string to STREAM.
-     __THROW;
+
+   This function is a possible cancellation points and therefore not
+   marked with __THROW.  */
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+
+/* Write a string, followed by a newline, to stdout.
+
+   This function is a possible cancellation points and therefore not
+   marked with __THROW.  */
+extern int puts (__const char *__s);
 
 
-#ifdef __USE_GNU
-/* This function does the same as `fputs' but does not lock the stream.  */
-extern int fputs_unlocked (__const char *__restrict __s,
-			   FILE *__restrict __stream) __THROW;
-#endif
 
 
-/* Write a string, followed by a newline, to stdout.  */
+/* Push a character back onto the input buffer of STREAM.
-extern int puts (__const char *__s) __THROW;
 
 
+   This function is a possible cancellation points and therefore not
+   marked with __THROW.  */
+extern int ungetc (int __c, FILE *__stream);
 
 
-/* Push a character back onto the input buffer of STREAM.  */
-extern int ungetc (int __c, FILE *__stream) __THROW;
 
 
+/* Read chunks of generic data from STREAM.
 
 
-/* Read chunks of generic data from STREAM.  */
+   This function is a possible cancellation points and therefore not
+   marked with __THROW.  */
 extern size_t fread (void *__restrict __ptr, size_t __size,
 extern size_t fread (void *__restrict __ptr, size_t __size,
-		     size_t __n, FILE *__restrict __stream) __THROW;
+		     size_t __n, FILE *__restrict __stream);
-/* Write chunks of generic data to STREAM.  */
+/* Write chunks of generic data to STREAM.
+
+   This function is a possible cancellation points and therefore not
+   marked with __THROW.  */
 extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
 extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
-		      size_t __n, FILE *__restrict __s) __THROW;
+		      size_t __n, FILE *__restrict __s);
+__END_NAMESPACE_STD
+
+#ifdef __USE_GNU
+/* This function does the same as `fputs' but does not lock the stream.
+
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
+extern int fputs_unlocked (__const char *__restrict __s,
+			   FILE *__restrict __stream);
+#endif
 
 
 #ifdef __USE_MISC
 #ifdef __USE_MISC
-/* Faster versions when locking is not necessary.  */
+/* Faster versions when locking is not necessary.
+
+   These functions are not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation they are cancellation points and
+   therefore not marked with __THROW.  */
 extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
 extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
-			      size_t __n, FILE *__restrict __stream) __THROW;
+			      size_t __n, FILE *__restrict __stream);
 extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
 extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
-			       size_t __n, FILE *__restrict __stream) __THROW;
+			       size_t __n, FILE *__restrict __stream);
 #endif
 #endif
 
 
 
 
-/* Seek to a certain position on STREAM.  */
+__BEGIN_NAMESPACE_STD
-extern int fseek (FILE *__stream, long int __off, int __whence) __THROW;
+/* Seek to a certain position on STREAM.
-/* Return the current position of STREAM.  */
+
-extern long int ftell (FILE *__stream) __THROW;
+   This function is a possible cancellation point and therefore not
-/* Rewind to the beginning of STREAM.  */
+   marked with __THROW.  */
-extern void rewind (FILE *__stream) __THROW;
+extern int fseek (FILE *__stream, long int __off, int __whence);
+/* Return the current position of STREAM.
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern long int ftell (FILE *__stream);
+/* Rewind to the beginning of STREAM.
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern void rewind (FILE *__stream);
+__END_NAMESPACE_STD
 
 
 /* The Single Unix Specification, Version 2, specifies an alternative,
 /* The Single Unix Specification, Version 2, specifies an alternative,
    more adequate interface for the two functions above which deal with
    more adequate interface for the two functions above which deal with
    file offset.  `long int' is not the right type.  These definitions
    file offset.  `long int' is not the right type.  These definitions
    are originally defined in the Large File Support API.  */
    are originally defined in the Large File Support API.  */
 
 
-#ifndef __USE_FILE_OFFSET64
+#if defined __USE_LARGEFILE || defined __USE_XOPEN2K
-# ifdef __USE_LARGEFILE
+# ifndef __USE_FILE_OFFSET64
-/* Seek to a certain position on STREAM.  */
+/* Seek to a certain position on STREAM.
-extern int fseeko (FILE *__stream, __off_t __off, int __whence) __THROW;
-/* Return the current position of STREAM.  */
-extern __off_t ftello (FILE *__stream) __THROW;
-# endif
 
 
-/* Get STREAM's position.  */
+   This function is a possible cancellation point and therefore not
-extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos)
+   marked with __THROW.  */
-     __THROW;
+extern int fseeko (FILE *__stream, __off_t __off, int __whence);
-/* Set STREAM's position.  */
+/* Return the current position of STREAM.
-extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __THROW;
+
-#else
+   This function is a possible cancellation point and therefore not
-# ifdef __REDIRECT
+   marked with __THROW.  */
-#  ifdef __USE_LARGEFILE
+extern __off_t ftello (FILE *__stream);
+# else
+#  ifdef __REDIRECT
 extern int __REDIRECT (fseeko,
 extern int __REDIRECT (fseeko,
-		       (FILE *__stream, __off64_t __off, int __whence) __THROW,
+		       (FILE *__stream, __off64_t __off, int __whence),
 		       fseeko64);
 		       fseeko64);
-extern __off64_t __REDIRECT (ftello, (FILE *__stream) __THROW, ftello64);
+extern __off64_t __REDIRECT (ftello, (FILE *__stream), ftello64);
+#  else
+#   define fseeko fseeko64
+#   define ftello ftello64
 #  endif
 #  endif
+# endif
+#endif
+
+__BEGIN_NAMESPACE_STD
+#ifndef __USE_FILE_OFFSET64
+/* Get STREAM's position.
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
+/* Set STREAM's position.
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
+#else
+# ifdef __REDIRECT
 extern int __REDIRECT (fgetpos, (FILE *__restrict __stream,
 extern int __REDIRECT (fgetpos, (FILE *__restrict __stream,
-				 fpos_t *__restrict __pos) __THROW, fgetpos64);
+				 fpos_t *__restrict __pos), fgetpos64);
 extern int __REDIRECT (fsetpos,
 extern int __REDIRECT (fsetpos,
-		       (FILE *__stream, __const fpos_t *__pos) __THROW,
+		       (FILE *__stream, __const fpos_t *__pos), fsetpos64);
-		       fsetpos64);
 # else
 # else
-#  ifdef __USE_LARGEFILE
-#   define fseeko fseeko64
-#   define ftello ftello64
-#  endif
 #  define fgetpos fgetpos64
 #  define fgetpos fgetpos64
 #  define fsetpos fsetpos64
 #  define fsetpos fsetpos64
 # endif
 # endif
 #endif
 #endif
+__END_NAMESPACE_STD
 
 
 #ifdef __USE_LARGEFILE64
 #ifdef __USE_LARGEFILE64
-extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) __THROW;
+extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
-extern __off64_t ftello64 (FILE *__stream) __THROW;
+extern __off64_t ftello64 (FILE *__stream);
-extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos)
+extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
-     __THROW;
+extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
-extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos) __THROW;
 #endif
 #endif
 
 
+__BEGIN_NAMESPACE_STD
 /* Clear the error and EOF indicators for STREAM.  */
 /* Clear the error and EOF indicators for STREAM.  */
 extern void clearerr (FILE *__stream) __THROW;
 extern void clearerr (FILE *__stream) __THROW;
 /* Return the EOF indicator for STREAM.  */
 /* Return the EOF indicator for STREAM.  */
 extern int feof (FILE *__stream) __THROW;
 extern int feof (FILE *__stream) __THROW;
 /* Return the error indicator for STREAM.  */
 /* Return the error indicator for STREAM.  */
 extern int ferror (FILE *__stream) __THROW;
 extern int ferror (FILE *__stream) __THROW;
+__END_NAMESPACE_STD
 
 
 #ifdef __USE_MISC
 #ifdef __USE_MISC
 /* Faster versions when locking is not required.  */
 /* Faster versions when locking is not required.  */
@@ -545,8 +733,13 @@ extern int ferror_unlocked (FILE *__stream) __THROW;
 #endif
 #endif
 
 
 
 
-/* Print a message describing the meaning of the value of errno.  */
+__BEGIN_NAMESPACE_STD
-extern void perror (__const char *__s) __THROW;
+/* Print a message describing the meaning of the value of errno.
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern void perror (__const char *__s);
+__END_NAMESPACE_STD
 
 
 #ifdef __UCLIBC_HAS_SYS_ERRLIST__
 #ifdef __UCLIBC_HAS_SYS_ERRLIST__
 /* These variables normally should not be used directly.  The `strerror'
 /* These variables normally should not be used directly.  The `strerror'
@@ -571,11 +764,17 @@ extern int fileno_unlocked (FILE *__stream) __THROW;
 
 
 #if (defined __USE_POSIX2 || defined __USE_SVID  || defined __USE_BSD || \
 #if (defined __USE_POSIX2 || defined __USE_SVID  || defined __USE_BSD || \
      defined __USE_MISC)
      defined __USE_MISC)
-/* Create a new stream connected to a pipe running the given command.  */
+/* Create a new stream connected to a pipe running the given command.
-extern FILE *popen (__const char *__command, __const char *__modes) __THROW;
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern FILE *popen (__const char *__command, __const char *__modes);
 
 
-/* Close a stream opened by popen and return the status of its child.  */
+/* Close a stream opened by popen and return the status of its child.
-extern int pclose (FILE *__stream) __THROW;
+
+   This function is a possible cancellation point and therefore not
+   marked with __THROW.  */
+extern int pclose (FILE *__stream);
 #endif
 #endif
 
 
 
 
@@ -587,7 +786,7 @@ extern char *ctermid (char *__s) __THROW;
 
 
 #ifdef __USE_XOPEN
 #ifdef __USE_XOPEN
 /* Return the name of the current user.  */
 /* Return the name of the current user.  */
-extern char *cuserid (char *__s) __THROW;
+extern char *cuserid (char *__s);
 #endif /* Use X/Open, but not issue 6.  */
 #endif /* Use X/Open, but not issue 6.  */
 
 
 
 
@@ -607,6 +806,7 @@ extern int obstack_vprintf (struct obstack *__restrict __obstack,
 
 
 #if defined __USE_POSIX || defined __USE_MISC
 #if defined __USE_POSIX || defined __USE_MISC
 /* These are defined in POSIX.1:1996.  */
 /* These are defined in POSIX.1:1996.  */
+
 /* Acquire ownership of STREAM.  */
 /* Acquire ownership of STREAM.  */
 extern void flockfile (FILE *__stream) __THROW;
 extern void flockfile (FILE *__stream) __THROW;