From 1cc46fbf537a89aa60128e84b5973a831221220d Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 4 Oct 2004 20:18:43 +0000 Subject: [PATCH] Sync from gnulib, to remove dependencies of other modules on unlocked-io. --- lib/ChangeLog | 11 +++ lib/argmatch.c | 5 +- lib/closeout.c | 5 +- lib/error.c | 2 +- lib/exclude.c | 5 +- lib/getdate.y | 4 +- lib/getndelim2.c | 4 +- lib/getpass.c | 4 +- lib/getusershell.c | 10 ++- lib/linebuffer.c | 9 ++- lib/md5.c | 4 +- lib/mountlist.c | 5 +- lib/posixtm.c | 5 +- lib/readtokens.c | 5 +- lib/readutmp.c | 5 +- lib/regex.c | 5 +- lib/sha1.c | 4 +- lib/unlocked-io.h | 203 +++++++++++++++++++++++++++-------------------------- lib/version-etc.c | 5 +- lib/yesno.c | 5 +- m4/ChangeLog | 6 ++ m4/unlocked-io.m4 | 24 ++++++- 22 files changed, 213 insertions(+), 122 deletions(-) diff --git a/lib/ChangeLog b/lib/ChangeLog index b8d9b08..7cb4619 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,14 @@ +2004-10-04 Paul Eggert + + Sync from gnulib. + * argmatch.c, closeout.c, error.c, exclude.c, getdate.y, + getndelim2.c, getpass.c, getusershell.c, linebuffer.c, + md5.c, mountlist.c, posixtm.c, readtokens.c, readutmp.c, + regex.c, sha1.c, version-etc.c, yesno.c: + Include "unlocked-io.h" only if USE_UNLOCKED_IO. + * unlocked-io.h: Don't worry about USE_UNLOCKED_IO; that's now + the includer's responsibility. + 2004-10-03 Paul Eggert Sync from gnulib. diff --git a/lib/argmatch.c b/lib/argmatch.c index ffc638c..e7c2575 100644 --- a/lib/argmatch.c +++ b/lib/argmatch.c @@ -39,7 +39,10 @@ #include "exit.h" #include "quotearg.h" #include "quote.h" -#include "unlocked-io.h" + +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif /* When reporting an invalid argument, show nonprinting characters by using the quoting style ARGMATCH_QUOTING_STYLE. Do not use diff --git a/lib/closeout.c b/lib/closeout.c index 3c7bed9..16e6f9f 100644 --- a/lib/closeout.c +++ b/lib/closeout.c @@ -32,9 +32,12 @@ #include "error.h" #include "exitfail.h" #include "quotearg.h" -#include "unlocked-io.h" #include "__fpending.h" +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif + static const char *file_name; /* Set the file name to be reported in the event an error is detected diff --git a/lib/error.c b/lib/error.c index 5a5e126..94e32fd 100644 --- a/lib/error.c +++ b/lib/error.c @@ -40,7 +40,7 @@ # define mbsrtowcs __mbsrtowcs #endif -#if !_LIBC +#ifdef USE_UNLOCKED_IO # include "unlocked-io.h" #endif diff --git a/lib/exclude.c b/lib/exclude.c index 4ca2c78..24146eb 100644 --- a/lib/exclude.c +++ b/lib/exclude.c @@ -35,9 +35,12 @@ #include "exclude.h" #include "fnmatch.h" -#include "unlocked-io.h" #include "xalloc.h" +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif + #if STDC_HEADERS || (! defined isascii && ! HAVE_ISASCII) # define IN_CTYPE_DOMAIN(c) true #else diff --git a/lib/getdate.y b/lib/getdate.y index 9d948dc..e8cbfeb 100644 --- a/lib/getdate.y +++ b/lib/getdate.y @@ -77,7 +77,9 @@ #include -#include "unlocked-io.h" +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__ # define __attribute__(x) diff --git a/lib/getndelim2.c b/lib/getndelim2.c index 9571e50..aef9780 100644 --- a/lib/getndelim2.c +++ b/lib/getndelim2.c @@ -29,7 +29,9 @@ #include #include -#include "unlocked-io.h" +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif #include #if HAVE_INTTYPES_H diff --git a/lib/getpass.c b/lib/getpass.c index 9ac01f2..bc8eb44 100644 --- a/lib/getpass.c +++ b/lib/getpass.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2001, 2003 Free Software Foundation, Inc. +/* Copyright (C) 1992-2001, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. This program is free software; you can redistribute it and/or modify @@ -55,7 +55,7 @@ #if _LIBC # define flockfile(s) _IO_flockfile (s) # define funlockfile(s) _IO_funlockfile (s) -#else +#elif USE_UNLOCKED_IO # include "unlocked-io.h" #endif diff --git a/lib/getusershell.c b/lib/getusershell.c index 9b60f18..015cb34 100644 --- a/lib/getusershell.c +++ b/lib/getusershell.c @@ -1,5 +1,7 @@ /* getusershell.c -- Return names of valid user shells. - Copyright (C) 1991, 1997, 2000, 2001, 2003 Free Software Foundation, Inc. + + Copyright (C) 1991, 1997, 2000, 2001, 2003, 2004 Free Software + Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,9 +36,13 @@ #include #include #include -#include "unlocked-io.h" + #include "xalloc.h" +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif + #if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII)) # define IN_CTYPE_DOMAIN(c) 1 #else diff --git a/lib/linebuffer.c b/lib/linebuffer.c index 67d0f1f..c12cdbd 100644 --- a/lib/linebuffer.c +++ b/lib/linebuffer.c @@ -1,7 +1,7 @@ /* linebuffer.c -- read arbitrarily long lines - Copyright (C) 1986, 1991, 1998, 1999, 2001, 2003 Free Software - Foundation, Inc. + Copyright (C) 1986, 1991, 1998, 1999, 2001, 2003, 2004 Free + Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,9 +28,12 @@ #include #include #include "linebuffer.h" -#include "unlocked-io.h" #include "xalloc.h" +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif + /* Initialize linebuffer LINEBUFFER for use. */ void diff --git a/lib/md5.c b/lib/md5.c index b938e1c..39d2bb4 100644 --- a/lib/md5.c +++ b/lib/md5.c @@ -29,7 +29,9 @@ #include #include -#include "unlocked-io.h" +#ifdef USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif #ifdef _LIBC # include diff --git a/lib/mountlist.c b/lib/mountlist.c index c9c1463..55071c3 100644 --- a/lib/mountlist.c +++ b/lib/mountlist.c @@ -134,7 +134,10 @@ char *strstr (); #endif #include "mountlist.h" -#include "unlocked-io.h" + +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif #ifndef SIZE_MAX # define SIZE_MAX ((size_t) -1) diff --git a/lib/posixtm.c b/lib/posixtm.c index 22f636e..1400e5a 100644 --- a/lib/posixtm.c +++ b/lib/posixtm.c @@ -38,7 +38,10 @@ #endif #include "posixtm.h" -#include "unlocked-io.h" + +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif /* ISDIGIT differs from isdigit, as follows: - Its arg may be any int or unsigned int; it need not be an unsigned char. diff --git a/lib/readtokens.c b/lib/readtokens.c index 2ccf6a9..9fb611d 100644 --- a/lib/readtokens.c +++ b/lib/readtokens.c @@ -32,9 +32,12 @@ #include #include -#include "unlocked-io.h" #include "xalloc.h" +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif + #define STREQ(a,b) ((a) == (b) || ((a) && (b) && *(a) == *(b) \ && strcmp(a, b) == 0)) diff --git a/lib/readutmp.c b/lib/readutmp.c index 91d341a..ed58893 100644 --- a/lib/readutmp.c +++ b/lib/readutmp.c @@ -27,9 +27,12 @@ #include #include "readutmp.h" -#include "unlocked-io.h" #include "xalloc.h" +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif + /* Copy UT->ut_name into storage obtained from malloc. Then remove any trailing spaces from the copy, NUL terminate it, and return the copy. */ diff --git a/lib/regex.c b/lib/regex.c index 32c1519..45db40e 100644 --- a/lib/regex.c +++ b/lib/regex.c @@ -583,7 +583,10 @@ typedef enum # undef INSIDE_RECURSION # endif #endif -#include "unlocked-io.h" + +#ifdef USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif #ifdef INSIDE_RECURSION /* Common operations on the compiled pattern. */ diff --git a/lib/sha1.c b/lib/sha1.c index c86140c..2bed14d 100644 --- a/lib/sha1.c +++ b/lib/sha1.c @@ -31,7 +31,9 @@ #include #include -#include "unlocked-io.h" +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif /* Not-swap is a macro that does an endian swap on architectures that are diff --git a/lib/unlocked-io.h b/lib/unlocked-io.h index 36a7a48..3ff42f2 100644 --- a/lib/unlocked-io.h +++ b/lib/unlocked-io.h @@ -1,6 +1,6 @@ /* Prefer faster, non-thread-safe stdio functions if available. - Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,13 +19,7 @@ /* Written by Jim Meyering. */ #ifndef UNLOCKED_IO_H -# define UNLOCKED_IO_H 1 - -# ifndef USE_UNLOCKED_IO -# define USE_UNLOCKED_IO 1 -# endif - -# if USE_UNLOCKED_IO +#define UNLOCKED_IO_H 1 /* These are wrappers for functions/macros from the GNU C library, and from other C libraries supporting POSIX's optional thread-safe functions. @@ -38,95 +32,106 @@ the *_unlocked functions directly. On hosts that lack those functions, invoke the non-thread-safe versions instead. */ -# include - -# if HAVE_DECL_CLEARERR_UNLOCKED -# undef clearerr -# define clearerr(x) clearerr_unlocked (x) -# else -# define clearerr_unlocked(x) clearerr (x) -# endif -# if HAVE_DECL_FEOF_UNLOCKED -# undef feof -# define feof(x) feof_unlocked (x) -# else -# define feof_unlocked(x) feof (x) -# endif -# if HAVE_DECL_FERROR_UNLOCKED -# undef ferror -# define ferror(x) ferror_unlocked (x) -# else -# define ferror_unlocked(x) ferror (x) -# endif -# if HAVE_DECL_FFLUSH_UNLOCKED -# undef fflush -# define fflush(x) fflush_unlocked (x) -# else -# define fflush_unlocked(x) fflush (x) -# endif -# if HAVE_DECL_FGETS_UNLOCKED -# undef fgets -# define fgets(x,y,z) fgets_unlocked (x,y,z) -# else -# define fgets_unlocked(x,y,z) fgets (x,y,z) -# endif -# if HAVE_DECL_FPUTC_UNLOCKED -# undef fputc -# define fputc(x,y) fputc_unlocked (x,y) -# else -# define fputc_unlocked(x,y) fputc (x,y) -# endif -# if HAVE_DECL_FPUTS_UNLOCKED -# undef fputs -# define fputs(x,y) fputs_unlocked (x,y) -# else -# define fputs_unlocked(x,y) fputs (x,y) -# endif -# if HAVE_DECL_FREAD_UNLOCKED -# undef fread -# define fread(w,x,y,z) fread_unlocked (w,x,y,z) -# else -# define fread_unlocked(w,x,y,z) fread (w,x,y,z) -# endif -# if HAVE_DECL_FWRITE_UNLOCKED -# undef fwrite -# define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z) -# else -# define fwrite_unlocked(w,x,y,z) fwrite (w,x,y,z) -# endif -# if HAVE_DECL_GETC_UNLOCKED -# undef getc -# define getc(x) getc_unlocked (x) -# else -# define getc_unlocked(x) getc (x) -# endif -# if HAVE_DECL_GETCHAR_UNLOCKED -# undef getchar -# define getchar() getchar_unlocked () -# else -# define getchar_unlocked() getchar () -# endif -# if HAVE_DECL_PUTC_UNLOCKED -# undef putc -# define putc(x,y) putc_unlocked (x,y) -# else -# define putc_unlocked(x,y) putc (x,y) -# endif -# if HAVE_DECL_PUTCHAR_UNLOCKED -# undef putchar -# define putchar(x) putchar_unlocked (x) -# else -# define putchar_unlocked(x) putchar (x) -# endif - -# undef flockfile -# define flockfile(x) ((void) 0) - -# undef ftrylockfile -# define ftrylockfile(x) 0 - -# undef funlockfile -# define funlockfile(x) ((void) 0) - -# endif /* USE_UNLOCKED_IO */ +#include + +#if HAVE_DECL_CLEARERR_UNLOCKED +# undef clearerr +# define clearerr(x) clearerr_unlocked (x) +#else +# define clearerr_unlocked(x) clearerr (x) +#endif + +#if HAVE_DECL_FEOF_UNLOCKED +# undef feof +# define feof(x) feof_unlocked (x) +#else +# define feof_unlocked(x) feof (x) +#endif + +#if HAVE_DECL_FERROR_UNLOCKED +# undef ferror +# define ferror(x) ferror_unlocked (x) +#else +# define ferror_unlocked(x) ferror (x) +#endif + +#if HAVE_DECL_FFLUSH_UNLOCKED +# undef fflush +# define fflush(x) fflush_unlocked (x) +#else +# define fflush_unlocked(x) fflush (x) +#endif + +#if HAVE_DECL_FGETS_UNLOCKED +# undef fgets +# define fgets(x,y,z) fgets_unlocked (x,y,z) +#else +# define fgets_unlocked(x,y,z) fgets (x,y,z) +#endif + +#if HAVE_DECL_FPUTC_UNLOCKED +# undef fputc +# define fputc(x,y) fputc_unlocked (x,y) +#else +# define fputc_unlocked(x,y) fputc (x,y) +#endif + +#if HAVE_DECL_FPUTS_UNLOCKED +# undef fputs +# define fputs(x,y) fputs_unlocked (x,y) +#else +# define fputs_unlocked(x,y) fputs (x,y) +#endif + +#if HAVE_DECL_FREAD_UNLOCKED +# undef fread +# define fread(w,x,y,z) fread_unlocked (w,x,y,z) +#else +# define fread_unlocked(w,x,y,z) fread (w,x,y,z) +#endif + +#if HAVE_DECL_FWRITE_UNLOCKED +# undef fwrite +# define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z) +#else +# define fwrite_unlocked(w,x,y,z) fwrite (w,x,y,z) +#endif + +#if HAVE_DECL_GETC_UNLOCKED +# undef getc +# define getc(x) getc_unlocked (x) +#else +# define getc_unlocked(x) getc (x) +#endif + +#if HAVE_DECL_GETCHAR_UNLOCKED +# undef getchar +# define getchar() getchar_unlocked () +#else +# define getchar_unlocked() getchar () +#endif + +#if HAVE_DECL_PUTC_UNLOCKED +# undef putc +# define putc(x,y) putc_unlocked (x,y) +#else +# define putc_unlocked(x,y) putc (x,y) +#endif + +#if HAVE_DECL_PUTCHAR_UNLOCKED +# undef putchar +# define putchar(x) putchar_unlocked (x) +#else +# define putchar_unlocked(x) putchar (x) +#endif + +#undef flockfile +#define flockfile(x) ((void) 0) + +#undef ftrylockfile +#define ftrylockfile(x) 0 + +#undef funlockfile +#define funlockfile(x) ((void) 0) + #endif /* UNLOCKED_IO_H */ diff --git a/lib/version-etc.c b/lib/version-etc.c index fd71eff..f9a701a 100644 --- a/lib/version-etc.c +++ b/lib/version-etc.c @@ -27,7 +27,10 @@ #include #include #include -#include "unlocked-io.h" + +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif #include "gettext.h" #define _(msgid) gettext (msgid) diff --git a/lib/yesno.c b/lib/yesno.c index 35d4ba7..54691b7 100644 --- a/lib/yesno.c +++ b/lib/yesno.c @@ -24,7 +24,10 @@ #include #include #include -#include "unlocked-io.h" + +#if USE_UNLOCKED_IO +# include "unlocked-io.h" +#endif /* Read one line from standard input and return nonzero if that line begins with y or Y, diff --git a/m4/ChangeLog b/m4/ChangeLog index aeeffa1..450fd1e 100644 --- a/m4/ChangeLog +++ b/m4/ChangeLog @@ -1,3 +1,9 @@ +2004-10-04 Paul Eggert + + Sync from gnulib. + * unlocked-io.m4: Add copyright notice. + (gl_FUNC_GLIBC_UNLOCKED_IO): Define USE_UNLOCKED_IO. + 2004-10-03 Paul Eggert Sync from gnulib. diff --git a/m4/unlocked-io.m4 b/m4/unlocked-io.m4 index cd1c5f4..5849e4a 100644 --- a/m4/unlocked-io.m4 +++ b/m4/unlocked-io.m4 @@ -1,4 +1,21 @@ -#serial 9 +# unlocked-io.m4 serial 10 + +# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software +# Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. dnl From Jim Meyering. dnl @@ -10,6 +27,11 @@ dnl on Solaris 2.6). AC_DEFUN([gl_FUNC_GLIBC_UNLOCKED_IO], [ + AC_DEFINE([USE_UNLOCKED_IO], 1, + [Define to 1 if you want getc etc. to use unlocked I/O if available. + Unlocked I/O can improve performance in unithreaded apps, + but it is not safe for multithreaded apps.]) + dnl Persuade glibc and Solaris to declare dnl fgets_unlocked(), fputs_unlocked() etc. AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) -- 2.7.4