Added to the repository
Showing
1 changed file
with
137 additions
and
0 deletions
mailbox/unlocked-io.h
0 → 100644
1 | /* Prefer faster, non-thread-safe stdio functions if available. | ||
2 | |||
3 | Copyright (C) 2001, 2002, 2003, 2004 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 | /* These are wrappers for functions/macros from the GNU C library, and | ||
25 | from other C libraries supporting POSIX's optional thread-safe functions. | ||
26 | |||
27 | The standard I/O functions are thread-safe. These *_unlocked ones are | ||
28 | more efficient but not thread-safe. That they're not thread-safe is | ||
29 | fine since all of the applications in this package are single threaded. | ||
30 | |||
31 | Also, some code that is shared with the GNU C library may invoke | ||
32 | the *_unlocked functions directly. On hosts that lack those | ||
33 | functions, invoke the non-thread-safe versions instead. */ | ||
34 | |||
35 | #include <stdio.h> | ||
36 | |||
37 | #if HAVE_DECL_CLEARERR_UNLOCKED | ||
38 | # undef clearerr | ||
39 | # define clearerr(x) clearerr_unlocked (x) | ||
40 | #else | ||
41 | # define clearerr_unlocked(x) clearerr (x) | ||
42 | #endif | ||
43 | |||
44 | #if HAVE_DECL_FEOF_UNLOCKED | ||
45 | # undef feof | ||
46 | # define feof(x) feof_unlocked (x) | ||
47 | #else | ||
48 | # define feof_unlocked(x) feof (x) | ||
49 | #endif | ||
50 | |||
51 | #if HAVE_DECL_FERROR_UNLOCKED | ||
52 | # undef ferror | ||
53 | # define ferror(x) ferror_unlocked (x) | ||
54 | #else | ||
55 | # define ferror_unlocked(x) ferror (x) | ||
56 | #endif | ||
57 | |||
58 | #if HAVE_DECL_FFLUSH_UNLOCKED | ||
59 | # undef fflush | ||
60 | # define fflush(x) fflush_unlocked (x) | ||
61 | #else | ||
62 | # define fflush_unlocked(x) fflush (x) | ||
63 | #endif | ||
64 | |||
65 | #if HAVE_DECL_FGETS_UNLOCKED | ||
66 | # undef fgets | ||
67 | # define fgets(x,y,z) fgets_unlocked (x,y,z) | ||
68 | #else | ||
69 | # define fgets_unlocked(x,y,z) fgets (x,y,z) | ||
70 | #endif | ||
71 | |||
72 | #if HAVE_DECL_FPUTC_UNLOCKED | ||
73 | # undef fputc | ||
74 | # define fputc(x,y) fputc_unlocked (x,y) | ||
75 | #else | ||
76 | # define fputc_unlocked(x,y) fputc (x,y) | ||
77 | #endif | ||
78 | |||
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 | |||
86 | #if HAVE_DECL_FREAD_UNLOCKED | ||
87 | # undef fread | ||
88 | # define fread(w,x,y,z) fread_unlocked (w,x,y,z) | ||
89 | #else | ||
90 | # define fread_unlocked(w,x,y,z) fread (w,x,y,z) | ||
91 | #endif | ||
92 | |||
93 | #if HAVE_DECL_FWRITE_UNLOCKED | ||
94 | # undef fwrite | ||
95 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z) | ||
96 | #else | ||
97 | # define fwrite_unlocked(w,x,y,z) fwrite (w,x,y,z) | ||
98 | #endif | ||
99 | |||
100 | #if HAVE_DECL_GETC_UNLOCKED | ||
101 | # undef getc | ||
102 | # define getc(x) getc_unlocked (x) | ||
103 | #else | ||
104 | # define getc_unlocked(x) getc (x) | ||
105 | #endif | ||
106 | |||
107 | #if HAVE_DECL_GETCHAR_UNLOCKED | ||
108 | # undef getchar | ||
109 | # define getchar() getchar_unlocked () | ||
110 | #else | ||
111 | # define getchar_unlocked() getchar () | ||
112 | #endif | ||
113 | |||
114 | #if HAVE_DECL_PUTC_UNLOCKED | ||
115 | # undef putc | ||
116 | # define putc(x,y) putc_unlocked (x,y) | ||
117 | #else | ||
118 | # define putc_unlocked(x,y) putc (x,y) | ||
119 | #endif | ||
120 | |||
121 | #if HAVE_DECL_PUTCHAR_UNLOCKED | ||
122 | # undef putchar | ||
123 | # define putchar(x) putchar_unlocked (x) | ||
124 | #else | ||
125 | # define putchar_unlocked(x) putchar (x) | ||
126 | #endif | ||
127 | |||
128 | #undef flockfile | ||
129 | #define flockfile(x) ((void) 0) | ||
130 | |||
131 | #undef ftrylockfile | ||
132 | #define ftrylockfile(x) 0 | ||
133 | |||
134 | #undef funlockfile | ||
135 | #define funlockfile(x) ((void) 0) | ||
136 | |||
137 | #endif /* UNLOCKED_IO_H */ |
-
Please register or sign in to post a comment