X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Funlocked-io.h;h=3ff42f279b86ec9c7c2d7b14ae62dba1bf100563;hb=bcbf6b9fd9098dfb5c37ef710a2db02fa53b7feb;hp=3fe5fe105b6d064d16ab3a8ed13136e22b606aff;hpb=d0723a1652f9f002aa800cd618fd52717b980b18;p=gnulib.git diff --git a/lib/unlocked-io.h b/lib/unlocked-io.h index 3fe5fe105..3ff42f279 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 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,71 +19,119 @@ /* Written by Jim Meyering. */ #ifndef UNLOCKED_IO_H -# define UNLOCKED_IO_H 1 +#define UNLOCKED_IO_H 1 -# ifndef USE_UNLOCKED_IO -# define USE_UNLOCKED_IO 1 -# endif +/* These are wrappers for functions/macros from the GNU C library, and + from other C libraries supporting POSIX's optional thread-safe functions. -# if USE_UNLOCKED_IO - -/* These are wrappers for functions/macros from GNU libc. The standard I/O functions are thread-safe. These *_unlocked ones are more efficient but not thread-safe. That they're not thread-safe is - fine since all of the applications in this package are single threaded. */ - -# if HAVE_DECL_CLEARERR_UNLOCKED -# undef clearerr -# define clearerr(x) clearerr_unlocked (x) -# endif -# if HAVE_DECL_FEOF_UNLOCKED -# undef feof -# define feof(x) feof_unlocked (x) -# endif -# if HAVE_DECL_FERROR_UNLOCKED -# undef ferror -# define ferror(x) ferror_unlocked (x) -# endif -# if HAVE_DECL_FFLUSH_UNLOCKED -# undef fflush -# define fflush(x) fflush_unlocked (x) -# endif -# if HAVE_DECL_FGETS_UNLOCKED -# undef fgets -# define fgets(x,y,z) fgets_unlocked (x,y,z) -# endif -# if HAVE_DECL_FPUTC_UNLOCKED -# undef fputc -# define fputc(x,y) fputc_unlocked (x,y) -# endif -# if HAVE_DECL_FPUTS_UNLOCKED -# undef fputs -# define fputs(x,y) fputs_unlocked (x,y) -# endif -# if HAVE_DECL_FREAD_UNLOCKED -# undef fread -# define fread(w,x,y,z) fread_unlocked (w,x,y,z) -# endif -# if HAVE_DECL_FWRITE_UNLOCKED -# undef fwrite -# define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z) -# endif -# if HAVE_DECL_GETC_UNLOCKED -# undef getc -# define getc(x) getc_unlocked (x) -# endif -# if HAVE_DECL_GETCHAR_UNLOCKED -# undef getchar -# define getchar() getchar_unlocked () -# endif -# if HAVE_DECL_PUTC_UNLOCKED -# undef putc -# define putc(x,y) putc_unlocked (x,y) -# endif -# if HAVE_DECL_PUTCHAR_UNLOCKED -# undef putchar -# define putchar(x) putchar_unlocked (x) -# endif - -# endif /* USE_UNLOCKED_IO */ + fine since all of the applications in this package are single threaded. + + Also, some code that is shared with the GNU C library may invoke + 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 /* UNLOCKED_IO_H */