From e918a7feebf850a139d894db559f0bd5b5fec32d Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 9 Jul 1998 13:58:47 +0000 Subject: Update. 1998-07-09 13:34 Ulrich Drepper * grp/grp.h: Define gid_t also for __USE_XOPEN. * io/fcntl.h: Include also for __USE_XOPEN. * io/utime.h: Define time_t also for __USE_XOPEN. * io/sys/stat.h: Define time_t also for __USE_XOPEN. Define *_t types except for pid_t also for __USE_XOPEN. Define S_* macros also for __USE_XOPEN. * locale/langinfo.h: Define CODESET, CRNCYSTR, RADIXCHAR, and THOUSEP also for __USE_XOPEN. * math/math.c: Define M_* macros also for __USE_XOPEN. * math/bits/mathcalls.h: Declare hypot also for __USE_XOPEN. * posix/fnmatch.h: Define FNM_NOSYS and for if _XOPEN_SOURCE is defined. * posix/glob.h: Likewise for GLOB_NOSYS. * posix/regex.h: Likewise for REG_NOSYS. * posix/wordexp.h: Likewise for WRDE_NOSYS. * posix/unistd.h: Define *_t types also for __USE_XOPEN. * posix/sys/wait.h: Define pid_t for __USE_XOPEN. * pwd/pwd.h: Define gid_t and pid_t also for __USE_XOPEN. * signal/signal.h: Define pid_t also fir __USE_XOPEN. * sysdeps/unix/sysv/linux/bits/fcntl.h: Define _RSYNC and O_DSYNC also for __USE_POSIX199309. * sysdeps/unix/sysv/linux/bits/termios.h: Define the various B* constants also for __USE_XOPEN. * wcsmbs/wchar.h: For XPG4 include wctype.h. * intl/dcgettext.c (find_msg): Initialize act to prevent warning. * locale/setlocale.c (new_composite_name): Likewise for last_len. * libio/stdio.h: Don't declare fclose_unlocked. * sysdeps/posix/fpathconf.c: Handle _PC_FILESIZEBITS. 1998-07-08 Mark Kettenis * stdio/stdio.h: Add prototypes for fflush_unlocked, getc_unlocked, getchar_unlocked, putc_unlocked, putchar_unlocked, fgets_unlocked, fread_unlocked, fwrite_unlocked, clearerr_unlocked, feof_unlocked, ferror_unlocked, fileno_unlocked, flockfile, ftrylockfile, funlockfile. [__USE_XOPEN && !__USE_GNU] Declare optarg, optind, opterr. Add prototype for getopt. * stdio/clearerr.c (clearerr_unlocked): Weak alias for clearerr. * stdio/feof.c (feof_unlocked): Weak alias for feof. * stdio/ferror.c (ferror_unlocked): Weak alias for ferror. * stdio/fflush.c (fflush_unlocked): Weak alias for fflush. * stdio/fgets.c (fgets_unlocked): Weak alias for fgets. * stdio/fileno.c (fileno_unlocked): Weak alias for fileno. * stdio/fputc.c (fputc_unlocked): Weak alias for fputc. * stdio/fread.c (fread_unlocked): Weak alias for fread. * stdio/fwrite.c (fwrite_unlocked): Weak alias for fwrite. * stdio/getc.c (getchar_unlocked): Weak alias for getc. * stdio/getchar.c (getchar_unlocked): Weak alias for getchar. * stdio/putc.c (putc_unlocked): Weak alias for putc. * stdio/putchar.c (putchar_unlocked): Weak alias for putchar. * stdio/Versions [GLIBC_2.1]: Add clearerr_unlocked, feof_unlocked, ferror_unlocked, fflush_unlocked, fgets_unlocked, fileno_unlocked, fputc_unlocked, fread_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked, putc_unlocked and putchar_unlocked. * libio/Versions: Move flockfile, ftrylockfile and funlockfile from here ... * stdio-common/Versions: ... to here. 1998-07-09 Andreas Jaeger * Makerules (versioning): Correct typo. --- stdio/Versions | 13 ++++++ stdio/clearerr.c | 4 +- stdio/fclose.c | 2 +- stdio/feof.c | 6 ++- stdio/ferror.c | 5 ++- stdio/fflush.c | 4 +- stdio/fgets.c | 4 +- stdio/fileno.c | 4 +- stdio/fputc.c | 4 +- stdio/fread.c | 4 +- stdio/fwrite.c | 4 +- stdio/getc.c | 2 + stdio/getchar.c | 4 +- stdio/putc.c | 1 + stdio/putchar.c | 4 +- stdio/stdio.h | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 16 files changed, 170 insertions(+), 13 deletions(-) (limited to 'stdio') diff --git a/stdio/Versions b/stdio/Versions index 2dfd4a8..e3df076 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 b602576..37b82ee 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 4fda20b..f49af03 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 79e7f59..86d36b7 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 #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 5665db2..eaa5fc9 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 #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 601fe4e..e635f51 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 3d6833d..4fbb402 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 b6a20cd..e97c2f6 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 fc7ce5b..754b4f9 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 80c3d44..b0fe36b 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 bd07c9e..2369743 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 0d34a1c..eee136a 100644 --- a/stdio/getc.c +++ b/stdio/getc.c @@ -2,3 +2,5 @@ #undef getc #define fgetc getc #include + +weak_alias (getc, getc_unlocked) diff --git a/stdio/getchar.c b/stdio/getchar.c index 2b1cb92..cbcbffd 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 cd30126..f92ef30 100644 --- a/stdio/putc.c +++ b/stdio/putc.c @@ -1,4 +1,5 @@ #include #undef putc #define fputc putc +#define fputc_unlocked putc_unlocked #include diff --git a/stdio/putchar.c b/stdio/putchar.c index f90a9c0..6f8268b 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 dd4dd6d..eac8bd4 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 . */ +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 /* included. */ -- cgit v1.1