Commit | Line | Data |
0198fd3c |
1 | /* |
2 | * fcgi_stdio.h -- |
3 | * |
4 | * FastCGI-stdio compatibility package |
5 | * |
6 | * |
7 | * Copyright (c) 1996 Open Market, Inc. |
8 | * |
af1b4cad |
9 | * See the file "LICENSE" for information on usage and redistribution |
0198fd3c |
10 | * of this file, and for a DISCLAIMER OF ALL WARRANTIES. |
11 | * |
e6368b61 |
12 | * $Id: fcgi_stdio.h,v 1.5 2001/06/22 13:21:15 robs Exp $ |
0198fd3c |
13 | */ |
14 | |
15 | #ifndef _FCGI_STDIO |
16 | #define _FCGI_STDIO 1 |
17 | |
18 | #include <stdio.h> |
19 | #include <sys/types.h> |
20 | #include "fcgiapp.h" |
21 | |
22 | #if defined (c_plusplus) || defined (__cplusplus) |
23 | extern "C" { |
24 | #endif |
25 | |
0198fd3c |
26 | #ifndef DLLAPI |
e6368b61 |
27 | #ifdef _WIN32 |
0198fd3c |
28 | #define DLLAPI __declspec(dllimport) |
0198fd3c |
29 | #else |
30 | #define DLLAPI |
31 | #endif |
e6368b61 |
32 | #endif |
0198fd3c |
33 | |
34 | /* |
35 | * Wrapper type for FILE |
36 | */ |
37 | |
38 | typedef struct { |
39 | FILE *stdio_stream; |
40 | FCGX_Stream *fcgx_stream; |
41 | } FCGI_FILE; |
42 | |
43 | /* |
44 | * The four new functions and two new macros |
45 | */ |
46 | |
47 | DLLAPI int FCGI_Accept(void); |
48 | DLLAPI void FCGI_Finish(void); |
49 | DLLAPI int FCGI_StartFilterData(void); |
50 | DLLAPI void FCGI_SetExitStatus(int status); |
51 | |
52 | #define FCGI_ToFILE(fcgi_file) (fcgi_file->stdio_stream) |
53 | #define FCGI_ToFcgiStream(fcgi_file) (fcgi_file->fcgx_stream) |
54 | |
55 | /* |
56 | * Wrapper stdin, stdout, and stderr variables, set up by FCGI_Accept() |
57 | */ |
58 | |
59 | DLLAPI extern FCGI_FILE _fcgi_sF[]; |
60 | #define FCGI_stdin (&_fcgi_sF[0]) |
61 | #define FCGI_stdout (&_fcgi_sF[1]) |
62 | #define FCGI_stderr (&_fcgi_sF[2]) |
63 | |
64 | /* |
65 | * Wrapper function prototypes, grouped according to sections |
66 | * of Harbison & Steele, "C: A Reference Manual," fourth edition, |
67 | * Prentice-Hall, 1995. |
68 | */ |
69 | |
70 | DLLAPI void FCGI_perror(const char *str); |
71 | |
72 | DLLAPI FCGI_FILE *FCGI_fopen(const char *path, const char *mode); |
73 | DLLAPI int FCGI_fclose(FCGI_FILE *fp); |
74 | DLLAPI int FCGI_fflush(FCGI_FILE *fp); |
75 | DLLAPI FCGI_FILE *FCGI_freopen(const char *path, const char *mode, FCGI_FILE *fp); |
76 | |
77 | DLLAPI int FCGI_setvbuf(FCGI_FILE *fp, char *buf, int bufmode, size_t size); |
78 | DLLAPI void FCGI_setbuf(FCGI_FILE *fp, char *buf); |
79 | |
80 | DLLAPI int FCGI_fseek(FCGI_FILE *fp, long offset, int whence); |
81 | DLLAPI int FCGI_ftell(FCGI_FILE *fp); |
82 | DLLAPI void FCGI_rewind(FCGI_FILE *fp); |
83 | #ifdef HAVE_FPOS |
84 | DLLAPI int FCGI_fgetpos(FCGI_FILE *fp, fpos_t *pos); |
85 | DLLAPI int FCGI_fsetpos(FCGI_FILE *fp, const fpos_t *pos); |
86 | #endif |
87 | DLLAPI int FCGI_fgetc(FCGI_FILE *fp); |
88 | DLLAPI int FCGI_getchar(void); |
89 | DLLAPI int FCGI_ungetc(int c, FCGI_FILE *fp); |
90 | |
91 | DLLAPI char *FCGI_fgets(char *str, int size, FCGI_FILE *fp); |
92 | DLLAPI char *FCGI_gets(char *str); |
93 | |
94 | /* |
95 | * Not yet implemented |
96 | * |
97 | * int FCGI_fscanf(FCGI_FILE *fp, const char *format, ...); |
98 | * int FCGI_scanf(const char *format, ...); |
99 | * |
100 | */ |
101 | |
102 | DLLAPI int FCGI_fputc(int c, FCGI_FILE *fp); |
103 | DLLAPI int FCGI_putchar(int c); |
104 | |
105 | DLLAPI int FCGI_fputs(const char *str, FCGI_FILE *fp); |
106 | DLLAPI int FCGI_puts(const char *str); |
107 | |
108 | DLLAPI int FCGI_fprintf(FCGI_FILE *fp, const char *format, ...); |
109 | DLLAPI int FCGI_printf(const char *format, ...); |
110 | |
111 | DLLAPI int FCGI_vfprintf(FCGI_FILE *fp, const char *format, va_list ap); |
112 | DLLAPI int FCGI_vprintf(const char *format, va_list ap); |
113 | |
114 | DLLAPI size_t FCGI_fread(void *ptr, size_t size, size_t nmemb, FCGI_FILE *fp); |
115 | DLLAPI size_t FCGI_fwrite(void *ptr, size_t size, size_t nmemb, FCGI_FILE *fp); |
116 | |
117 | DLLAPI int FCGI_feof(FCGI_FILE *fp); |
118 | DLLAPI int FCGI_ferror(FCGI_FILE *fp); |
e09316db |
119 | DLLAPI void FCGI_clearerr(FCGI_FILE *fp); |
120 | |
17abbc3a |
121 | DLLAPI FCGI_FILE *FCGI_tmpfile(void); |
0198fd3c |
122 | |
123 | DLLAPI int FCGI_fileno(FCGI_FILE *fp); |
124 | DLLAPI FCGI_FILE *FCGI_fdopen(int fd, const char *mode); |
125 | DLLAPI FCGI_FILE *FCGI_popen(const char *cmd, const char *type); |
126 | DLLAPI int FCGI_pclose(FCGI_FILE *); |
127 | |
128 | /* |
129 | * The remaining definitions are for application programs, |
130 | * not for fcgi_stdio.c |
131 | */ |
132 | |
133 | #ifndef NO_FCGI_DEFINES |
134 | |
135 | /* |
136 | * Replace standard types, variables, and functions with FastCGI wrappers. |
137 | * Use undef in case a macro is already defined. |
138 | */ |
139 | |
140 | #undef FILE |
141 | #define FILE FCGI_FILE |
142 | |
143 | #undef stdin |
144 | #define stdin FCGI_stdin |
145 | #undef stdout |
146 | #define stdout FCGI_stdout |
147 | #undef stderr |
148 | #define stderr FCGI_stderr |
149 | |
150 | #undef perror |
151 | #define perror FCGI_perror |
152 | |
153 | #undef fopen |
154 | #define fopen FCGI_fopen |
155 | #undef fclose |
156 | #define fclose FCGI_fclose |
157 | #undef fflush |
158 | #define fflush FCGI_fflush |
159 | #undef freopen |
160 | #define freopen FCGI_freopen |
161 | |
162 | #undef setvbuf |
163 | #define setvbuf FCGI_setvbuf |
164 | #undef setbuf |
165 | #define setbuf FCGI_setbuf |
166 | |
167 | #undef fseek |
168 | #define fseek FCGI_fseek |
169 | #undef ftell |
170 | #define ftell FCGI_ftell |
171 | #undef rewind |
172 | #define rewind FCGI_rewind |
173 | #undef fgetpos |
174 | #define fgetpos FCGI_fgetpos |
175 | #undef fsetpos |
176 | #define fsetpos FCGI_fsetpos |
177 | |
178 | #undef fgetc |
179 | #define fgetc FCGI_fgetc |
180 | #undef getc |
181 | #define getc FCGI_fgetc |
182 | #undef getchar |
183 | #define getchar FCGI_getchar |
184 | #undef ungetc |
185 | #define ungetc FCGI_ungetc |
186 | |
187 | #undef fgets |
188 | #define fgets FCGI_fgets |
189 | #undef gets |
190 | #define gets FCGI_gets |
191 | |
192 | #undef fputc |
193 | #define fputc FCGI_fputc |
194 | #undef putc |
195 | #define putc FCGI_fputc |
196 | #undef putchar |
197 | #define putchar FCGI_putchar |
198 | |
199 | #undef fputs |
200 | #define fputs FCGI_fputs |
201 | #undef puts |
202 | #define puts FCGI_puts |
203 | |
204 | #undef fprintf |
205 | #define fprintf FCGI_fprintf |
206 | #undef printf |
207 | #define printf FCGI_printf |
208 | |
209 | #undef vfprintf |
210 | #define vfprintf FCGI_vfprintf |
211 | #undef vprintf |
212 | #define vprintf FCGI_vprintf |
213 | |
214 | #undef fread |
215 | #define fread FCGI_fread |
216 | #undef fwrite |
217 | #define fwrite FCGI_fwrite |
218 | |
219 | #undef feof |
220 | #define feof FCGI_feof |
221 | #undef ferror |
222 | #define ferror FCGI_ferror |
223 | #undef clearerr |
e09316db |
224 | #define clearerr FCGI_clearerr |
225 | |
226 | #undef tmpfile |
227 | #define tmpfile FCGI_tmpfile |
0198fd3c |
228 | |
229 | #undef fileno |
230 | #define fileno FCGI_fileno |
231 | #undef fdopen |
232 | #define fdopen FCGI_fdopen |
233 | #undef popen |
234 | #define popen FCGI_popen |
235 | #undef pclose |
236 | #define pclose FCGI_pclose |
237 | |
238 | #endif /* NO_FCGI_DEFINES */ |
239 | |
240 | #if defined (__cplusplus) || defined (c_plusplus) |
241 | } /* terminate extern "C" { */ |
242 | #endif |
243 | |
244 | #endif /* _FCGI_STDIO */ |
245 | |