4 * FastCGI-stdio compatibility package
7 * Copyright (c) 1996 Open Market, Inc.
9 * See the file "LICENSE.TERMS" for information on usage and redistribution
10 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
12 * $Id: fcgi_stdio.h,v 1.5 2001/06/22 13:21:15 robs Exp $
19 #include <sys/types.h>
22 #if defined (c_plusplus) || defined (__cplusplus)
28 #define DLLAPI __declspec(dllimport)
35 * Wrapper type for FILE
40 FCGX_Stream *fcgx_stream;
44 * The four new functions and two new macros
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);
52 #define FCGI_ToFILE(fcgi_file) (fcgi_file->stdio_stream)
53 #define FCGI_ToFcgiStream(fcgi_file) (fcgi_file->fcgx_stream)
56 * Wrapper stdin, stdout, and stderr variables, set up by FCGI_Accept()
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])
65 * Wrapper function prototypes, grouped according to sections
66 * of Harbison & Steele, "C: A Reference Manual," fourth edition,
67 * Prentice-Hall, 1995.
70 DLLAPI void FCGI_perror(const char *str);
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);
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);
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);
84 DLLAPI int FCGI_fgetpos(FCGI_FILE *fp, fpos_t *pos);
85 DLLAPI int FCGI_fsetpos(FCGI_FILE *fp, const fpos_t *pos);
87 DLLAPI int FCGI_fgetc(FCGI_FILE *fp);
88 DLLAPI int FCGI_getchar(void);
89 DLLAPI int FCGI_ungetc(int c, FCGI_FILE *fp);
91 DLLAPI char *FCGI_fgets(char *str, int size, FCGI_FILE *fp);
92 DLLAPI char *FCGI_gets(char *str);
97 * int FCGI_fscanf(FCGI_FILE *fp, const char *format, ...);
98 * int FCGI_scanf(const char *format, ...);
102 DLLAPI int FCGI_fputc(int c, FCGI_FILE *fp);
103 DLLAPI int FCGI_putchar(int c);
105 DLLAPI int FCGI_fputs(const char *str, FCGI_FILE *fp);
106 DLLAPI int FCGI_puts(const char *str);
108 DLLAPI int FCGI_fprintf(FCGI_FILE *fp, const char *format, ...);
109 DLLAPI int FCGI_printf(const char *format, ...);
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);
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);
117 DLLAPI int FCGI_feof(FCGI_FILE *fp);
118 DLLAPI int FCGI_ferror(FCGI_FILE *fp);
119 DLLAPI void FCGI_clearerr(FCGI_FILE *fp);
121 DLLAPI FCGI_FILE *FCGI_tmpfile(void);
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 *);
129 * The remaining definitions are for application programs,
130 * not for fcgi_stdio.c
133 #ifndef NO_FCGI_DEFINES
136 * Replace standard types, variables, and functions with FastCGI wrappers.
137 * Use undef in case a macro is already defined.
141 #define FILE FCGI_FILE
144 #define stdin FCGI_stdin
146 #define stdout FCGI_stdout
148 #define stderr FCGI_stderr
151 #define perror FCGI_perror
154 #define fopen FCGI_fopen
156 #define fclose FCGI_fclose
158 #define fflush FCGI_fflush
160 #define freopen FCGI_freopen
163 #define setvbuf FCGI_setvbuf
165 #define setbuf FCGI_setbuf
168 #define fseek FCGI_fseek
170 #define ftell FCGI_ftell
172 #define rewind FCGI_rewind
174 #define fgetpos FCGI_fgetpos
176 #define fsetpos FCGI_fsetpos
179 #define fgetc FCGI_fgetc
181 #define getc FCGI_fgetc
183 #define getchar FCGI_getchar
185 #define ungetc FCGI_ungetc
188 #define fgets FCGI_fgets
190 #define gets FCGI_gets
193 #define fputc FCGI_fputc
195 #define putc FCGI_fputc
197 #define putchar FCGI_putchar
200 #define fputs FCGI_fputs
202 #define puts FCGI_puts
205 #define fprintf FCGI_fprintf
207 #define printf FCGI_printf
210 #define vfprintf FCGI_vfprintf
212 #define vprintf FCGI_vprintf
215 #define fread FCGI_fread
217 #define fwrite FCGI_fwrite
220 #define feof FCGI_feof
222 #define ferror FCGI_ferror
224 #define clearerr FCGI_clearerr
227 #define tmpfile FCGI_tmpfile
230 #define fileno FCGI_fileno
232 #define fdopen FCGI_fdopen
234 #define popen FCGI_popen
236 #define pclose FCGI_pclose
238 #endif /* NO_FCGI_DEFINES */
240 #if defined (__cplusplus) || defined (c_plusplus)
241 } /* terminate extern "C" { */
244 #endif /* _FCGI_STDIO */