1 /* Prefer faster, non-thread-safe stdio functions if available. 2 3 Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 2, or (at your option) 8 any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License along 16 with this program; if not, write to the Free Software Foundation, 17 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 18 19 /* Written by Jim Meyering. */ 20 21 #ifndef UNLOCKED_IO_H 22 # define UNLOCKED_IO_H 1 23 24 # ifndef USE_UNLOCKED_IO 25 # define USE_UNLOCKED_IO 1 26 # endif 27 28 # if USE_UNLOCKED_IO 29 30 /* These are wrappers for functions/macros from the GNU C library, and 31 from other C libraries supporting POSIX's optional thread-safe functions. 32 33 The standard I/O functions are thread-safe. These *_unlocked ones are 34 more efficient but not thread-safe. That they're not thread-safe is 35 fine since all of the applications in this package are single threaded. 36 37 Also, some code that is shared with the GNU C library may invoke 38 the *_unlocked functions directly. On hosts that lack those 39 functions, invoke the non-thread-safe versions instead. */ 40 41 # include <stdio.h> 42 43 # if HAVE_DECL_CLEARERR_UNLOCKED 44 # undef clearerr 45 # define clearerr(x) clearerr_unlocked (x) 46 # else 47 # define clearerr_unlocked(x) clearerr (x) 48 # endif 49 # if HAVE_DECL_FEOF_UNLOCKED 50 # undef feof 51 # define feof(x) feof_unlocked (x) 52 # else 53 # define feof_unlocked(x) feof (x) 54 # endif 55 # if HAVE_DECL_FERROR_UNLOCKED 56 # undef ferror 57 # define ferror(x) ferror_unlocked (x) 58 # else 59 # define ferror_unlocked(x) ferror (x) 60 # endif 61 # if HAVE_DECL_FFLUSH_UNLOCKED 62 # undef fflush 63 # define fflush(x) fflush_unlocked (x) 64 # else 65 # define fflush_unlocked(x) fflush (x) 66 # endif 67 # if HAVE_DECL_FGETS_UNLOCKED 68 # undef fgets 69 # define fgets(x,y,z) fgets_unlocked (x,y,z) 70 # else 71 # define fgets_unlocked(x,y,z) fgets (x,y,z) 72 # endif 73 # if HAVE_DECL_FPUTC_UNLOCKED 74 # undef fputc 75 # define fputc(x,y) fputc_unlocked (x,y) 76 # else 77 # define fputc_unlocked(x,y) fputc (x,y) 78 # endif 79 # if HAVE_DECL_FPUTS_UNLOCKED 80 # undef fputs 81 # define fputs(x,y) fputs_unlocked (x,y) 82 # else 83 # define fputs_unlocked(x,y) fputs (x,y) 84 # endif 85 # if HAVE_DECL_FREAD_UNLOCKED 86 # undef fread 87 # define fread(w,x,y,z) fread_unlocked (w,x,y,z) 88 # else 89 # define fread_unlocked(w,x,y,z) fread (w,x,y,z) 90 # endif 91 # if HAVE_DECL_FWRITE_UNLOCKED 92 # undef fwrite 93 # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z) 94 # else 95 # define fwrite_unlocked(w,x,y,z) fwrite (w,x,y,z) 96 # endif 97 # if HAVE_DECL_GETC_UNLOCKED 98 # undef getc 99 # define getc(x) getc_unlocked (x) 100 # else 101 # define getc_unlocked(x) getc (x) 102 # endif 103 # if HAVE_DECL_GETCHAR_UNLOCKED 104 # undef getchar 105 # define getchar() getchar_unlocked () 106 # else 107 # define getchar_unlocked() getchar () 108 # endif 109 # if HAVE_DECL_PUTC_UNLOCKED 110 # undef putc 111 # define putc(x,y) putc_unlocked (x,y) 112 # else 113 # define putc_unlocked(x,y) putc (x,y) 114 # endif 115 # if HAVE_DECL_PUTCHAR_UNLOCKED 116 # undef putchar 117 # define putchar(x) putchar_unlocked (x) 118 # else 119 # define putchar_unlocked(x) putchar (x) 120 # endif 121 122 # undef flockfile 123 # define flockfile(x) ((void) 0) 124 125 # undef ftrylockfile 126 # define ftrylockfile(x) 0 127 128 # undef funlockfile 129 # define funlockfile(x) ((void) 0) 130 131 # endif /* USE_UNLOCKED_IO */ 132 #endif /* UNLOCKED_IO_H */ 133