Initial Commit
This commit is contained in:
commit
9efdba3c6f
7
Readme.md
Normal file
7
Readme.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
# libfcgi-bin
|
||||
|
||||
Source: fcgi-2.4.1-SNAP-0910052249
|
||||
|
||||
Build with Visual Studio 2017.
|
||||
|
||||
Only x86 version is included. The original project (libfcgi) does not provide a x64 project file.
|
BIN
dll/x86/libfcgi.dll
Normal file
BIN
dll/x86/libfcgi.dll
Normal file
Binary file not shown.
136
include/fastcgi.h
Normal file
136
include/fastcgi.h
Normal file
|
@ -0,0 +1,136 @@
|
|||
/*
|
||||
* fastcgi.h --
|
||||
*
|
||||
* Defines for the FastCGI protocol.
|
||||
*
|
||||
*
|
||||
* Copyright (c) 1995-1996 Open Market, Inc.
|
||||
*
|
||||
* See the file "LICENSE.TERMS" for information on usage and redistribution
|
||||
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
*
|
||||
* $Id: fastcgi.h,v 1.1.1.1 1997/09/16 15:36:32 stanleyg Exp $
|
||||
*/
|
||||
|
||||
#ifndef _FASTCGI_H
|
||||
#define _FASTCGI_H
|
||||
|
||||
/*
|
||||
* Listening socket file number
|
||||
*/
|
||||
#define FCGI_LISTENSOCK_FILENO 0
|
||||
|
||||
typedef struct {
|
||||
unsigned char version;
|
||||
unsigned char type;
|
||||
unsigned char requestIdB1;
|
||||
unsigned char requestIdB0;
|
||||
unsigned char contentLengthB1;
|
||||
unsigned char contentLengthB0;
|
||||
unsigned char paddingLength;
|
||||
unsigned char reserved;
|
||||
} FCGI_Header;
|
||||
|
||||
#define FCGI_MAX_LENGTH 0xffff
|
||||
|
||||
/*
|
||||
* Number of bytes in a FCGI_Header. Future versions of the protocol
|
||||
* will not reduce this number.
|
||||
*/
|
||||
#define FCGI_HEADER_LEN 8
|
||||
|
||||
/*
|
||||
* Value for version component of FCGI_Header
|
||||
*/
|
||||
#define FCGI_VERSION_1 1
|
||||
|
||||
/*
|
||||
* Values for type component of FCGI_Header
|
||||
*/
|
||||
#define FCGI_BEGIN_REQUEST 1
|
||||
#define FCGI_ABORT_REQUEST 2
|
||||
#define FCGI_END_REQUEST 3
|
||||
#define FCGI_PARAMS 4
|
||||
#define FCGI_STDIN 5
|
||||
#define FCGI_STDOUT 6
|
||||
#define FCGI_STDERR 7
|
||||
#define FCGI_DATA 8
|
||||
#define FCGI_GET_VALUES 9
|
||||
#define FCGI_GET_VALUES_RESULT 10
|
||||
#define FCGI_UNKNOWN_TYPE 11
|
||||
#define FCGI_MAXTYPE (FCGI_UNKNOWN_TYPE)
|
||||
|
||||
/*
|
||||
* Value for requestId component of FCGI_Header
|
||||
*/
|
||||
#define FCGI_NULL_REQUEST_ID 0
|
||||
|
||||
|
||||
typedef struct {
|
||||
unsigned char roleB1;
|
||||
unsigned char roleB0;
|
||||
unsigned char flags;
|
||||
unsigned char reserved[5];
|
||||
} FCGI_BeginRequestBody;
|
||||
|
||||
typedef struct {
|
||||
FCGI_Header header;
|
||||
FCGI_BeginRequestBody body;
|
||||
} FCGI_BeginRequestRecord;
|
||||
|
||||
/*
|
||||
* Mask for flags component of FCGI_BeginRequestBody
|
||||
*/
|
||||
#define FCGI_KEEP_CONN 1
|
||||
|
||||
/*
|
||||
* Values for role component of FCGI_BeginRequestBody
|
||||
*/
|
||||
#define FCGI_RESPONDER 1
|
||||
#define FCGI_AUTHORIZER 2
|
||||
#define FCGI_FILTER 3
|
||||
|
||||
|
||||
typedef struct {
|
||||
unsigned char appStatusB3;
|
||||
unsigned char appStatusB2;
|
||||
unsigned char appStatusB1;
|
||||
unsigned char appStatusB0;
|
||||
unsigned char protocolStatus;
|
||||
unsigned char reserved[3];
|
||||
} FCGI_EndRequestBody;
|
||||
|
||||
typedef struct {
|
||||
FCGI_Header header;
|
||||
FCGI_EndRequestBody body;
|
||||
} FCGI_EndRequestRecord;
|
||||
|
||||
/*
|
||||
* Values for protocolStatus component of FCGI_EndRequestBody
|
||||
*/
|
||||
#define FCGI_REQUEST_COMPLETE 0
|
||||
#define FCGI_CANT_MPX_CONN 1
|
||||
#define FCGI_OVERLOADED 2
|
||||
#define FCGI_UNKNOWN_ROLE 3
|
||||
|
||||
|
||||
/*
|
||||
* Variable names for FCGI_GET_VALUES / FCGI_GET_VALUES_RESULT records
|
||||
*/
|
||||
#define FCGI_MAX_CONNS "FCGI_MAX_CONNS"
|
||||
#define FCGI_MAX_REQS "FCGI_MAX_REQS"
|
||||
#define FCGI_MPXS_CONNS "FCGI_MPXS_CONNS"
|
||||
|
||||
|
||||
typedef struct {
|
||||
unsigned char type;
|
||||
unsigned char reserved[7];
|
||||
} FCGI_UnknownTypeBody;
|
||||
|
||||
typedef struct {
|
||||
FCGI_Header header;
|
||||
FCGI_UnknownTypeBody body;
|
||||
} FCGI_UnknownTypeRecord;
|
||||
|
||||
#endif /* _FASTCGI_H */
|
||||
|
39
include/fcgi_config.h
Normal file
39
include/fcgi_config.h
Normal file
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Copied to fcgi_config.h when building on WinNT without cygwin,
|
||||
* i.e. configure is not run. See fcgi_config.h.in for details.
|
||||
*/
|
||||
|
||||
#define HAVE_FPOS 1
|
||||
#define HAVE_LIMITS_H 1
|
||||
#define HAVE_STREAMBUF_CHAR_TYPE 1
|
||||
#define HAVE_STRERROR 1
|
||||
#undef HAVE_ARPA_INET_H
|
||||
#undef HAVE_DLFCN_H
|
||||
#undef HAVE_FILENO_PROTO
|
||||
#undef HAVE_INTTYPES_H
|
||||
#undef HAVE_IOSTREAM_WITHASSIGN_STREAMBUF
|
||||
#undef HAVE_LIBNSL
|
||||
#undef HAVE_LIBSOCKET
|
||||
#undef HAVE_MEMORY_H
|
||||
#undef HAVE_NETDB_H
|
||||
#undef HAVE_NETINET_IN_H
|
||||
#undef HAVE_PTHREAD
|
||||
#undef HAVE_SOCKADDR_UN_SUN_LEN
|
||||
#undef HAVE_SOCKLEN
|
||||
#undef HAVE_STDINT_H
|
||||
#undef HAVE_STDLIB_H
|
||||
#undef HAVE_STRING_H
|
||||
#undef HAVE_STRINGS_H
|
||||
#undef HAVE_SYS_PARAM_H
|
||||
#undef HAVE_SYS_SOCKET_H
|
||||
#undef HAVE_SYS_STAT_H
|
||||
#undef HAVE_SYS_TIME_H
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
#undef HAVE_UNISTD_H
|
||||
#undef HAVE_VA_ARG_LONG_DOUBLE_BUG
|
||||
#undef PTHREAD_CREATE_JOINABLE
|
||||
#undef STDC_HEADERS
|
||||
#undef USE_LOCKING
|
||||
#undef const
|
||||
#undef inline
|
||||
#undef ssize_t
|
39
include/fcgi_config_x86.h
Normal file
39
include/fcgi_config_x86.h
Normal file
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* Copied to fcgi_config.h when building on WinNT without cygwin,
|
||||
* i.e. configure is not run. See fcgi_config.h.in for details.
|
||||
*/
|
||||
|
||||
#define HAVE_FPOS 1
|
||||
#define HAVE_LIMITS_H 1
|
||||
#define HAVE_STREAMBUF_CHAR_TYPE 1
|
||||
#define HAVE_STRERROR 1
|
||||
#undef HAVE_ARPA_INET_H
|
||||
#undef HAVE_DLFCN_H
|
||||
#undef HAVE_FILENO_PROTO
|
||||
#undef HAVE_INTTYPES_H
|
||||
#undef HAVE_IOSTREAM_WITHASSIGN_STREAMBUF
|
||||
#undef HAVE_LIBNSL
|
||||
#undef HAVE_LIBSOCKET
|
||||
#undef HAVE_MEMORY_H
|
||||
#undef HAVE_NETDB_H
|
||||
#undef HAVE_NETINET_IN_H
|
||||
#undef HAVE_PTHREAD
|
||||
#undef HAVE_SOCKADDR_UN_SUN_LEN
|
||||
#undef HAVE_SOCKLEN
|
||||
#undef HAVE_STDINT_H
|
||||
#undef HAVE_STDLIB_H
|
||||
#undef HAVE_STRING_H
|
||||
#undef HAVE_STRINGS_H
|
||||
#undef HAVE_SYS_PARAM_H
|
||||
#undef HAVE_SYS_SOCKET_H
|
||||
#undef HAVE_SYS_STAT_H
|
||||
#undef HAVE_SYS_TIME_H
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
#undef HAVE_UNISTD_H
|
||||
#undef HAVE_VA_ARG_LONG_DOUBLE_BUG
|
||||
#undef PTHREAD_CREATE_JOINABLE
|
||||
#undef STDC_HEADERS
|
||||
#undef USE_LOCKING
|
||||
#undef const
|
||||
#undef inline
|
||||
#undef ssize_t
|
245
include/fcgi_stdio.h
Normal file
245
include/fcgi_stdio.h
Normal file
|
@ -0,0 +1,245 @@
|
|||
/*
|
||||
* fcgi_stdio.h --
|
||||
*
|
||||
* FastCGI-stdio compatibility package
|
||||
*
|
||||
*
|
||||
* Copyright (c) 1996 Open Market, Inc.
|
||||
*
|
||||
* See the file "LICENSE.TERMS" for information on usage and redistribution
|
||||
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
*
|
||||
* $Id: fcgi_stdio.h,v 1.5 2001/06/22 13:21:15 robs Exp $
|
||||
*/
|
||||
|
||||
#ifndef _FCGI_STDIO
|
||||
#define _FCGI_STDIO 1
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include "fcgiapp.h"
|
||||
|
||||
#if defined (c_plusplus) || defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef DLLAPI
|
||||
#ifdef _WIN32
|
||||
#define DLLAPI __declspec(dllimport)
|
||||
#else
|
||||
#define DLLAPI
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Wrapper type for FILE
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
FILE *stdio_stream;
|
||||
FCGX_Stream *fcgx_stream;
|
||||
} FCGI_FILE;
|
||||
|
||||
/*
|
||||
* The four new functions and two new macros
|
||||
*/
|
||||
|
||||
DLLAPI int FCGI_Accept(void);
|
||||
DLLAPI void FCGI_Finish(void);
|
||||
DLLAPI int FCGI_StartFilterData(void);
|
||||
DLLAPI void FCGI_SetExitStatus(int status);
|
||||
|
||||
#define FCGI_ToFILE(fcgi_file) (fcgi_file->stdio_stream)
|
||||
#define FCGI_ToFcgiStream(fcgi_file) (fcgi_file->fcgx_stream)
|
||||
|
||||
/*
|
||||
* Wrapper stdin, stdout, and stderr variables, set up by FCGI_Accept()
|
||||
*/
|
||||
|
||||
DLLAPI extern FCGI_FILE _fcgi_sF[];
|
||||
#define FCGI_stdin (&_fcgi_sF[0])
|
||||
#define FCGI_stdout (&_fcgi_sF[1])
|
||||
#define FCGI_stderr (&_fcgi_sF[2])
|
||||
|
||||
/*
|
||||
* Wrapper function prototypes, grouped according to sections
|
||||
* of Harbison & Steele, "C: A Reference Manual," fourth edition,
|
||||
* Prentice-Hall, 1995.
|
||||
*/
|
||||
|
||||
DLLAPI void FCGI_perror(const char *str);
|
||||
|
||||
DLLAPI FCGI_FILE *FCGI_fopen(const char *path, const char *mode);
|
||||
DLLAPI int FCGI_fclose(FCGI_FILE *fp);
|
||||
DLLAPI int FCGI_fflush(FCGI_FILE *fp);
|
||||
DLLAPI FCGI_FILE *FCGI_freopen(const char *path, const char *mode, FCGI_FILE *fp);
|
||||
|
||||
DLLAPI int FCGI_setvbuf(FCGI_FILE *fp, char *buf, int bufmode, size_t size);
|
||||
DLLAPI void FCGI_setbuf(FCGI_FILE *fp, char *buf);
|
||||
|
||||
DLLAPI int FCGI_fseek(FCGI_FILE *fp, long offset, int whence);
|
||||
DLLAPI int FCGI_ftell(FCGI_FILE *fp);
|
||||
DLLAPI void FCGI_rewind(FCGI_FILE *fp);
|
||||
#ifdef HAVE_FPOS
|
||||
DLLAPI int FCGI_fgetpos(FCGI_FILE *fp, fpos_t *pos);
|
||||
DLLAPI int FCGI_fsetpos(FCGI_FILE *fp, const fpos_t *pos);
|
||||
#endif
|
||||
DLLAPI int FCGI_fgetc(FCGI_FILE *fp);
|
||||
DLLAPI int FCGI_getchar(void);
|
||||
DLLAPI int FCGI_ungetc(int c, FCGI_FILE *fp);
|
||||
|
||||
DLLAPI char *FCGI_fgets(char *str, int size, FCGI_FILE *fp);
|
||||
DLLAPI char *FCGI_gets(char *str);
|
||||
|
||||
/*
|
||||
* Not yet implemented
|
||||
*
|
||||
* int FCGI_fscanf(FCGI_FILE *fp, const char *format, ...);
|
||||
* int FCGI_scanf(const char *format, ...);
|
||||
*
|
||||
*/
|
||||
|
||||
DLLAPI int FCGI_fputc(int c, FCGI_FILE *fp);
|
||||
DLLAPI int FCGI_putchar(int c);
|
||||
|
||||
DLLAPI int FCGI_fputs(const char *str, FCGI_FILE *fp);
|
||||
DLLAPI int FCGI_puts(const char *str);
|
||||
|
||||
DLLAPI int FCGI_fprintf(FCGI_FILE *fp, const char *format, ...);
|
||||
DLLAPI int FCGI_printf(const char *format, ...);
|
||||
|
||||
DLLAPI int FCGI_vfprintf(FCGI_FILE *fp, const char *format, va_list ap);
|
||||
DLLAPI int FCGI_vprintf(const char *format, va_list ap);
|
||||
|
||||
DLLAPI size_t FCGI_fread(void *ptr, size_t size, size_t nmemb, FCGI_FILE *fp);
|
||||
DLLAPI size_t FCGI_fwrite(void *ptr, size_t size, size_t nmemb, FCGI_FILE *fp);
|
||||
|
||||
DLLAPI int FCGI_feof(FCGI_FILE *fp);
|
||||
DLLAPI int FCGI_ferror(FCGI_FILE *fp);
|
||||
DLLAPI void FCGI_clearerr(FCGI_FILE *fp);
|
||||
|
||||
DLLAPI FCGI_FILE *FCGI_tmpfile(void);
|
||||
|
||||
DLLAPI int FCGI_fileno(FCGI_FILE *fp);
|
||||
DLLAPI FCGI_FILE *FCGI_fdopen(int fd, const char *mode);
|
||||
DLLAPI FCGI_FILE *FCGI_popen(const char *cmd, const char *type);
|
||||
DLLAPI int FCGI_pclose(FCGI_FILE *);
|
||||
|
||||
/*
|
||||
* The remaining definitions are for application programs,
|
||||
* not for fcgi_stdio.c
|
||||
*/
|
||||
|
||||
#ifndef NO_FCGI_DEFINES
|
||||
|
||||
/*
|
||||
* Replace standard types, variables, and functions with FastCGI wrappers.
|
||||
* Use undef in case a macro is already defined.
|
||||
*/
|
||||
|
||||
#undef FILE
|
||||
#define FILE FCGI_FILE
|
||||
|
||||
#undef stdin
|
||||
#define stdin FCGI_stdin
|
||||
#undef stdout
|
||||
#define stdout FCGI_stdout
|
||||
#undef stderr
|
||||
#define stderr FCGI_stderr
|
||||
|
||||
#undef perror
|
||||
#define perror FCGI_perror
|
||||
|
||||
#undef fopen
|
||||
#define fopen FCGI_fopen
|
||||
#undef fclose
|
||||
#define fclose FCGI_fclose
|
||||
#undef fflush
|
||||
#define fflush FCGI_fflush
|
||||
#undef freopen
|
||||
#define freopen FCGI_freopen
|
||||
|
||||
#undef setvbuf
|
||||
#define setvbuf FCGI_setvbuf
|
||||
#undef setbuf
|
||||
#define setbuf FCGI_setbuf
|
||||
|
||||
#undef fseek
|
||||
#define fseek FCGI_fseek
|
||||
#undef ftell
|
||||
#define ftell FCGI_ftell
|
||||
#undef rewind
|
||||
#define rewind FCGI_rewind
|
||||
#undef fgetpos
|
||||
#define fgetpos FCGI_fgetpos
|
||||
#undef fsetpos
|
||||
#define fsetpos FCGI_fsetpos
|
||||
|
||||
#undef fgetc
|
||||
#define fgetc FCGI_fgetc
|
||||
#undef getc
|
||||
#define getc FCGI_fgetc
|
||||
#undef getchar
|
||||
#define getchar FCGI_getchar
|
||||
#undef ungetc
|
||||
#define ungetc FCGI_ungetc
|
||||
|
||||
#undef fgets
|
||||
#define fgets FCGI_fgets
|
||||
#undef gets
|
||||
#define gets FCGI_gets
|
||||
|
||||
#undef fputc
|
||||
#define fputc FCGI_fputc
|
||||
#undef putc
|
||||
#define putc FCGI_fputc
|
||||
#undef putchar
|
||||
#define putchar FCGI_putchar
|
||||
|
||||
#undef fputs
|
||||
#define fputs FCGI_fputs
|
||||
#undef puts
|
||||
#define puts FCGI_puts
|
||||
|
||||
#undef fprintf
|
||||
#define fprintf FCGI_fprintf
|
||||
#undef printf
|
||||
#define printf FCGI_printf
|
||||
|
||||
#undef vfprintf
|
||||
#define vfprintf FCGI_vfprintf
|
||||
#undef vprintf
|
||||
#define vprintf FCGI_vprintf
|
||||
|
||||
#undef fread
|
||||
#define fread FCGI_fread
|
||||
#undef fwrite
|
||||
#define fwrite FCGI_fwrite
|
||||
|
||||
#undef feof
|
||||
#define feof FCGI_feof
|
||||
#undef ferror
|
||||
#define ferror FCGI_ferror
|
||||
#undef clearerr
|
||||
#define clearerr FCGI_clearerr
|
||||
|
||||
#undef tmpfile
|
||||
#define tmpfile FCGI_tmpfile
|
||||
|
||||
#undef fileno
|
||||
#define fileno FCGI_fileno
|
||||
#undef fdopen
|
||||
#define fdopen FCGI_fdopen
|
||||
#undef popen
|
||||
#define popen FCGI_popen
|
||||
#undef pclose
|
||||
#define pclose FCGI_pclose
|
||||
|
||||
#endif /* NO_FCGI_DEFINES */
|
||||
|
||||
#if defined (__cplusplus) || defined (c_plusplus)
|
||||
} /* terminate extern "C" { */
|
||||
#endif
|
||||
|
||||
#endif /* _FCGI_STDIO */
|
||||
|
632
include/fcgiapp.h
Normal file
632
include/fcgiapp.h
Normal file
|
@ -0,0 +1,632 @@
|
|||
/*
|
||||
* fcgiapp.h --
|
||||
*
|
||||
* Definitions for FastCGI application server programs
|
||||
*
|
||||
*
|
||||
* Copyright (c) 1996 Open Market, Inc.
|
||||
*
|
||||
* See the file "LICENSE.TERMS" for information on usage and redistribution
|
||||
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
*
|
||||
* $Id: fcgiapp.h,v 1.14 2003/06/22 00:16:44 robs Exp $
|
||||
*/
|
||||
|
||||
#ifndef _FCGIAPP_H
|
||||
#define _FCGIAPP_H
|
||||
|
||||
/* Hack to see if we are building TCL - TCL needs varargs not stdarg */
|
||||
#ifndef TCL_LIBRARY
|
||||
#include <stdarg.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
#endif
|
||||
|
||||
#ifndef DLLAPI
|
||||
#ifdef _WIN32
|
||||
#define DLLAPI __declspec(dllimport)
|
||||
#else
|
||||
#define DLLAPI
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (c_plusplus) || defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Error codes. Assigned to avoid conflict with EOF and errno(2).
|
||||
*/
|
||||
#define FCGX_UNSUPPORTED_VERSION -2
|
||||
#define FCGX_PROTOCOL_ERROR -3
|
||||
#define FCGX_PARAMS_ERROR -4
|
||||
#define FCGX_CALL_SEQ_ERROR -5
|
||||
|
||||
/*
|
||||
* This structure defines the state of a FastCGI stream.
|
||||
* Streams are modeled after the FILE type defined in stdio.h.
|
||||
* (We wouldn't need our own if platform vendors provided a
|
||||
* standard way to subclass theirs.)
|
||||
* The state of a stream is private and should only be accessed
|
||||
* by the procedures defined below.
|
||||
*/
|
||||
typedef struct FCGX_Stream {
|
||||
unsigned char *rdNext; /* reader: first valid byte
|
||||
* writer: equals stop */
|
||||
unsigned char *wrNext; /* writer: first free byte
|
||||
* reader: equals stop */
|
||||
unsigned char *stop; /* reader: last valid byte + 1
|
||||
* writer: last free byte + 1 */
|
||||
unsigned char *stopUnget; /* reader: first byte of current buffer
|
||||
* fragment, for ungetc
|
||||
* writer: undefined */
|
||||
int isReader;
|
||||
int isClosed;
|
||||
int wasFCloseCalled;
|
||||
int FCGI_errno; /* error status */
|
||||
void (*fillBuffProc) (struct FCGX_Stream *stream);
|
||||
void (*emptyBuffProc) (struct FCGX_Stream *stream, int doClose);
|
||||
void *data;
|
||||
} FCGX_Stream;
|
||||
|
||||
/*
|
||||
* An environment (as defined by environ(7)): A NULL-terminated array
|
||||
* of strings, each string having the form name=value.
|
||||
*/
|
||||
typedef char **FCGX_ParamArray;
|
||||
|
||||
/*
|
||||
* FCGX_Request Flags
|
||||
*
|
||||
* Setting FCGI_FAIL_ACCEPT_ON_INTR prevents FCGX_Accept() from
|
||||
* restarting upon being interrupted.
|
||||
*/
|
||||
#define FCGI_FAIL_ACCEPT_ON_INTR 1
|
||||
|
||||
/*
|
||||
* FCGX_Request -- State associated with a request.
|
||||
*
|
||||
* Its exposed for API simplicity, I expect parts of it to change!
|
||||
*/
|
||||
typedef struct FCGX_Request {
|
||||
int requestId; /* valid if isBeginProcessed */
|
||||
int role;
|
||||
FCGX_Stream *in;
|
||||
FCGX_Stream *out;
|
||||
FCGX_Stream *err;
|
||||
char **envp;
|
||||
|
||||
/* Don't use anything below here */
|
||||
|
||||
struct Params *paramsPtr;
|
||||
int ipcFd; /* < 0 means no connection */
|
||||
int isBeginProcessed; /* FCGI_BEGIN_REQUEST seen */
|
||||
int keepConnection; /* don't close ipcFd at end of request */
|
||||
int appStatus;
|
||||
int nWriters; /* number of open writers (0..2) */
|
||||
int flags;
|
||||
int listen_sock;
|
||||
int detached;
|
||||
} FCGX_Request;
|
||||
|
||||
|
||||
/*
|
||||
*======================================================================
|
||||
* Control
|
||||
*======================================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_IsCGI --
|
||||
*
|
||||
* Returns TRUE iff this process appears to be a CGI process
|
||||
* rather than a FastCGI process.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_IsCGI(void);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_Init --
|
||||
*
|
||||
* Initialize the FCGX library. Call in multi-threaded apps
|
||||
* before calling FCGX_Accept_r().
|
||||
*
|
||||
* Returns 0 upon success.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_Init(void);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_OpenSocket --
|
||||
*
|
||||
* Create a FastCGI listen socket.
|
||||
*
|
||||
* path is the Unix domain socket (named pipe for WinNT), or a colon
|
||||
* followed by a port number. e.g. "/tmp/fastcgi/mysocket", ":5000"
|
||||
*
|
||||
* backlog is the listen queue depth used in the listen() call.
|
||||
*
|
||||
* Returns the socket's file descriptor or -1 on error.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_OpenSocket(const char *path, int backlog);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_InitRequest --
|
||||
*
|
||||
* Initialize a FCGX_Request for use with FCGX_Accept_r().
|
||||
*
|
||||
* sock is a file descriptor returned by FCGX_OpenSocket() or 0 (default).
|
||||
* The only supported flag at this time is FCGI_FAIL_ON_INTR.
|
||||
*
|
||||
* Returns 0 upon success.
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_InitRequest(FCGX_Request *request, int sock, int flags);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_Accept_r --
|
||||
*
|
||||
* Accept a new request (multi-thread safe). Be sure to call
|
||||
* FCGX_Init() first.
|
||||
*
|
||||
* Results:
|
||||
* 0 for successful call, -1 for error.
|
||||
*
|
||||
* Side effects:
|
||||
*
|
||||
* Finishes the request accepted by (and frees any
|
||||
* storage allocated by) the previous call to FCGX_Accept.
|
||||
* Creates input, output, and error streams and
|
||||
* assigns them to *in, *out, and *err respectively.
|
||||
* Creates a parameters data structure to be accessed
|
||||
* via getenv(3) (if assigned to environ) or by FCGX_GetParam
|
||||
* and assigns it to *envp.
|
||||
*
|
||||
* DO NOT retain pointers to the envp array or any strings
|
||||
* contained in it (e.g. to the result of calling FCGX_GetParam),
|
||||
* since these will be freed by the next call to FCGX_Finish
|
||||
* or FCGX_Accept.
|
||||
*
|
||||
* DON'T use the FCGX_Request, its structure WILL change.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_Accept_r(FCGX_Request *request);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_Finish_r --
|
||||
*
|
||||
* Finish the request (multi-thread safe).
|
||||
*
|
||||
* Side effects:
|
||||
*
|
||||
* Finishes the request accepted by (and frees any
|
||||
* storage allocated by) the previous call to FCGX_Accept.
|
||||
*
|
||||
* DO NOT retain pointers to the envp array or any strings
|
||||
* contained in it (e.g. to the result of calling FCGX_GetParam),
|
||||
* since these will be freed by the next call to FCGX_Finish
|
||||
* or FCGX_Accept.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI void FCGX_Finish_r(FCGX_Request *request);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_Free --
|
||||
*
|
||||
* Free the memory and, if close is true,
|
||||
* IPC FD associated with the request (multi-thread safe).
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI void FCGX_Free(FCGX_Request * request, int close);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_Accept --
|
||||
*
|
||||
* Accept a new request (NOT multi-thread safe).
|
||||
*
|
||||
* Results:
|
||||
* 0 for successful call, -1 for error.
|
||||
*
|
||||
* Side effects:
|
||||
*
|
||||
* Finishes the request accepted by (and frees any
|
||||
* storage allocated by) the previous call to FCGX_Accept.
|
||||
* Creates input, output, and error streams and
|
||||
* assigns them to *in, *out, and *err respectively.
|
||||
* Creates a parameters data structure to be accessed
|
||||
* via getenv(3) (if assigned to environ) or by FCGX_GetParam
|
||||
* and assigns it to *envp.
|
||||
*
|
||||
* DO NOT retain pointers to the envp array or any strings
|
||||
* contained in it (e.g. to the result of calling FCGX_GetParam),
|
||||
* since these will be freed by the next call to FCGX_Finish
|
||||
* or FCGX_Accept.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_Accept(
|
||||
FCGX_Stream **in,
|
||||
FCGX_Stream **out,
|
||||
FCGX_Stream **err,
|
||||
FCGX_ParamArray *envp);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_Finish --
|
||||
*
|
||||
* Finish the current request (NOT multi-thread safe).
|
||||
*
|
||||
* Side effects:
|
||||
*
|
||||
* Finishes the request accepted by (and frees any
|
||||
* storage allocated by) the previous call to FCGX_Accept.
|
||||
*
|
||||
* DO NOT retain pointers to the envp array or any strings
|
||||
* contained in it (e.g. to the result of calling FCGX_GetParam),
|
||||
* since these will be freed by the next call to FCGX_Finish
|
||||
* or FCGX_Accept.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI void FCGX_Finish(void);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_StartFilterData --
|
||||
*
|
||||
* stream is an input stream for a FCGI_FILTER request.
|
||||
* stream is positioned at EOF on FCGI_STDIN.
|
||||
* Repositions stream to the start of FCGI_DATA.
|
||||
* If the preconditions are not met (e.g. FCGI_STDIN has not
|
||||
* been read to EOF) sets the stream error code to
|
||||
* FCGX_CALL_SEQ_ERROR.
|
||||
*
|
||||
* Results:
|
||||
* 0 for a normal return, < 0 for error
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_StartFilterData(FCGX_Stream *stream);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_SetExitStatus --
|
||||
*
|
||||
* Sets the exit status for stream's request. The exit status
|
||||
* is the status code the request would have exited with, had
|
||||
* the request been run as a CGI program. You can call
|
||||
* SetExitStatus several times during a request; the last call
|
||||
* before the request ends determines the value.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI void FCGX_SetExitStatus(int status, FCGX_Stream *stream);
|
||||
|
||||
/*
|
||||
*======================================================================
|
||||
* Parameters
|
||||
*======================================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_GetParam -- obtain value of FCGI parameter in environment
|
||||
*
|
||||
*
|
||||
* Results:
|
||||
* Value bound to name, NULL if name not present in the
|
||||
* environment envp. Caller must not mutate the result
|
||||
* or retain it past the end of this request.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI char *FCGX_GetParam(const char *name, FCGX_ParamArray envp);
|
||||
|
||||
/*
|
||||
*======================================================================
|
||||
* Readers
|
||||
*======================================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_GetChar --
|
||||
*
|
||||
* Reads a byte from the input stream and returns it.
|
||||
*
|
||||
* Results:
|
||||
* The byte, or EOF (-1) if the end of input has been reached.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_GetChar(FCGX_Stream *stream);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_UnGetChar --
|
||||
*
|
||||
* Pushes back the character c onto the input stream. One
|
||||
* character of pushback is guaranteed once a character
|
||||
* has been read. No pushback is possible for EOF.
|
||||
*
|
||||
* Results:
|
||||
* Returns c if the pushback succeeded, EOF if not.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_UnGetChar(int c, FCGX_Stream *stream);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_GetStr --
|
||||
*
|
||||
* Reads up to n consecutive bytes from the input stream
|
||||
* into the character array str. Performs no interpretation
|
||||
* of the input bytes.
|
||||
*
|
||||
* Results:
|
||||
* Number of bytes read. If result is smaller than n,
|
||||
* the end of input has been reached.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_GetStr(char *str, int n, FCGX_Stream *stream);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_GetLine --
|
||||
*
|
||||
* Reads up to n-1 consecutive bytes from the input stream
|
||||
* into the character array str. Stops before n-1 bytes
|
||||
* have been read if '\n' or EOF is read. The terminating '\n'
|
||||
* is copied to str. After copying the last byte into str,
|
||||
* stores a '\0' terminator.
|
||||
*
|
||||
* Results:
|
||||
* NULL if EOF is the first thing read from the input stream,
|
||||
* str otherwise.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI char *FCGX_GetLine(char *str, int n, FCGX_Stream *stream);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_HasSeenEOF --
|
||||
*
|
||||
* Returns EOF if end-of-file has been detected while reading
|
||||
* from stream; otherwise returns 0.
|
||||
*
|
||||
* Note that FCGX_HasSeenEOF(s) may return 0, yet an immediately
|
||||
* following FCGX_GetChar(s) may return EOF. This function, like
|
||||
* the standard C stdio function feof, does not provide the
|
||||
* ability to peek ahead.
|
||||
*
|
||||
* Results:
|
||||
* EOF if end-of-file has been detected, 0 if not.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
DLLAPI int FCGX_HasSeenEOF(FCGX_Stream *stream);
|
||||
|
||||
/*
|
||||
*======================================================================
|
||||
* Writers
|
||||
*======================================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_PutChar --
|
||||
*
|
||||
* Writes a byte to the output stream.
|
||||
*
|
||||
* Results:
|
||||
* The byte, or EOF (-1) if an error occurred.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_PutChar(int c, FCGX_Stream *stream);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_PutStr --
|
||||
*
|
||||
* Writes n consecutive bytes from the character array str
|
||||
* into the output stream. Performs no interpretation
|
||||
* of the output bytes.
|
||||
*
|
||||
* Results:
|
||||
* Number of bytes written (n) for normal return,
|
||||
* EOF (-1) if an error occurred.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_PutStr(const char *str, int n, FCGX_Stream *stream);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_PutS --
|
||||
*
|
||||
* Writes a null-terminated character string to the output stream.
|
||||
*
|
||||
* Results:
|
||||
* number of bytes written for normal return,
|
||||
* EOF (-1) if an error occurred.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_PutS(const char *str, FCGX_Stream *stream);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_FPrintF, FCGX_VFPrintF --
|
||||
*
|
||||
* Performs printf-style output formatting and writes the results
|
||||
* to the output stream.
|
||||
*
|
||||
* Results:
|
||||
* number of bytes written for normal return,
|
||||
* EOF (-1) if an error occurred.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_FPrintF(FCGX_Stream *stream, const char *format, ...);
|
||||
|
||||
DLLAPI int FCGX_VFPrintF(FCGX_Stream *stream, const char *format, va_list arg);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_FFlush --
|
||||
*
|
||||
* Flushes any buffered output.
|
||||
*
|
||||
* Server-push is a legitimate application of FCGX_FFlush.
|
||||
* Otherwise, FCGX_FFlush is not very useful, since FCGX_Accept
|
||||
* does it implicitly. Calling FCGX_FFlush in non-push applications
|
||||
* results in extra writes and therefore reduces performance.
|
||||
*
|
||||
* Results:
|
||||
* EOF (-1) if an error occurred.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_FFlush(FCGX_Stream *stream);
|
||||
|
||||
/*
|
||||
*======================================================================
|
||||
* Both Readers and Writers
|
||||
*======================================================================
|
||||
*/
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_FClose --
|
||||
*
|
||||
* Closes the stream. For writers, flushes any buffered
|
||||
* output.
|
||||
*
|
||||
* Close is not a very useful operation since FCGX_Accept
|
||||
* does it implicitly. Closing the out stream before the
|
||||
* err stream results in an extra write if there's nothing
|
||||
* in the err stream, and therefore reduces performance.
|
||||
*
|
||||
* Results:
|
||||
* EOF (-1) if an error occurred.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_FClose(FCGX_Stream *stream);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_GetError --
|
||||
*
|
||||
* Return the stream error code. 0 means no error, > 0
|
||||
* is an errno(2) error, < 0 is an FastCGI error.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI int FCGX_GetError(FCGX_Stream *stream);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_ClearError --
|
||||
*
|
||||
* Clear the stream error code and end-of-file indication.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI void FCGX_ClearError(FCGX_Stream *stream);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_CreateWriter --
|
||||
*
|
||||
* Create a FCGX_Stream (used by cgi-fcgi). This shouldn't
|
||||
* be needed by a FastCGI applictaion.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI FCGX_Stream *FCGX_CreateWriter(
|
||||
int socket,
|
||||
int requestId,
|
||||
int bufflen,
|
||||
int streamType);
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* FCGX_FreeStream --
|
||||
*
|
||||
* Free a FCGX_Stream (used by cgi-fcgi). This shouldn't
|
||||
* be needed by a FastCGI applictaion.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI void FCGX_FreeStream(FCGX_Stream **stream);
|
||||
|
||||
/* ----------------------------------------------------------------------
|
||||
*
|
||||
* Prevent the lib from accepting any new requests. Signal handler safe.
|
||||
*
|
||||
* ----------------------------------------------------------------------
|
||||
*/
|
||||
DLLAPI void FCGX_ShutdownPending(void);
|
||||
|
||||
|
||||
/*
|
||||
* Attach/Detach an accepted request from its listen socket.
|
||||
* XXX This is not fully implemented at this time (patch welcome).
|
||||
*/
|
||||
DLLAPI int FCGX_Attach(FCGX_Request * r);
|
||||
DLLAPI int FCGX_Detach(FCGX_Request * r);
|
||||
|
||||
|
||||
#if defined (__cplusplus) || defined (c_plusplus)
|
||||
} /* terminate extern "C" { */
|
||||
#endif
|
||||
|
||||
#endif /* _FCGIAPP_H */
|
38
include/fcgimisc.h
Normal file
38
include/fcgimisc.h
Normal file
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* fcgimisc.h --
|
||||
*
|
||||
* Miscellaneous definitions
|
||||
*
|
||||
*
|
||||
* Copyright (c) 1996 Open Market, Inc.
|
||||
*
|
||||
* See the file "LICENSE.TERMS" for information on usage and redistribution
|
||||
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
*
|
||||
* $Id: fcgimisc.h,v 1.3 2001/06/18 14:25:47 robs Exp $
|
||||
*/
|
||||
|
||||
#ifndef _FCGIMISC_H
|
||||
#define _FCGIMISC_H
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE (0)
|
||||
#endif
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE (1)
|
||||
#endif
|
||||
|
||||
#ifndef min
|
||||
#define min(a,b) ((a) < (b) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
#ifndef max
|
||||
#define max(a,b) ((a) > (b) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
#ifndef ASSERT
|
||||
#define ASSERT(assertion) assert(assertion)
|
||||
#endif
|
||||
|
||||
#endif /* _FCGIMISC_H */
|
151
include/fcgio.h
Normal file
151
include/fcgio.h
Normal file
|
@ -0,0 +1,151 @@
|
|||
//
|
||||
// Provides support for FastCGI via C++ iostreams.
|
||||
//
|
||||
// $Id: fcgio.h,v 1.15 2002/02/25 13:16:11 robs Exp $
|
||||
//
|
||||
// This work is based on routines written by George Feinberg. They
|
||||
// have been mostly re-written and extensively changed by
|
||||
// Michael Richards.
|
||||
//
|
||||
// Rewritten again with bug fixes and numerous enhancements by
|
||||
// Michael Shell.
|
||||
//
|
||||
// And rewritten again by Rob Saccoccio.
|
||||
//
|
||||
// Special Thanks to Dietmar Kuehl for his help and the numerous custom
|
||||
// streambuf examples on his web site.
|
||||
//
|
||||
// Copyright (c) 2000 Tux the Linux Penguin
|
||||
// Copyright (c) 2001 Rob Saccoccio and Chelsea Networks
|
||||
//
|
||||
// You are free to use this software without charge or royalty
|
||||
// as long as this notice is not removed or altered, and recognition
|
||||
// is given to the author(s)
|
||||
//
|
||||
// This code is offered as-is without any warranty either expressed or
|
||||
// implied; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE. If it breaks, you get to keep
|
||||
// both halves.
|
||||
|
||||
#ifndef FCGIO_H
|
||||
#define FCGIO_H
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "fcgiapp.h"
|
||||
|
||||
#ifndef DLLAPI
|
||||
#ifdef _WIN32
|
||||
#define DLLAPI __declspec(dllimport)
|
||||
#else
|
||||
#define DLLAPI
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ! HAVE_STREAMBUF_CHAR_TYPE
|
||||
typedef char char_type;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* fcgi_streambuf
|
||||
*/
|
||||
class DLLAPI fcgi_streambuf : public std::streambuf
|
||||
{
|
||||
public:
|
||||
|
||||
// Note that if no buf is assigned (the default), iostream methods
|
||||
// such as peek(), unget() and putback() will fail. If a buf is
|
||||
// assigned, I/O is a bit less effecient and output streams will
|
||||
// have to be flushed (or the streambuf destroyed) before the next
|
||||
// call to "accept".
|
||||
fcgi_streambuf(FCGX_Stream * fcgx, char * buf, int len);
|
||||
|
||||
fcgi_streambuf(char_type * buf, std::streamsize len);
|
||||
|
||||
fcgi_streambuf(FCGX_Stream * fcgx = 0);
|
||||
|
||||
~fcgi_streambuf(void);
|
||||
|
||||
int attach(FCGX_Stream * fcgx);
|
||||
|
||||
protected:
|
||||
|
||||
// Consume the put area (if buffered) and c (if c is not EOF).
|
||||
virtual int overflow(int);
|
||||
|
||||
// Flush the put area (if buffered) and the FCGX buffer to the client.
|
||||
virtual int sync();
|
||||
|
||||
// Remove and return the current character.
|
||||
virtual int uflow();
|
||||
|
||||
// Fill the get area (if buffered) and return the current character.
|
||||
virtual int underflow();
|
||||
|
||||
// Use a buffer. The only reasons that a buffer would be useful is
|
||||
// to support the use of the unget()/putback() or seek() methods. Using
|
||||
// a buffer will result in less efficient I/O. Note: the underlying
|
||||
// FastCGI library (FCGX) maintains its own input and output buffers.
|
||||
virtual std::streambuf * setbuf(char_type * buf, std::streamsize len);
|
||||
|
||||
virtual std::streamsize xsgetn(char_type * s, std::streamsize n);
|
||||
virtual std::streamsize xsputn(const char_type * s, std::streamsize n);
|
||||
|
||||
private:
|
||||
|
||||
FCGX_Stream * fcgx;
|
||||
|
||||
// buf is just handy to have around
|
||||
char_type * buf;
|
||||
|
||||
// this isn't kept by the base class
|
||||
std::streamsize bufsize;
|
||||
|
||||
void init(FCGX_Stream * fcgx, char_type * buf, std::streamsize bufsize);
|
||||
|
||||
void reset(void);
|
||||
};
|
||||
|
||||
/*
|
||||
* fcgi_istream - deprecated
|
||||
*/
|
||||
class DLLAPI fcgi_istream : public std::istream
|
||||
{
|
||||
public:
|
||||
|
||||
// deprecated
|
||||
fcgi_istream(FCGX_Stream * fcgx = 0);
|
||||
|
||||
// deprecated
|
||||
~fcgi_istream(void) {}
|
||||
|
||||
// deprecated
|
||||
virtual void attach(FCGX_Stream * fcgx);
|
||||
|
||||
private:
|
||||
|
||||
fcgi_streambuf fcgi_strmbuf;
|
||||
};
|
||||
|
||||
/*
|
||||
* fcgi_ostream - deprecated
|
||||
*/
|
||||
class DLLAPI fcgi_ostream : public std::ostream
|
||||
{
|
||||
public:
|
||||
|
||||
// deprecated
|
||||
fcgi_ostream(FCGX_Stream * fcgx = 0);
|
||||
|
||||
// deprecated
|
||||
~fcgi_ostream(void) {}
|
||||
|
||||
// deprecated
|
||||
virtual void attach(FCGX_Stream *fcgx);
|
||||
|
||||
private:
|
||||
|
||||
fcgi_streambuf fcgi_strmbuf;
|
||||
};
|
||||
|
||||
#endif /* FCGIO_H */
|
130
include/fcgios.h
Normal file
130
include/fcgios.h
Normal file
|
@ -0,0 +1,130 @@
|
|||
/*
|
||||
* fcgios.h --
|
||||
*
|
||||
* Description of file.
|
||||
*
|
||||
*
|
||||
* Copyright (c) 1996 Open Market, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This file contains proprietary and confidential information and
|
||||
* remains the unpublished property of Open Market, Inc. Use,
|
||||
* disclosure, or reproduction is prohibited except as permitted by
|
||||
* express written license agreement with Open Market, Inc.
|
||||
*
|
||||
* Bill Snapper
|
||||
* snapper@openmarket.com
|
||||
*/
|
||||
#ifndef _FCGIOS_H
|
||||
#define _FCGIOS_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#include <winsock2.h>
|
||||
#endif
|
||||
|
||||
#include "fcgi_config.h"
|
||||
|
||||
#ifdef HAVE_SYS_TIME_H
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#if defined (c_plusplus) || defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#define OS_Errno GetLastError()
|
||||
#define OS_SetErrno(err) SetLastError(err)
|
||||
#ifndef O_NONBLOCK
|
||||
#define O_NONBLOCK 0x0004 /* no delay */
|
||||
#endif
|
||||
#else /* !_WIN32 */
|
||||
#define OS_Errno errno
|
||||
#define OS_SetErrno(err) errno = (err)
|
||||
#endif /* !_WIN32 */
|
||||
|
||||
#ifndef DLLAPI
|
||||
#ifdef _WIN32
|
||||
#define DLLAPI __declspec(dllimport)
|
||||
#else
|
||||
#define DLLAPI
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/* This is the initializer for a "struct timeval" used in a select() call
|
||||
* right after a new request is accept()ed to determine readablity. Its
|
||||
* a drop-dead timer. Its only used for AF_UNIX sockets (not TCP sockets).
|
||||
* Its a workaround for a kernel bug in Linux 2.0.x and SCO Unixware.
|
||||
* Making this as small as possible, yet remain reliable would be best.
|
||||
* 2 seconds is very conservative. 0,0 is not reliable. The shorter the
|
||||
* timeout, the faster request processing will recover. The longer the
|
||||
* timeout, the more likely this application being "busy" will cause other
|
||||
* requests to abort and cause more dead sockets that need this timeout. */
|
||||
#define READABLE_UNIX_FD_DROP_DEAD_TIMEVAL 2,0
|
||||
|
||||
#ifndef STDIN_FILENO
|
||||
#define STDIN_FILENO 0
|
||||
#endif
|
||||
|
||||
#ifndef STDOUT_FILENO
|
||||
#define STDOUT_FILENO 1
|
||||
#endif
|
||||
|
||||
#ifndef STDERR_FILENO
|
||||
#define STDERR_FILENO 2
|
||||
#endif
|
||||
|
||||
#ifndef MAXPATHLEN
|
||||
#define MAXPATHLEN 1024
|
||||
#endif
|
||||
|
||||
#ifndef X_OK
|
||||
#define X_OK 0x01
|
||||
#endif
|
||||
|
||||
#ifndef _CLIENTDATA
|
||||
# if defined(__STDC__) || defined(__cplusplus)
|
||||
typedef void *ClientData;
|
||||
# else
|
||||
typedef int *ClientData;
|
||||
# endif /* __STDC__ */
|
||||
#define _CLIENTDATA
|
||||
#endif
|
||||
|
||||
typedef void (*OS_AsyncProc) (ClientData clientData, int len);
|
||||
|
||||
DLLAPI int OS_LibInit(int stdioFds[3]);
|
||||
DLLAPI void OS_LibShutdown(void);
|
||||
DLLAPI int OS_CreateLocalIpcFd(const char *bindPath, int backlog);
|
||||
DLLAPI int OS_FcgiConnect(char *bindPath);
|
||||
DLLAPI int OS_Read(int fd, char * buf, size_t len);
|
||||
DLLAPI int OS_Write(int fd, char * buf, size_t len);
|
||||
DLLAPI int OS_SpawnChild(char *execPath, int listenFd);
|
||||
DLLAPI int OS_AsyncReadStdin(void *buf, int len, OS_AsyncProc procPtr,
|
||||
ClientData clientData);
|
||||
DLLAPI int OS_AsyncRead(int fd, int offset, void *buf, int len,
|
||||
OS_AsyncProc procPtr, ClientData clientData);
|
||||
DLLAPI int OS_AsyncWrite(int fd, int offset, void *buf, int len,
|
||||
OS_AsyncProc procPtr, ClientData clientData);
|
||||
DLLAPI int OS_Close(int fd, int shutdown);
|
||||
DLLAPI int OS_CloseRead(int fd);
|
||||
DLLAPI int OS_DoIo(struct timeval *tmo);
|
||||
DLLAPI int OS_Accept(int listen_sock, int fail_on_intr, const char *webServerAddrs);
|
||||
DLLAPI int OS_IpcClose(int ipcFd, int shutdown);
|
||||
DLLAPI int OS_IsFcgi(int sock);
|
||||
DLLAPI void OS_SetFlags(int fd, int flags);
|
||||
|
||||
DLLAPI void OS_ShutdownPending(void);
|
||||
|
||||
#if defined (__cplusplus) || defined (c_plusplus)
|
||||
} /* terminate extern "C" { */
|
||||
#endif
|
||||
|
||||
#endif /* _FCGIOS_H */
|
BIN
lib/x86/libfcgi.lib
Normal file
BIN
lib/x86/libfcgi.lib
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user