about summary refs log tree commit diff
path: root/stdio
diff options
context:
space:
mode:
Diffstat (limited to 'stdio')
-rw-r--r--stdio/Versions13
-rw-r--r--stdio/clearerr.c4
-rw-r--r--stdio/fclose.c2
-rw-r--r--stdio/feof.c6
-rw-r--r--stdio/ferror.c5
-rw-r--r--stdio/fflush.c4
-rw-r--r--stdio/fgets.c4
-rw-r--r--stdio/fileno.c4
-rw-r--r--stdio/fputc.c4
-rw-r--r--stdio/fread.c4
-rw-r--r--stdio/fwrite.c4
-rw-r--r--stdio/getc.c2
-rw-r--r--stdio/getchar.c4
-rw-r--r--stdio/putc.c1
-rw-r--r--stdio/putchar.c4
-rw-r--r--stdio/stdio.h118
16 files changed, 170 insertions, 13 deletions
diff --git a/stdio/Versions b/stdio/Versions
index 2dfd4a8de0..e3df0765a6 100644
--- a/stdio/Versions
+++ b/stdio/Versions
@@ -47,5 +47,18 @@ libc {
   GLIBC_2.1 {
     # functions used in other libraries
     __asprintf;
+
+    # c*
+    clearerr_unlocked;
+
+    # f*
+    feof_unlocked; ferror_unlocked; fflush_unlocked;  fgets_unlocked;
+    fileno_unlocked; fputc_unlocked; fread_unlocked; fwrite_unlocked;
+
+    # g*
+    getc_unlocked; getchar_unlocked;
+
+    # p*
+    putc_unlocked; putchar_unlocked;
   }
 }
diff --git a/stdio/clearerr.c b/stdio/clearerr.c
index b602576fa9..37b82ee873 100644
--- a/stdio/clearerr.c
+++ b/stdio/clearerr.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -28,3 +28,5 @@ clearerr (FILE *stream)
 {
   __clearerr (stream);
 }
+
+weak_alias (clearerr, clearerr_unlocked)
diff --git a/stdio/fclose.c b/stdio/fclose.c
index 4fda20b4ac..f49af03076 100644
--- a/stdio/fclose.c
+++ b/stdio/fclose.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1995, 1996, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
diff --git a/stdio/feof.c b/stdio/feof.c
index 79e7f59975..86d36b7760 100644
--- a/stdio/feof.c
+++ b/stdio/feof.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -20,7 +20,7 @@
 #include <stdio.h>
 
 #undef	feof
-
+#undef	feof_unlocked
 
 /* Return non-zero if STREAM has its EOF indicator set.  */
 int
@@ -35,3 +35,5 @@ feof (stream)
 
   return stream->__eof;
 }
+
+weak_alias (feof, feof_unlocked)
diff --git a/stdio/ferror.c b/stdio/ferror.c
index 5665db22be..eaa5fc9826 100644
--- a/stdio/ferror.c
+++ b/stdio/ferror.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -20,6 +20,7 @@
 #include <stdio.h>
 
 #undef	ferror
+#undef	ferror_unlocked
 
 
 /* Return non-zero if STREAM has its error indicator set.  */
@@ -35,3 +36,5 @@ ferror (stream)
 
   return stream->__error;
 }
+
+weak_alias (ferror, ferror_unlocked)
diff --git a/stdio/fflush.c b/stdio/fflush.c
index 601fe4eada..e635f518af 100644
--- a/stdio/fflush.c
+++ b/stdio/fflush.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -43,3 +43,5 @@ fflush (stream)
 
   return __flshfp (stream, EOF);
 }
+
+weak_alias(fflush, fflush_unlocked)
diff --git a/stdio/fgets.c b/stdio/fgets.c
index 3d6833d089..4fbb4025de 100644
--- a/stdio/fgets.c
+++ b/stdio/fgets.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 95, 96, 97, 98 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -121,3 +121,5 @@ fgets (s, n, stream)
   *p = '\0';
   return ferror (stream) ? NULL : s;
 }
+
+weak_alias (fgets, fgets_unlocked)
diff --git a/stdio/fileno.c b/stdio/fileno.c
index b6a20cd72b..e97c2f6e82 100644
--- a/stdio/fileno.c
+++ b/stdio/fileno.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1993, 1994, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 93, 94, 96, 97, 98 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -46,3 +46,5 @@ fileno (stream)
 
   return (*stream->__io_funcs.__fileno) (stream->__cookie);
 }
+
+weak_alias(fileno, fileno_unlocked)
diff --git a/stdio/fputc.c b/stdio/fputc.c
index fc7ce5b179..754b4f9547 100644
--- a/stdio/fputc.c
+++ b/stdio/fputc.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -34,3 +34,5 @@ fputc (c, stream)
 
   return __putc (c, stream);
 }
+
+weak_alias (fputc, fputc_unlocked)
diff --git a/stdio/fread.c b/stdio/fread.c
index 80c3d44c23..b0fe36bc28 100644
--- a/stdio/fread.c
+++ b/stdio/fread.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 95, 96, 97, 98 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -131,3 +131,5 @@ fread (p, size, nmemb, stream)
 
   return (bytes - to_read) / size;
 }
+
+weak_alias (fread, fread_unlocked)
diff --git a/stdio/fwrite.c b/stdio/fwrite.c
index bd07c9edfb..236974388f 100644
--- a/stdio/fwrite.c
+++ b/stdio/fwrite.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 93, 94, 96, 97 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 93, 94, 96, 97, 98 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -218,3 +218,5 @@ fwrite (ptr, size, nmemb, stream)
  done:;
   return (size_t) written / size;
 }
+
+weak_alias (fwrite, fwrite_unlocked)
diff --git a/stdio/getc.c b/stdio/getc.c
index 0d34a1cc6c..eee136a902 100644
--- a/stdio/getc.c
+++ b/stdio/getc.c
@@ -2,3 +2,5 @@
 #undef	getc
 #define	fgetc	getc
 #include <fgetc.c>
+
+weak_alias (getc, getc_unlocked)
diff --git a/stdio/getchar.c b/stdio/getchar.c
index 2b1cb92bf2..cbcbffd023 100644
--- a/stdio/getchar.c
+++ b/stdio/getchar.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -27,3 +27,5 @@ getchar (void)
 {
   return __getc (stdin);
 }
+
+weak_alias (getchar, getchar_unlocked)
diff --git a/stdio/putc.c b/stdio/putc.c
index cd3012626f..f92ef303b8 100644
--- a/stdio/putc.c
+++ b/stdio/putc.c
@@ -1,4 +1,5 @@
 #include <stdio.h>
 #undef	putc
 #define	fputc	putc
+#define fputc_unlocked	putc_unlocked
 #include <fputc.c>
diff --git a/stdio/putchar.c b/stdio/putchar.c
index f90a9c0a4c..6f8268bbad 100644
--- a/stdio/putchar.c
+++ b/stdio/putchar.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -27,3 +27,5 @@ putchar (int c)
 {
   return __putc (c, stdout);
 }
+
+weak_alias (putchar, putchar_unlocked)
diff --git a/stdio/stdio.h b/stdio/stdio.h
index dd4dd6db0d..eac8bd41b1 100644
--- a/stdio/stdio.h
+++ b/stdio/stdio.h
@@ -333,6 +333,11 @@ extern int fclose __P ((FILE *__stream));
 /* Flush STREAM, or all streams if STREAM is NULL.  */
 extern int fflush __P ((FILE *__stream));
 
+#ifdef __USE_MISC
+/* Faster versions when locking is not required.  */
+extern int fflush_unlocked __P ((FILE *__stream));
+#endif
+
 #ifdef __USE_GNU
 /* Close all streams.  */
 extern int __fcloseall __P ((void));
@@ -543,6 +548,26 @@ getchar (void)
 }
 #endif /* Optimizing.  */
 
+#if defined __USE_POSIX || defined __USE_MISC
+/* These are defined in POSIX.1:1996.  */
+extern int getc_unlocked __P ((FILE *__stream));
+extern int getchar_unlocked __P ((void));
+
+# ifdef __OPTIMIZE__
+extern __inline int
+getc_unlocked (FILE *__stream)
+{
+  return __getc (__stream);
+}
+
+extern __inline int
+getchar_unlocked (void)
+{
+  return __getc (stdin);
+}
+# endif /* Optimizing.  */
+#endif /* Use POSIX or MISC.  */
+
 
 /* Write a character to STREAM.  */
 extern int fputc __P ((int __c, FILE *__stream));
@@ -571,6 +596,39 @@ putchar (int __c)
 }
 #endif
 
+#ifdef __USE_MISC
+/* Faster version when locking is not necessary.  */
+extern int fputc_unlocked __P ((int __c, FILE *__stream));
+
+# ifdef __OPTIMIZE__
+extern __inline int
+fputc_unlocked (int __c, FILE *__stream)
+{
+  return __putc (__c, __stream);
+}
+# endif /* Optimizing.  */
+#endif /* Use MISC.  */
+
+#if defined __USE_POSIX || defined __USE_MISC
+/* These are defined in POSIX.1:1996.  */
+extern int putc_unlocked __P ((int __c, FILE *__stream));
+extern int putchar_unlocked __P ((int __c));
+
+# ifdef __OPTIMIZE__
+extern __inline int
+putc_unlocked (int __c, FILE *__stream)
+{
+  return __putc (__c, __stream);
+}
+
+extern __inline int
+putchar_unlocked (int __c)
+{
+  return __putc (__c, stdout);
+}
+# endif /* Optimizing.  */
+#endif /* Use POSIX or MISC.  */
+
 
 #if defined __USE_SVID || defined __USE_MISC
 /* Get a word (int) from STREAM.  */
@@ -585,6 +643,12 @@ extern int putw __P ((int __w, FILE *__stream));
 extern char *fgets __P ((char *__restrict __s, int __n,
 			 FILE *__restrict __stream));
 
+#ifdef __USE_GNU
+/* This function does the same as `fgets' but does not lock the stream.  */
+extern char *fgets_unlocked __P ((char *__restrict __s, int __n,
+				  FILE *__restrict __stream));
+#endif
+
 /* 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.  */
 extern char *gets __P ((char *__s));
@@ -635,6 +699,15 @@ extern size_t fread __P ((__ptr_t __restrict __ptr, size_t __size,
 extern size_t fwrite __P ((__const __ptr_t __restrict __ptr, size_t __size,
 			   size_t __n, FILE *__restrict __s));
 
+#ifdef __USE_MISC
+/* Faster versions when locking is not necessary.  */
+extern size_t fread_unlocked __P ((void *__restrict __ptr, size_t __size,
+				   size_t __n, FILE *__restrict __stream));
+extern size_t fwrite_unlocked __P ((__const void *__restrict __ptr,
+				    size_t __size, size_t __n,
+				    FILE *__restrict __stream));
+#endif
+
 
 /* Seek to a certain position on STREAM.  */
 extern int fseek __P ((FILE *__stream, long int __off, int __whence));
@@ -661,6 +734,17 @@ extern int ferror __P ((FILE *__stream));
 #define	ferror(stream)	((stream)->__error != 0)
 #endif /* Optimizing.  */
 
+#ifdef __USE_MISC
+/* Faster versions when locking is not required.  */
+extern void clearerr_unlocked __P ((FILE *__stream));
+extern int feof_unlocked __P ((FILE *__stream));
+extern int ferror_unlocked __P ((FILE *__stream));
+
+# ifdef	__OPTIMIZE__
+#  define feof_unlocked(stream)		((stream)->__eof != 0)
+#  define ferror_unlocked(stream)	((stream)->__error != 0)
+# endif /* Optimizing.  */
+#endif
 
 /* Print a message describing the meaning of the value of errno.  */
 extern void perror __P ((__const char *__s));
@@ -680,6 +764,11 @@ extern const char *const _sys_errlist[];
 extern int fileno __P ((FILE *__stream));
 #endif /* Use POSIX.  */
 
+#ifdef __USE_MISC
+/* Faster version when locking is not required.  */
+extern int fileno_unlocked __P ((FILE *__stream));
+#endif
+
 
 #if (defined __USE_POSIX2 || defined __USE_SVID || defined __USE_BSD || \
      defined __USE_MISC)
@@ -718,6 +807,35 @@ extern int obstack_vprintf __P ((struct obstack *__obstack,
 #endif
 
 
+#if defined __USE_POSIX || defined __USE_MISC
+/* These are defined in POSIX.1:1996.  */
+
+/* Acquire ownership of STREAM.  */
+extern void flockfile __P ((FILE *__stream));
+
+/* Try to acquire ownership of STREAM but do not block if it is not
+   possible.  */
+extern int ftrylockfile __P ((FILE *__stream));
+
+/* Relinquish the ownership granted for STREAM.  */
+extern void funlockfile __P ((FILE *__stream));
+#endif /* POSIX || misc */
+
+#if defined __USE_XOPEN && !defined __USE_GNU
+/* The X/Open standard requires some functions and variables to be
+   declared here which do not belong into this header.  But we have to
+   follow.  In GNU mode we don't do this nonsense.  */
+
+/* For more information on these symbols look in <getopt.h>.  */
+extern char *optarg;
+extern int optind;
+extern int opterr;
+extern int optopt;
+
+extern int getopt __P ((int __argc, char *__const *__argv,
+			__const char *__shortopts));
+#endif
+
 __END_DECLS
 
 #endif /* <stdio.h> included.  */