1/* Prefer faster, non-thread-safe stdio functions if available. 2 3 Copyright (C) 2001-2004, 2009-2012 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 3 of the License, or 8 (at your option) 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 16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 17 18/* Written by Jim Meyering. */ 19 20#ifndef UNLOCKED_IO_H 21# define UNLOCKED_IO_H 1 22 23/* These are wrappers for functions/macros from the GNU C library, and 24 from other C libraries supporting POSIX's optional thread-safe functions. 25 26 The standard I/O functions are thread-safe. These *_unlocked ones are 27 more efficient but not thread-safe. That they're not thread-safe is 28 fine since all of the applications in this package are single threaded. 29 30 Also, some code that is shared with the GNU C library may invoke 31 the *_unlocked functions directly. On hosts that lack those 32 functions, invoke the non-thread-safe versions instead. */ 33 34# include <stdio.h> 35 36# if HAVE_DECL_CLEARERR_UNLOCKED 37# undef clearerr 38# define clearerr(x) clearerr_unlocked (x) 39# else 40# define clearerr_unlocked(x) clearerr (x) 41# endif 42 43# if HAVE_DECL_FEOF_UNLOCKED 44# undef feof 45# define feof(x) feof_unlocked (x) 46# else 47# define feof_unlocked(x) feof (x) 48# endif 49 50# if HAVE_DECL_FERROR_UNLOCKED 51# undef ferror 52# define ferror(x) ferror_unlocked (x) 53# else 54# define ferror_unlocked(x) ferror (x) 55# endif 56 57# if HAVE_DECL_FFLUSH_UNLOCKED 58# undef fflush 59# define fflush(x) fflush_unlocked (x) 60# else 61# define fflush_unlocked(x) fflush (x) 62# endif 63 64# if HAVE_DECL_FGETS_UNLOCKED 65# undef fgets 66# define fgets(x,y,z) fgets_unlocked (x,y,z) 67# else 68# define fgets_unlocked(x,y,z) fgets (x,y,z) 69# endif 70 71# if HAVE_DECL_FPUTC_UNLOCKED 72# undef fputc 73# define fputc(x,y) fputc_unlocked (x,y) 74# else 75# define fputc_unlocked(x,y) fputc (x,y) 76# endif 77 78# if HAVE_DECL_FPUTS_UNLOCKED 79# undef fputs 80# define fputs(x,y) fputs_unlocked (x,y) 81# else 82# define fputs_unlocked(x,y) fputs (x,y) 83# endif 84 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 92# if HAVE_DECL_FWRITE_UNLOCKED 93# undef fwrite 94# define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z) 95# else 96# define fwrite_unlocked(w,x,y,z) fwrite (w,x,y,z) 97# endif 98 99# if HAVE_DECL_GETC_UNLOCKED 100# undef getc 101# define getc(x) getc_unlocked (x) 102# else 103# define getc_unlocked(x) getc (x) 104# endif 105 106# if HAVE_DECL_GETCHAR_UNLOCKED 107# undef getchar 108# define getchar() getchar_unlocked () 109# else 110# define getchar_unlocked() getchar () 111# endif 112 113# if HAVE_DECL_PUTC_UNLOCKED 114# undef putc 115# define putc(x,y) putc_unlocked (x,y) 116# else 117# define putc_unlocked(x,y) putc (x,y) 118# endif 119 120# if HAVE_DECL_PUTCHAR_UNLOCKED 121# undef putchar 122# define putchar(x) putchar_unlocked (x) 123# else 124# define putchar_unlocked(x) putchar (x) 125# endif 126 127# undef flockfile 128# define flockfile(x) ((void) 0) 129 130# undef ftrylockfile 131# define ftrylockfile(x) 0 132 133# undef funlockfile 134# define funlockfile(x) ((void) 0) 135 136#endif /* UNLOCKED_IO_H */ 137