diff options
Diffstat (limited to 'gl/unlocked-io.h')
-rw-r--r-- | gl/unlocked-io.h | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/gl/unlocked-io.h b/gl/unlocked-io.h new file mode 100644 index 00000000..fdef624a --- /dev/null +++ b/gl/unlocked-io.h | |||
@@ -0,0 +1,136 @@ | |||
1 | /* Prefer faster, non-thread-safe stdio functions if available. | ||
2 | |||
3 | Copyright (C) 2001-2004, 2009-2023 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 <https://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 || defined 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 || defined 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 || defined 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 || defined 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 || defined 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 || defined 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 || defined 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 || defined 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 || defined 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 || defined get_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 || defined 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 || defined 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 || defined 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 */ | ||