shane Sun Dec 1 18:11:15 2002 EDT Added files: (Branch: PHP_4_3) /php4/sapi/cgi/libfcgi acinclude.m4 libfcgi.m4
Modified files: /php4/sapi/cgi/libfcgi fcgiapp.c os_unix.c /php4/sapi/cgi/libfcgi/include fcgi_config.h fcgiapp.h fcgios.h Log: MFH
Index: php4/sapi/cgi/libfcgi/fcgiapp.c diff -u php4/sapi/cgi/libfcgi/fcgiapp.c:1.1 php4/sapi/cgi/libfcgi/fcgiapp.c:1.1.4.1 --- php4/sapi/cgi/libfcgi/fcgiapp.c:1.1 Sun Mar 10 16:39:28 2002 +++ php4/sapi/cgi/libfcgi/fcgiapp.c Sun Dec 1 18:11:14 2002 @@ -11,7 +11,7 @@ * */ #ifndef lint -static const char rcsid[] = "$Id: fcgiapp.c,v 1.1 2002/03/10 21:39:28 shane Exp $"; +static const char rcsid[] = "$Id: fcgiapp.c,v 1.1.4.1 2002/12/01 23:11:14 shane Exp +$"; #endif /* not lint */ #include <assert.h> @@ -70,7 +70,7 @@ static int isFastCGI = -1; static char *webServerAddressList = NULL; static FCGX_Request the_request; -void _FCGX_FreeStream(FCGX_Stream **streamPtr, BOOL freeData); +void _FCGX_FreeStream(FCGX_Stream **streamPtr, int freeData); void FCGX_ShutdownPending(void) { @@ -980,24 +980,7 @@ */ } -/* - *====================================================================== - * Parameters - *====================================================================== - */ -/* - * A vector of pointers representing the parameters received - * by a FastCGI application server, with the vector's length - * and last valid element so adding new parameters is efficient. - */ - -typedef struct Params { - FCGX_ParamArray vec; /* vector of strings */ - int length; /* number of string vec can hold */ - char **cur; /* current item in vec; *cur == NULL */ -} Params; -typedef Params *ParamsPtr; /* *---------------------------------------------------------------------- @@ -1071,13 +1054,45 @@ *paramsPtr->cur++ = nameValue; size = paramsPtr->cur - paramsPtr->vec; if(size >= paramsPtr->length) { - paramsPtr->length *= 2; - paramsPtr->vec = (FCGX_ParamArray)realloc(paramsPtr->vec, paramsPtr->length * sizeof(char *)); - paramsPtr->cur = paramsPtr->vec + size; + paramsPtr->length *= 2; + paramsPtr->vec = (FCGX_ParamArray)realloc(paramsPtr->vec, paramsPtr->length * +sizeof(char *)); + paramsPtr->cur = paramsPtr->vec + size; } *paramsPtr->cur = NULL; } + +void FCGX_PutEnv(FCGX_Request *request, char *var) +{ + char *nameValue; + char *e, **p; + int len; + + if (!strchr(var,'=')) { + return; + } + nameValue = StringCopy(var); + e = strchr(nameValue,'='); + *e = 0; + + /* find the name and replace it */ + len = strlen(nameValue); + + for (p = request->envp; p && *p; ++p) { + if((strncmp(nameValue, *p, len) == 0) && ((*p)[len] == '=')) { + free(*p); + *e = '='; + *p = nameValue; + return; + } + } + *e = '='; + /* this is a new var, add it to the environment */ + PutParam(request->paramsPtr,nameValue); + request->envp = request->paramsPtr->vec; +} + + /* *---------------------------------------------------------------------- * @@ -1100,7 +1115,7 @@ len = strlen(name); - for (p = envp; *p; ++p) { + for (p = envp; p && *p; ++p) { if((strncmp(name, *p, len) == 0) && ((*p)[len] == '=')) { return *p+len+1; } @@ -1814,7 +1829,7 @@ _FCGX_FreeStream(streamPtr, TRUE); } -void _FCGX_FreeStream(FCGX_Stream **streamPtr, BOOL freeData) +void _FCGX_FreeStream(FCGX_Stream **streamPtr, int freeData) { FCGX_Stream *stream = *streamPtr; FCGX_Stream_Data *data; @@ -2027,6 +2042,7 @@ _FCGX_FreeStream(&request->out, FALSE); _FCGX_FreeStream(&request->err, FALSE); FreeParams(&request->paramsPtr); + request->envp = NULL; if (close) { OS_IpcClose(request->ipcFd); Index: php4/sapi/cgi/libfcgi/os_unix.c diff -u php4/sapi/cgi/libfcgi/os_unix.c:1.2 php4/sapi/cgi/libfcgi/os_unix.c:1.2.2.1 --- php4/sapi/cgi/libfcgi/os_unix.c:1.2 Sun Oct 13 04:34:27 2002 +++ php4/sapi/cgi/libfcgi/os_unix.c Sun Dec 1 18:11:14 2002 @@ -17,7 +17,7 @@ */ #ifndef lint -static const char rcsid[] = "$Id: os_unix.c,v 1.2 2002/10/13 08:34:27 shane Exp $"; +static const char rcsid[] = "$Id: os_unix.c,v 1.2.2.1 2002/12/01 23:11:14 shane Exp +$"; #endif /* not lint */ #include "fcgi_config.h" @@ -498,7 +498,7 @@ * *---------------------------------------------------------------------- */ -int OS_SpawnChild(char *appPath, int listenFd, PROCESS_INFORMATION *pInfo, char *env) +int OS_SpawnChild(char *appPath, int listenFd) { int forkResult; Index: php4/sapi/cgi/libfcgi/include/fcgi_config.h diff -u php4/sapi/cgi/libfcgi/include/fcgi_config.h:1.1 php4/sapi/cgi/libfcgi/include/fcgi_config.h:1.1.4.1 --- php4/sapi/cgi/libfcgi/include/fcgi_config.h:1.1 Sun Mar 10 16:39:28 2002 +++ php4/sapi/cgi/libfcgi/include/fcgi_config.h Sun Dec 1 18:11:15 2002 @@ -1,111 +1,7 @@ -/* fcgi_config.h. Generated automatically by configure. */ -/* fcgi_config.h.in. Generated automatically from configure.in by autoheader. */ +/* hack workaround for libfcgi configure */ +#ifdef _WIN32 +#include "fcgi_config_win32.h" +#else +#include "main/php_config.h" +#endif -/* Define if you have the <arpa/inet.h> header file. */ -#define HAVE_ARPA_INET_H 1 - -/* Define if you have the <dlfcn.h> header file. */ -#define HAVE_DLFCN_H 1 - -/* Define if there's a fileno() prototype in stdio.h */ -#define HAVE_FILENO_PROTO 1 - -/* Define if the fpos_t typedef is in stdio.h */ -#define HAVE_FPOS 1 - -/* Define if you have the <inttypes.h> header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define if you have the `dnet_stub' library (-ldnet_stub). */ -/* #undef HAVE_LIBDNET_STUB */ - -/* Define if you have the `ieee' library (-lieee). */ -/* #undef HAVE_LIBIEEE */ - -/* Define if you have the `nsl' library (-lnsl). */ -#define HAVE_LIBNSL 1 - -/* Define if you have the pthread library */ -#define HAVE_LIBPTHREAD 1 - -/* Define if you have the `resolv' library (-lresolv). */ -#define HAVE_LIBRESOLV 1 - -/* Define if you have the `socket' library (-lsocket). */ -#define HAVE_LIBSOCKET 1 - -/* Define if you have the <limits.h> header file. */ -#define HAVE_LIMITS_H 1 - -/* Define if you have the <memory.h> header file. */ -#define HAVE_MEMORY_H 1 - -/* Define if you have the <netdb.h> header file. */ -/* #define HAVE_NETDB_H 1 */ - -/* Define if you have the <netinet/in.h> header file. */ -#define HAVE_NETINET_IN_H 1 - -/* Define if sockaddr_un in sys/un.h contains a sun_len component */ -/* #undef HAVE_SOCKADDR_UN_SUN_LEN */ - -/* Define if the socklen_t typedef is in sys/socket.h */ -/* #undef HAVE_SOCKLEN */ - -/* Define if you have the <stdint.h> header file. */ -/* #undef HAVE_STDINT_H */ - -/* Define if you have the <stdlib.h> header file. */ -#define HAVE_STDLIB_H 1 - -/* Define if you have the `strerror' function. */ -#define HAVE_STRERROR 1 - -/* Define if you have the <strings.h> header file. */ -#define HAVE_STRINGS_H 1 - -/* Define if you have the <string.h> header file. */ -#define HAVE_STRING_H 1 - -/* Define if you have the <sys/param.h> header file. */ -/* #define HAVE_SYS_PARAM_H 1 */ - -/* Define if you have the <sys/socket.h> header file. */ -/*#define HAVE_SYS_SOCKET_H 1*/ - -/* Define if you have the <sys/stat.h> header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define if you have the <sys/time.h> header file. */ -/*#define HAVE_SYS_TIME_H 1*/ - -/* Define if you have the <sys/types.h> header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define if you have the <unistd.h> header file. */ -/*#define HAVE_UNISTD_H 1*/ - -/* Define if va_arg(arg, long double) crashes the compiler */ -/* #undef HAVE_VA_ARG_LONG_DOUBLE_BUG */ - -/* Name of package */ -#define PACKAGE "fcgi" - -/* Define if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Define if cross-process locking is required by accept() */ -#define USE_LOCKING 1 - -/* Version number of package */ -#define VERSION "2.2.2" - -/* Define to empty if `const' does not conform to ANSI C. */ -/* #undef const */ - -/* Define as `__inline' if that's what the C compiler calls it, or to nothing - if it is not supported. */ -/* #undef inline */ - -/* Define to `int' if <sys/types.h> does not define. */ -#define ssize_t int \ No newline at end of file Index: php4/sapi/cgi/libfcgi/include/fcgiapp.h diff -u php4/sapi/cgi/libfcgi/include/fcgiapp.h:1.1 php4/sapi/cgi/libfcgi/include/fcgiapp.h:1.1.4.1 --- php4/sapi/cgi/libfcgi/include/fcgiapp.h:1.1 Sun Mar 10 16:39:28 2002 +++ php4/sapi/cgi/libfcgi/include/fcgiapp.h Sun Dec 1 18:11:15 2002 @@ -9,7 +9,7 @@ * 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.1 2002/03/10 21:39:28 shane Exp $ + * $Id: fcgiapp.h,v 1.1.4.1 2002/12/01 23:11:15 shane Exp $ */ #ifndef _FCGIAPP_H @@ -80,6 +80,19 @@ typedef char **FCGX_ParamArray; /* + * A vector of pointers representing the parameters received + * by a FastCGI application server, with the vector's length + * and last valid element so adding new parameters is efficient. + */ + +typedef struct Params { + FCGX_ParamArray vec; /* vector of strings */ + int length; /* number of string vec can hold */ + char **cur; /* current item in vec; *cur == NULL */ +} Params; +typedef Params *ParamsPtr; + +/* * FCGX_Request Flags * * Setting FCGI_FAIL_ACCEPT_ON_INTR prevents FCGX_Accept() from @@ -98,11 +111,11 @@ FCGX_Stream *in; FCGX_Stream *out; FCGX_Stream *err; - char **envp; + FCGX_ParamArray envp; /* Don't use anything below here */ - struct Params *paramsPtr; + ParamsPtr paramsPtr; int ipcFd; /* < 0 means no connection */ int isBeginProcessed; /* FCGI_BEGIN_REQUEST seen */ int keepConnection; /* don't close ipcFd at end of request */ @@ -351,7 +364,8 @@ *---------------------------------------------------------------------- */ DLLAPI char *FCGX_GetParam(const char *name, FCGX_ParamArray envp); - +DLLAPI void FCGX_PutEnv(FCGX_Request *request, char *nameValue); + /* *====================================================================== * Readers @@ -533,7 +547,7 @@ *---------------------------------------------------------------------- */ DLLAPI int FCGX_FFlush(FCGX_Stream *stream); - + /* *====================================================================== * Both Readers and Writers Index: php4/sapi/cgi/libfcgi/include/fcgios.h diff -u php4/sapi/cgi/libfcgi/include/fcgios.h:1.2 php4/sapi/cgi/libfcgi/include/fcgios.h:1.2.4.1 --- php4/sapi/cgi/libfcgi/include/fcgios.h:1.2 Sun Mar 17 23:48:34 2002 +++ php4/sapi/cgi/libfcgi/include/fcgios.h Sun Dec 1 18:11:15 2002 @@ -108,7 +108,11 @@ 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); +#ifdef _WIN32 DLLAPI int OS_SpawnChild(char *execPath, int listenFd, PROCESS_INFORMATION *pInfo, char *env); +#else +DLLAPI int OS_SpawnChild(char *execPath, int listenfd); +#endif 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, Index: php4/sapi/cgi/libfcgi/acinclude.m4 +++ php4/sapi/cgi/libfcgi/acinclude.m4 Index: php4/sapi/cgi/libfcgi/libfcgi.m4 +++ php4/sapi/cgi/libfcgi/libfcgi.m4
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php