sterling                Fri Mar 28 23:52:46 2003 EDT

  Added files:                 
    /php4/sapi/apache   libphp5.module.in mod_php5.c mod_php5.exp 
                        mod_php5.h 

  Removed files:               
    /php4/sapi/apache   libphp4.module.in mod_php4.c mod_php4.exp 
                        mod_php4.h 

  Modified files:              
    /php4       Makefile.global acinclude.m4 configure.in 
    /php4/sapi/apache   apMakefile.tmpl config.m4 php.sym 
                        php_apache_http.h 
    /php4/sapi/apache2filter    config.m4 php.sym php_apache.h 
                                sapi_apache2.c 
    /php4/sapi/apache2handler   config.m4 php.sym php_apache.h 
                                sapi_apache2.c 
  Log:
  update php module name to php5, not php4.
  apache, apache2* and cli/cgi work. 
  sapi module maintainers should fix up their sapis, as I don't run 
  any servers with php outside of apache.
  
  
Index: php4/Makefile.global
diff -u php4/Makefile.global:1.43 php4/Makefile.global:1.44
--- php4/Makefile.global:1.43   Mon Feb 10 13:58:49 2003
+++ php4/Makefile.global        Fri Mar 28 23:52:46 2003
@@ -10,22 +10,22 @@
 
 build-modules: $(PHP_MODULES)
 
-libphp4.la: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
+libphp5.la: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
        $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir) 
$(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) 
$(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@
 
-libs/libphp4.bundle: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
-       $(CC) $(MH_BUNDLE_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) 
$(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS) 
$(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ && cp $@ libs/libphp4.so
+libs/libphp5.bundle: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
+       $(CC) $(MH_BUNDLE_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) 
$(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS) 
$(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ && cp $@ libs/libphp5.so
 
 install: $(install_targets)
 
-install-sapi: libphp4.la
+install-sapi: libphp5.la
        @echo "Installing PHP SAPI module"
-       [EMAIL PROTECTED](LIBTOOL) --silent --mode=install cp libphp4.la 
$(phptempdir)/libphp4.la >/dev/null 2>&1
+       [EMAIL PROTECTED](LIBTOOL) --silent --mode=install cp libphp5.la 
$(phptempdir)/libphp5.la >/dev/null 2>&1
        [EMAIL PROTECTED](mkinstalldirs) $(INSTALL_ROOT)$(bindir)
-       [EMAIL PROTECTED] test ! -r $(phptempdir)/libphp4.$(SHLIB_SUFFIX_NAME); then \
+       [EMAIL PROTECTED] test ! -r $(phptempdir)/libphp5.$(SHLIB_SUFFIX_NAME); then \
                for i in 0.0.0 0.0 0; do \
-                       if test -r $(phptempdir)/libphp4.$(SHLIB_SUFFIX_NAME).$$i; 
then \
-                               $(LN_S) $(phptempdir)/libphp4.$(SHLIB_SUFFIX_NAME).$$i 
$(phptempdir)/libphp4.$(SHLIB_SUFFIX_NAME); \
+                       if test -r $(phptempdir)/libphp5.$(SHLIB_SUFFIX_NAME).$$i; 
then \
+                               $(LN_S) $(phptempdir)/libphp5.$(SHLIB_SUFFIX_NAME).$$i 
$(phptempdir)/libphp5.$(SHLIB_SUFFIX_NAME); \
                                break; \
                        fi; \
                done; \
@@ -57,10 +57,10 @@
        find . -name \*.la -o -name \*.a | xargs rm -f 
        find . -name \*.so | xargs rm -f
        find . -name .libs -a -type d|xargs rm -rf
-       rm -f libphp4.la $(SAPI_CLI_PATH) $(OVERALL_TARGET) modules/* libs/*
+       rm -f libphp5.la $(SAPI_CLI_PATH) $(OVERALL_TARGET) modules/* libs/*
 
 distclean: clean
-       rm -f config.cache config.log config.status Makefile.objects 
Makefile.fragments libtool main/php_config.h stamp-h php4.spec 
sapi/apache/libphp4.module buildmk.stamp
+       rm -f config.cache config.log config.status Makefile.objects 
Makefile.fragments libtool main/php_config.h stamp-h php5.spec 
sapi/apache/libphp5.module buildmk.stamp
        egrep define'.*include/php' configure|sed 's/.*>//'|xargs rm -f
        find . -name Makefile | xargs rm -f
 
Index: php4/acinclude.m4
diff -u php4/acinclude.m4:1.233 php4/acinclude.m4:1.234
--- php4/acinclude.m4:1.233     Tue Mar 25 08:43:13 2003
+++ php4/acinclude.m4   Fri Mar 28 23:52:46 2003
@@ -1,4 +1,4 @@
-dnl $Id: acinclude.m4,v 1.233 2003/03/25 13:43:13 sniper Exp $
+dnl $Id: acinclude.m4,v 1.234 2003/03/29 04:52:46 sterling Exp $
 dnl
 dnl This file contains local autoconf functions.
 
@@ -781,7 +781,7 @@
 dnl
 AC_DEFUN([PHP_BUILD_SHARED],[
   PHP_BUILD_PROGRAM
-  OVERALL_TARGET=libphp4.la
+  OVERALL_TARGET=libphp5.la
   php_build_target=shared
   
   php_c_pre=$shared_c_pre
@@ -798,7 +798,7 @@
 dnl
 AC_DEFUN([PHP_BUILD_STATIC],[
   PHP_BUILD_PROGRAM
-  OVERALL_TARGET=libphp4.la
+  OVERALL_TARGET=libphp5.la
   php_build_target=static
 ])
 
@@ -807,7 +807,7 @@
 dnl
 AC_DEFUN([PHP_BUILD_BUNDLE],[
   PHP_BUILD_PROGRAM
-  OVERALL_TARGET=libs/libphp4.bundle
+  OVERALL_TARGET=libs/libphp5.bundle
   php_build_target=static
 ])
 
Index: php4/configure.in
diff -u php4/configure.in:1.434 php4/configure.in:1.435
--- php4/configure.in:1.434     Thu Mar 27 13:02:00 2003
+++ php4/configure.in   Fri Mar 28 23:52:46 2003
@@ -1,4 +1,4 @@
-dnl ## $Id: configure.in,v 1.434 2003/03/27 18:02:00 ddhill Exp $ -*- sh -*-
+dnl ## $Id: configure.in,v 1.435 2003/03/29 04:52:46 sterling Exp $ -*- sh -*-
 dnl ## Process this file with autoconf to produce a configure script.
 
 divert(1)
@@ -229,9 +229,9 @@
 dnl -------------------------------------------------------------------------
 
 dnl paths to the targets are relative to the build directory
-SAPI_SHARED=libs/libphp4.$SHLIB_SUFFIX_NAME
-SAPI_STATIC=libs/libphp4.a
-SAPI_LIBTOOL=libphp4.la
+SAPI_SHARED=libs/libphp5.$SHLIB_SUFFIX_NAME
+SAPI_STATIC=libs/libphp5.a
+SAPI_LIBTOOL=libphp5.la
 
 PHP_CONFIGURE_PART(Configuring SAPI modules)
 
Index: php4/sapi/apache/apMakefile.tmpl
diff -u php4/sapi/apache/apMakefile.tmpl:1.4 php4/sapi/apache/apMakefile.tmpl:1.5
--- php4/sapi/apache/apMakefile.tmpl:1.4        Mon Apr 22 22:58:54 2002
+++ php4/sapi/apache/apMakefile.tmpl    Fri Mar 28 23:52:46 2003
@@ -1,38 +1,38 @@
 ##
-##  Apache 1.3 Makefile template for PHP 4.0 Module
-##  [src/modules/php4/Makefile.tmpl]
+##  Apache 1.3 Makefile template for PHP 5.0 Module
+##  [src/modules/php5/Makefile.tmpl]
 ##
 
 #   the parametrized target
-LIB=libphp4.$(LIBEXT)
+LIB=libphp5.$(LIBEXT)
 
 #   objects for building the static library
-OBJS=mod_php4.o
-OBJS_LIB=libmodphp4.a
+OBJS=mod_php5.o
+OBJS_LIB=libmodphp5.a
 
 #   objects for building the shared object library
-SHLIB_OBJS=mod_php4.so-o
-SHLIB_OBJS_LIB=libmodphp4.a
+SHLIB_OBJS=mod_php5.so-o
+SHLIB_OBJS_LIB=libmodphp5.a
 
 #   the general targets
 all: lib
 lib: $(LIB)
 
 #   build the static library by merging the object files
-libphp4.a: $(OBJS) $(OBJS_LIB)
+libphp5.a: $(OBJS) $(OBJS_LIB)
        cp $(OBJS_LIB) $@
        ar r $@ $(OBJS)
        $(RANLIB) $@
 
 #   ugly hack to support older Apache-1.3 betas that don't set $LIBEXT
-libphp4.: $(OBJS) $(OBJS_LIB)
+libphp5.: $(OBJS) $(OBJS_LIB)
        cp $(OBJS_LIB) $@
        ar r $@ $(OBJS)
        $(RANLIB) $@
-       cp libphp4. libphp4.a
+       cp libphp5. libphp5.a
 
 #   build the shared object library by linking the object files
-libphp4.so: $(SHLIB_OBJS) $(SHLIB_OBJS_LIB)
+libphp5.so: $(SHLIB_OBJS) $(SHLIB_OBJS_LIB)
        rm -f $@
        $(LD_SHLIB) $(LDFLAGS_SHLIB) -o $@ $(SHLIB_OBJS) $(SHLIB_OBJS_LIB) $(LIBS) 
$(PHP_LIBS) 
 
@@ -69,9 +69,9 @@
 $(OBJS): Makefile
 
 # DO NOT REMOVE
-mod_php4.o: mod_php4.c $(INCDIR)/httpd.h $(INCDIR)/conf.h \
+mod_php5.o: mod_php5.c $(INCDIR)/httpd.h $(INCDIR)/conf.h \
  $(INCDIR)/buff.h \
  $(INCDIR)/http_config.h \
  $(INCDIR)/http_core.h $(INCDIR)/http_main.h \
  $(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
- $(INCDIR)/http_log.h $(INCDIR)/util_script.h mod_php4.h
+ $(INCDIR)/http_log.h $(INCDIR)/util_script.h mod_php5.h
Index: php4/sapi/apache/config.m4
diff -u php4/sapi/apache/config.m4:1.68 php4/sapi/apache/config.m4:1.69
--- php4/sapi/apache/config.m4:1.68     Mon Feb 24 11:16:11 2003
+++ php4/sapi/apache/config.m4  Fri Mar 28 23:52:46 2003
@@ -1,5 +1,5 @@
 dnl
-dnl $Id: config.m4,v 1.68 2003/02/24 16:16:11 sniper Exp $
+dnl $Id: config.m4,v 1.69 2003/03/29 04:52:46 sterling Exp $
 dnl
 
 AC_MSG_CHECKING(for Apache 1.x module support via DSO through APXS)
@@ -58,7 +58,7 @@
   *darwin*)
     MH_BUNDLE_FLAGS="-dynamic -twolevel_namespace -bundle -bundle_loader $APXS_HTTPD"
     PHP_SUBST(MH_BUNDLE_FLAGS)
-    SAPI_SHARED=libs/libphp4.so
+    SAPI_SHARED=libs/libphp5.so
     build_type=bundle
     ;;
   *)
@@ -66,26 +66,26 @@
     ;;
   esac
 
-  PHP_SELECT_SAPI(apache, $build_type, sapi_apache.c mod_php4.c php_apache.c, 
$APACHE_CPPFLAGS -I$APXS_INCLUDEDIR)
+  PHP_SELECT_SAPI(apache, $build_type, sapi_apache.c mod_php5.c php_apache.c, 
$APACHE_CPPFLAGS -I$APXS_INCLUDEDIR)
 
   # Test whether apxs support -S option
   $APXS -q -S CFLAGS="$APXS_CFLAGS" CFLAGS >/dev/null 2>&1
 
   if test "$?" != "0"; then
-    APACHE_INSTALL="$APXS -i -a -n php4 $SAPI_SHARED" # Old apxs does not have -S 
option
+    APACHE_INSTALL="$APXS -i -a -n php5 $SAPI_SHARED" # Old apxs does not have -S 
option
   else 
     APXS_LIBEXECDIR='$(INSTALL_ROOT)'`$APXS -q LIBEXECDIR`
     if test -z `$APXS -q SYSCONFDIR`; then
       APACHE_INSTALL="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
                        $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
-                             -i -n php4 $SAPI_SHARED"
+                             -i -n php5 $SAPI_SHARED"
     else
       APXS_SYSCONFDIR='$(INSTALL_ROOT)'`$APXS -q SYSCONFDIR`
       APACHE_INSTALL="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
                       \$(mkinstalldirs) '$APXS_SYSCONFDIR' && \
                        $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
                              -S SYSCONFDIR='$APXS_SYSCONFDIR' \
-                             -i -a -n php4 $SAPI_SHARED"
+                             -i -a -n php5 $SAPI_SHARED"
     fi
   fi
 
@@ -107,7 +107,7 @@
 [  --with-apache[=DIR]     Build Apache 1.x module. DIR is the top-level Apache
                           build directory, defaults to /usr/local/apache.],[
 
-  APACHE_INSTALL_FILES="\$(srcdir)/sapi/apache/mod_php4.* sapi/apache/libphp4.module"
+  APACHE_INSTALL_FILES="\$(srcdir)/sapi/apache/mod_php5.* sapi/apache/libphp5.module"
 
   if test "$withval" = "yes"; then
     # Apache's default directory
@@ -121,7 +121,7 @@
     if test -f $withval/src/httpd.h; then 
       APACHE_INCLUDE=-I$withval/src
       APACHE_TARGET=$withval/src
-      PHP_SELECT_SAPI(apache, static, sapi_apache.c mod_php4.c php_apache.c, 
$APACHE_INCLUDE)
+      PHP_SELECT_SAPI(apache, static, sapi_apache.c mod_php5.c php_apache.c, 
$APACHE_INCLUDE)
       APACHE_INSTALL="mkdir -p $APACHE_TARGET; cp $SAPI_STATIC $APACHE_INSTALL_FILES 
$APACHE_TARGET"
       PHP_LIBS="-L. -lphp3"
       AC_MSG_RESULT(yes - Apache 1.2.x)
@@ -137,13 +137,13 @@
     elif test -f $withval/src/main/httpd.h; then
       APACHE_HAS_REGEX=1
       APACHE_INCLUDE="-I$withval/src/main -I$withval/src/os/unix -I$withval/src/ap"
-      APACHE_TARGET=$withval/src/modules/php4
+      APACHE_TARGET=$withval/src/modules/php5
       if test ! -d $APACHE_TARGET; then
         mkdir $APACHE_TARGET
       fi
-      PHP_SELECT_SAPI(apache, static, sapi_apache.c mod_php4.c php_apache.c, 
$APACHE_INCLUDE)
-      APACHE_INSTALL="mkdir -p $APACHE_TARGET; cp $SAPI_STATIC 
$APACHE_TARGET/libmodphp4.a; cp $APACHE_INSTALL_FILES $APACHE_TARGET; cp 
$srcdir/sapi/apache/apMakefile.tmpl $APACHE_TARGET/Makefile.tmpl; cp 
$srcdir/sapi/apache/apMakefile.libdir $APACHE_TARGET/Makefile.libdir"
-      PHP_LIBS="-Lmodules/php4 -L../modules/php4 -L../../modules/php4 -lmodphp4"
+      PHP_SELECT_SAPI(apache, static, sapi_apache.c mod_php5.c php_apache.c, 
$APACHE_INCLUDE)
+      APACHE_INSTALL="mkdir -p $APACHE_TARGET; cp $SAPI_STATIC 
$APACHE_TARGET/libmodphp5.a; cp $APACHE_INSTALL_FILES $APACHE_TARGET; cp 
$srcdir/sapi/apache/apMakefile.tmpl $APACHE_TARGET/Makefile.tmpl; cp 
$srcdir/sapi/apache/apMakefile.libdir $APACHE_TARGET/Makefile.libdir"
+      PHP_LIBS="-Lmodules/php5 -L../modules/php5 -L../../modules/php5 -lmodphp5"
       AC_MSG_RESULT(yes - Apache 1.3.x)
       STRONGHOLD=
       if test -f $withval/src/include/ap_config.h; then
@@ -163,13 +163,13 @@
     elif test -f $withval/src/include/httpd.h; then
       APACHE_HAS_REGEX=1
       APACHE_INCLUDE="-I$withval/src/include -I$withval/src/os/unix"
-      APACHE_TARGET=$withval/src/modules/php4
+      APACHE_TARGET=$withval/src/modules/php5
       if test ! -d $APACHE_TARGET; then
         mkdir $APACHE_TARGET
       fi
-      PHP_SELECT_SAPI(apache, static, sapi_apache.c mod_php4.c php_apache.c, 
$APACHE_INCLUDE)
-      PHP_LIBS="-Lmodules/php4 -L../modules/php4 -L../../modules/php4 -lmodphp4"
-      APACHE_INSTALL="mkdir -p $APACHE_TARGET; cp $SAPI_STATIC 
$APACHE_TARGET/libmodphp4.a; cp $APACHE_INSTALL_FILES $APACHE_TARGET; cp 
$srcdir/sapi/apache/apMakefile.tmpl $APACHE_TARGET/Makefile.tmpl; cp 
$srcdir/sapi/apache/apMakefile.libdir $APACHE_TARGET/Makefile.libdir"
+      PHP_SELECT_SAPI(apache, static, sapi_apache.c mod_php5.c php_apache.c, 
$APACHE_INCLUDE)
+      PHP_LIBS="-Lmodules/php5 -L../modules/php5 -L../../modules/php5 -lmodphp5"
+      APACHE_INSTALL="mkdir -p $APACHE_TARGET; cp $SAPI_STATIC 
$APACHE_TARGET/libmodphp5.a; cp $APACHE_INSTALL_FILES $APACHE_TARGET; cp 
$srcdir/sapi/apache/apMakefile.tmpl $APACHE_TARGET/Makefile.tmpl; cp 
$srcdir/sapi/apache/apMakefile.libdir $APACHE_TARGET/Makefile.libdir"
       AC_MSG_RESULT(yes - Apache 1.3.x)
       STRONGHOLD=
       if test -f $withval/src/include/ap_config.h; then
@@ -189,9 +189,9 @@
     elif test -f $withval/apache/httpd.h; then
       APACHE_INCLUDE=-"I$withval/apache -I$withval/ssl/include"
       APACHE_TARGET=$withval/apache
-      PHP_SELECT_SAPI(apache, static, sapi_apache.c mod_php4.c php_apache.c, 
$APACHE_INCLUDE)
-      PHP_LIBS="-Lmodules/php4 -L../modules/php4 -L../../modules/php4 -lmodphp4"
-      APACHE_INSTALL="mkdir -p $APACHE_TARGET; cp $SAPI_STATIC 
$APACHE_TARGET/libmodphp4.a; cp $APACHE_INSTALL_FILES $APACHE_TARGET"
+      PHP_SELECT_SAPI(apache, static, sapi_apache.c mod_php5.c php_apache.c, 
$APACHE_INCLUDE)
+      PHP_LIBS="-Lmodules/php5 -L../modules/php5 -L../../modules/php5 -lmodphp5"
+      APACHE_INSTALL="mkdir -p $APACHE_TARGET; cp $SAPI_STATIC 
$APACHE_TARGET/libmodphp5.a; cp $APACHE_INSTALL_FILES $APACHE_TARGET"
       STRONGHOLD=-DSTRONGHOLD=1
       AC_MSG_RESULT(yes - StrongHold)
       if test -f $withval/apache/ap_config.h; then
@@ -221,7 +221,7 @@
 fi
 
 if test "x$APXS" != "x" -a "`uname -sv`" = "AIX 4" -a "$GCC" != "yes"; then
-  APXS_EXP=-bE:sapi/apache/mod_php4.exp
+  APXS_EXP=-bE:sapi/apache/mod_php5.exp
 fi
 
 PHP_SUBST(APXS_EXP)
@@ -256,7 +256,7 @@
 if test -n "$APACHE_MODULE"; then
   PHP_TARGET_RDYNAMIC
   $php_shtool mkdir -p sapi/apache
-  PHP_OUTPUT(sapi/apache/libphp4.module)
+  PHP_OUTPUT(sapi/apache/libphp5.module)
 fi
 
 if test -n "$APACHE_INSTALL"; then
Index: php4/sapi/apache/php.sym
diff -u php4/sapi/apache/php.sym:1.1 php4/sapi/apache/php.sym:1.2
--- php4/sapi/apache/php.sym:1.1        Sat Nov 20 14:00:16 1999
+++ php4/sapi/apache/php.sym    Fri Mar 28 23:52:46 2003
@@ -1 +1 @@
-php4_module
+php5_module
Index: php4/sapi/apache/php_apache_http.h
diff -u php4/sapi/apache/php_apache_http.h:1.7 php4/sapi/apache/php_apache_http.h:1.8
--- php4/sapi/apache/php_apache_http.h:1.7      Tue Mar 18 07:06:08 2003
+++ php4/sapi/apache/php_apache_http.h  Fri Mar 28 23:52:46 2003
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: php_apache_http.h,v 1.7 2003/03/18 12:06:08 ssb Exp $ */
+/* $Id: php_apache_http.h,v 1.8 2003/03/29 04:52:46 sterling Exp $ */
 
 #define NO_REGEX_EXTRA_H
 
@@ -63,4 +63,4 @@
 #include "php_ini.h"
 #include "ext/standard/php_standard.h"
 
-#include "mod_php4.h"
+#include "mod_php5.h"
Index: php4/sapi/apache2filter/config.m4
diff -u php4/sapi/apache2filter/config.m4:1.29 php4/sapi/apache2filter/config.m4:1.30
--- php4/sapi/apache2filter/config.m4:1.29      Sun Mar  9 22:14:36 2003
+++ php4/sapi/apache2filter/config.m4   Fri Mar 28 23:52:46 2003
@@ -1,5 +1,5 @@
 dnl
-dnl $Id: config.m4,v 1.29 2003/03/10 03:14:36 sniper Exp $
+dnl $Id: config.m4,v 1.30 2003/03/29 04:52:46 sterling Exp $
 dnl
 
 AC_MSG_CHECKING(for Apache 2.0 module support via DSO through APXS)
@@ -54,14 +54,14 @@
   if test -z `$APXS -q SYSCONFDIR`; then
     INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
                  $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
-                       -i -n php4"
+                       -i -n php5"
   else
     APXS_SYSCONFDIR='$(INSTALL_ROOT)'`$APXS -q SYSCONFDIR`
     INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
                 \$(mkinstalldirs) '$APXS_SYSCONFDIR' && \
                  $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
                        -S SYSCONFDIR='$APXS_SYSCONFDIR' \
-                       -i -a -n php4"
+                       -i -a -n php5"
   fi
 
   case $host_alias in
@@ -85,7 +85,7 @@
     MH_BUNDLE_FLAGS="-bundle -bundle_loader $APXS_HTTPD $MH_BUNDLE_FLAGS"
     PHP_SUBST(MH_BUNDLE_FLAGS)
     PHP_SELECT_SAPI(apache2filter, bundle, sapi_apache2.c apache_config.c 
php_functions.c)
-    SAPI_SHARED=libs/libphp4.so
+    SAPI_SHARED=libs/libphp5.so
     INSTALL_IT="$INSTALL_IT $SAPI_SHARED"
     ;;
   *beos*)
Index: php4/sapi/apache2filter/php.sym
diff -u php4/sapi/apache2filter/php.sym:1.1 php4/sapi/apache2filter/php.sym:1.2
--- php4/sapi/apache2filter/php.sym:1.1 Thu Oct 26 13:55:05 2000
+++ php4/sapi/apache2filter/php.sym     Fri Mar 28 23:52:46 2003
@@ -1 +1 @@
-php4_module
+php5_module
Index: php4/sapi/apache2filter/php_apache.h
diff -u php4/sapi/apache2filter/php_apache.h:1.20 
php4/sapi/apache2filter/php_apache.h:1.21
--- php4/sapi/apache2filter/php_apache.h:1.20   Fri Jan  3 10:59:02 2003
+++ php4/sapi/apache2filter/php_apache.h        Fri Mar 28 23:52:46 2003
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_apache.h,v 1.20 2003/01/03 15:59:02 hyanantha Exp $ */
+/* $Id: php_apache.h,v 1.21 2003/03/29 04:52:46 sterling Exp $ */
 
 #ifndef PHP_APACHE_H
 #define PHP_APACHE_H
@@ -26,7 +26,7 @@
 #include "http_core.h"
 
 /* Declare this so we can get to it from outside the sapi_apache2.c file */
-extern module AP_MODULE_DECLARE_DATA php4_module;
+extern module AP_MODULE_DECLARE_DATA php5_module;
 
 /* A way to specify the location of the php.ini dir in an apache directive */
 extern char *apache2_php_ini_path_override;
Index: php4/sapi/apache2filter/sapi_apache2.c
diff -u php4/sapi/apache2filter/sapi_apache2.c:1.106 
php4/sapi/apache2filter/sapi_apache2.c:1.107
--- php4/sapi/apache2filter/sapi_apache2.c:1.106        Wed Mar  5 11:12:23 2003
+++ php4/sapi/apache2filter/sapi_apache2.c      Fri Mar 28 23:52:46 2003
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: sapi_apache2.c,v 1.106 2003/03/05 16:12:23 sniper Exp $ */
+/* $Id: sapi_apache2.c,v 1.107 2003/03/29 04:52:46 sterling Exp $ */
 
 #include <fcntl.h>
 
@@ -421,7 +421,7 @@
 {
        php_struct *ctx;
        apr_bucket *b;
-       void *conf = ap_get_module_config(f->r->per_dir_config, &php4_module);
+       void *conf = ap_get_module_config(f->r->per_dir_config, &php5_module);
        char *p = get_php_config(conf, "engine", sizeof("engine"));
        TSRMLS_FETCH();
 
@@ -670,7 +670,7 @@
        ap_register_input_filter("PHP", php_input_filter, php_apache_disable_caching, 
AP_FTYPE_RESOURCE);
 }
 
-AP_MODULE_DECLARE_DATA module php4_module = {
+AP_MODULE_DECLARE_DATA module php5_module = {
        STANDARD20_MODULE_STUFF,
        create_php_config,              /* create per-directory config structure */
        merge_php_config,               /* merge per-directory config structures */
Index: php4/sapi/apache2handler/config.m4
diff -u php4/sapi/apache2handler/config.m4:1.3 php4/sapi/apache2handler/config.m4:1.4
--- php4/sapi/apache2handler/config.m4:1.3      Sun Mar  9 22:14:37 2003
+++ php4/sapi/apache2handler/config.m4  Fri Mar 28 23:52:46 2003
@@ -1,5 +1,5 @@
 dnl
-dnl $Id: config.m4,v 1.3 2003/03/10 03:14:37 sniper Exp $
+dnl $Id: config.m4,v 1.4 2003/03/29 04:52:46 sterling Exp $
 dnl
 
 AC_MSG_CHECKING(for Apache 2.0 handler-module support via DSO through APXS)
@@ -54,14 +54,14 @@
   if test -z `$APXS -q SYSCONFDIR`; then
     INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
                  $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
-                       -i -n php4"
+                       -i -n php5"
   else
     APXS_SYSCONFDIR='$(INSTALL_ROOT)'`$APXS -q SYSCONFDIR`
     INSTALL_IT="\$(mkinstalldirs) '$APXS_LIBEXECDIR' && \
                 \$(mkinstalldirs) '$APXS_SYSCONFDIR' && \
                  $APXS -S LIBEXECDIR='$APXS_LIBEXECDIR' \
                        -S SYSCONFDIR='$APXS_SYSCONFDIR' \
-                       -i -a -n php4"
+                       -i -a -n php5"
   fi
 
   case $host_alias in
@@ -85,7 +85,7 @@
     MH_BUNDLE_FLAGS="-bundle -bundle_loader $APXS_HTTPD $MH_BUNDLE_FLAGS"
     PHP_SUBST(MH_BUNDLE_FLAGS)
     PHP_SELECT_SAPI(apache2handler, bundle, sapi_apache2.c apache_config.c 
php_functions.c)
-    SAPI_SHARED=libs/libphp4.so
+    SAPI_SHARED=libs/libphp5.so
     INSTALL_IT="$INSTALL_IT $SAPI_SHARED"
     ;;
   *beos*)
Index: php4/sapi/apache2handler/php.sym
diff -u php4/sapi/apache2handler/php.sym:1.1 php4/sapi/apache2handler/php.sym:1.2
--- php4/sapi/apache2handler/php.sym:1.1        Tue Feb 11 12:40:11 2003
+++ php4/sapi/apache2handler/php.sym    Fri Mar 28 23:52:46 2003
@@ -1 +1 @@
-php4_module
+php5_module
Index: php4/sapi/apache2handler/php_apache.h
diff -u php4/sapi/apache2handler/php_apache.h:1.3 
php4/sapi/apache2handler/php_apache.h:1.4
--- php4/sapi/apache2handler/php_apache.h:1.3   Fri Mar  7 08:45:33 2003
+++ php4/sapi/apache2handler/php_apache.h       Fri Mar 28 23:52:46 2003
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_apache.h,v 1.3 2003/03/07 13:45:33 iliaa Exp $ */
+/* $Id: php_apache.h,v 1.4 2003/03/29 04:52:46 sterling Exp $ */
 
 #ifndef PHP_APACHE_H
 #define PHP_APACHE_H
@@ -26,7 +26,7 @@
 #include "http_core.h"
 
 /* Declare this so we can get to it from outside the sapi_apache2.c file */
-extern module AP_MODULE_DECLARE_DATA php4_module;
+extern module AP_MODULE_DECLARE_DATA php5_module;
 
 /* A way to specify the location of the php.ini dir in an apache directive */
 extern char *apache2_php_ini_path_override;
Index: php4/sapi/apache2handler/sapi_apache2.c
diff -u php4/sapi/apache2handler/sapi_apache2.c:1.12 
php4/sapi/apache2handler/sapi_apache2.c:1.13
--- php4/sapi/apache2handler/sapi_apache2.c:1.12        Thu Mar 27 08:16:18 2003
+++ php4/sapi/apache2handler/sapi_apache2.c     Fri Mar 28 23:52:46 2003
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: sapi_apache2.c,v 1.12 2003/03/27 13:16:18 sniper Exp $ */
+/* $Id: sapi_apache2.c,v 1.13 2003/03/29 04:52:46 sterling Exp $ */
 
 #include <fcntl.h>
 
@@ -449,7 +449,7 @@
        request_rec *parent_req = NULL;
        TSRMLS_FETCH();
 
-       conf = ap_get_module_config(r->per_dir_config, &php4_module);
+       conf = ap_get_module_config(r->per_dir_config, &php5_module);
        apply_config(conf);
 
        if (strcmp(r->handler, PHP_MAGIC_TYPE) && strcmp(r->handler, 
PHP_SOURCE_MAGIC_TYPE) && strcmp(r->handler, PHP_SCRIPT)) {
@@ -556,7 +556,7 @@
        ap_hook_handler(php_handler, NULL, NULL, APR_HOOK_MIDDLE);
 }
 
-AP_MODULE_DECLARE_DATA module php4_module = {
+AP_MODULE_DECLARE_DATA module php5_module = {
        STANDARD20_MODULE_STUFF,
        create_php_config,              /* create per-directory config structure */
        merge_php_config,               /* merge per-directory config structures */

Index: php4/sapi/apache/libphp5.module.in
+++ php4/sapi/apache/libphp5.module.in
Name: php5_module
ConfigStart
        RULE_WANTHSREGEX=no
        RULE_HIDE=yes
        PHP_LIBS="@NATIVE_RPATHS@ @PHP_LDFLAGS@ @PHP_LIBS@ @EXTRA_LDFLAGS@ 
@EXTRA_LIBS@ $LIBS"
        PHP_CFLAGS="$CFLAGS @OPENSSL_INCDIR_OPT@ [EMAIL PROTECTED]@/main [EMAIL 
PROTECTED]@/Zend [EMAIL PROTECTED]@/TSRM [EMAIL PROTECTED]@ [EMAIL 
PROTECTED]@/sapi/apache [EMAIL PROTECTED]@/main [EMAIL PROTECTED]@/Zend [EMAIL 
PROTECTED]@/TSRM"
        my_outfile="Makefile.config"
        echo "PHP_CFLAGS=$PHP_CFLAGS" >>$my_outfile
        echo "PHP_LIBS=$PHP_LIBS" >>$my_outfile
        LIBS=$PHP_LIBS
ConfigEnd

Index: php4/sapi/apache/mod_php5.c
+++ php4/sapi/apache/mod_php5.c
/*
   +----------------------------------------------------------------------+
   | PHP Version 4                                                        |
   +----------------------------------------------------------------------+
   | Copyright (c) 1997-2003 The PHP Group                                |
   +----------------------------------------------------------------------+
   | This source file is subject to version 2.02 of the PHP license,      |
   | that is bundled with this package in the file LICENSE, and is        |
   | available at through the world-wide-web at                           |
   | http://www.php.net/license/2_02.txt.                                 |
   | If you did not receive a copy of the PHP license and are unable to   |
   | obtain it through the world-wide-web, please send a note to          |
   | [EMAIL PROTECTED] so we can mail you a copy immediately.               |
   +----------------------------------------------------------------------+
   | Authors: Rasmus Lerdorf <[EMAIL PROTECTED]>                             |
   | (with helpful hints from Dean Gaudet <[EMAIL PROTECTED]>            |
   | PHP 4.0 patches by Zeev Suraski <[EMAIL PROTECTED]>                      |
   +----------------------------------------------------------------------+
 */
/* $Id: mod_php5.c,v 1.1 2003/03/29 04:52:46 sterling Exp $ */

#include "php_apache_http.h"
#include "http_conf_globals.h"

#ifdef NETWARE
#define SIGPIPE SIGINT
#endif

#if defined(ZEND_MULTIBYTE) && defined(HAVE_MBSTRING)
#include "ext/mbstring/mbstring.h"
#endif /* defined(ZEND_MULTIBYTE) && defined(HAVE_MBSTRING) */

#undef shutdown

/* {{{ Prototypes
 */
int apache_php_module_main(request_rec *r, int display_source_mode TSRMLS_DC);
static void php_save_umask(void);
static void php_restore_umask(void);
static int sapi_apache_read_post(char *buffer, uint count_bytes TSRMLS_DC);
static char *sapi_apache_read_cookies(TSRMLS_D);
static int sapi_apache_header_handler(sapi_header_struct *sapi_header, 
sapi_headers_struct *sapi_headers TSRMLS_DC);
static int sapi_apache_send_headers(sapi_headers_struct *sapi_headers TSRMLS_DC);
static int send_php(request_rec *r, int display_source_mode, char *filename);
static int send_parsed_php(request_rec * r);
static int send_parsed_php_source(request_rec * r);
static int php_xbithack_handler(request_rec * r);
static void php_init_handler(server_rec *s, pool *p);
/* }}} */

#if MODULE_MAGIC_NUMBER >= 19970728
static void php_child_exit_handler(server_rec *s, pool *p);
#endif

#if MODULE_MAGIC_NUMBER > 19961007
#define CONST_PREFIX const
#else
#define CONST_PREFIX
#endif
static CONST_PREFIX char *php_apache_value_handler_ex(cmd_parms *cmd, HashTable *conf, 
char *arg1, char *arg2, int mode);
static CONST_PREFIX char *php_apache_value_handler(cmd_parms *cmd, HashTable *conf, 
char *arg1, char *arg2);
static CONST_PREFIX char *php_apache_admin_value_handler(cmd_parms *cmd, HashTable 
*conf, char *arg1, char *arg2);
static CONST_PREFIX char *php_apache_flag_handler(cmd_parms *cmd, HashTable *conf, 
char *arg1, char *arg2);
static CONST_PREFIX char *php_apache_flag_handler_ex(cmd_parms *cmd, HashTable *conf, 
char *arg1, char *arg2, int mode);
static CONST_PREFIX char *php_apache_admin_flag_handler(cmd_parms *cmd, HashTable 
*conf, char *arg1, char *arg2);

/* ### these should be defined in mod_php5.h or somewhere else */
#define USE_PATH 1
#define IGNORE_URL 2

module MODULE_VAR_EXPORT php5_module;

int saved_umask;
static unsigned char apache_php_initialized;

typedef struct _php_per_dir_entry {
        char *key;
        char *value;
        uint key_length;
        uint value_length;
        int type;
} php_per_dir_entry;

/* some systems are missing these from their header files */

/* {{{ php_save_umask
 */
static void php_save_umask(void)
{
        saved_umask = umask(077);
        umask(saved_umask);
}
/* }}} */

/* {{{ sapi_apache_ub_write
 */
static int sapi_apache_ub_write(const char *str, uint str_length TSRMLS_DC)
{
        int ret=0;
                
        if (SG(server_context)) {
                ret = rwrite(str, str_length, (request_rec *) SG(server_context));
        }
        if (ret != str_length) {
                php_handle_aborted_connection();
        }
        return ret;
}
/* }}} */

/* {{{ sapi_apache_flush
 */
static void sapi_apache_flush(void *server_context)
{
        if (server_context) {
#if MODULE_MAGIC_NUMBER > 19970110
                rflush((request_rec *) server_context);
#else
                bflush((request_rec *) server_context->connection->client);
#endif
        }
}
/* }}} */

/* {{{ sapi_apache_read_post
 */
static int sapi_apache_read_post(char *buffer, uint count_bytes TSRMLS_DC)
{
        uint total_read_bytes=0, read_bytes;
        request_rec *r = (request_rec *) SG(server_context);
        void (*handler)(int);

        /*
         * This handles the situation where the browser sends a Expect: 100-continue 
header
         * and needs to recieve confirmation from the server on whether or not it can 
send
         * the rest of the request. RFC 2616
         *
         */
        if (!SG(read_post_bytes) && !ap_should_client_block(r)) {
                return total_read_bytes;
        }
 
        handler = signal(SIGPIPE, SIG_IGN);
        while (total_read_bytes<count_bytes) {
                hard_timeout("Read POST information", r); /* start timeout timer */
                read_bytes = get_client_block(r, buffer+total_read_bytes, 
count_bytes-total_read_bytes);
                reset_timeout(r);
                if (read_bytes<=0) {
                        break;
                }
                total_read_bytes += read_bytes;
        }
        signal(SIGPIPE, handler);       
        return total_read_bytes;
}
/* }}} */

/* {{{ sapi_apache_read_cookies
 */
static char *sapi_apache_read_cookies(TSRMLS_D)
{
        return (char *) table_get(((request_rec *) 
SG(server_context))->subprocess_env, "HTTP_COOKIE");
}
/* }}} */

/* {{{ sapi_apache_header_handler
 */
static int sapi_apache_header_handler(sapi_header_struct *sapi_header, 
sapi_headers_struct *sapi_headers TSRMLS_DC)
{
        char *header_name, *header_content, *p;
        request_rec *r = (request_rec *) SG(server_context);
        if(!r) {
                efree(sapi_header->header);
                return 0;
        }
      
        header_name = sapi_header->header;

        header_content = p = strchr(header_name, ':');
        if (!p) {
                efree(sapi_header->header);
                return 0;
        }

        *p = 0;
        do {
                header_content++;
        } while (*header_content==' ');

        if (!strcasecmp(header_name, "Content-Type")) {
                r->content_type = pstrdup(r->pool, header_content);
        } else if (!strcasecmp(header_name, "Set-Cookie")) {
                table_add(r->headers_out, header_name, header_content);
        } else if (sapi_header->replace) {
                table_set(r->headers_out, header_name, header_content);
        } else {
                table_add(r->headers_out, header_name, header_content);
        }

        *p = ':';  /* a well behaved header handler shouldn't change its original 
arguments */

        efree(sapi_header->header);
        
        return 0;  /* don't use the default SAPI mechanism, Apache duplicates this 
functionality */
}
/* }}} */

/* {{{ sapi_apache_send_headers
 */
static int sapi_apache_send_headers(sapi_headers_struct *sapi_headers TSRMLS_DC)
{
        if(SG(server_context) == NULL) { /* server_context is not here anymore */
                return SAPI_HEADER_SEND_FAILED;
        }

        ((request_rec *) SG(server_context))->status = 
SG(sapi_headers).http_response_code;
        send_http_header((request_rec *) SG(server_context));
        return SAPI_HEADER_SENT_SUCCESSFULLY;
}
/* }}} */

/* {{{ sapi_apache_register_server_variables
 */
static void sapi_apache_register_server_variables(zval *track_vars_array TSRMLS_DC)
{
        register int i;
        array_header *arr = table_elts(((request_rec *) 
SG(server_context))->subprocess_env);
        table_entry *elts = (table_entry *) arr->elts;
        zval **path_translated;
        HashTable *symbol_table;

        for (i = 0; i < arr->nelts; i++) {
                char *val;

                if (elts[i].val) {
                        val = elts[i].val;
                } else {
                        val = empty_string;
                }
                php_register_variable(elts[i].key, val, track_vars_array  TSRMLS_CC);
        }

        /* If PATH_TRANSLATED doesn't exist, copy it from SCRIPT_FILENAME */
        if (track_vars_array) {
                symbol_table = track_vars_array->value.ht;
        } else if (PG(register_globals)) {
                /* should never happen nowadays */
                symbol_table = EG(active_symbol_table);
        } else {
                symbol_table = NULL;
        }
        if (symbol_table
                && !zend_hash_exists(symbol_table, "PATH_TRANSLATED", 
sizeof("PATH_TRANSLATED"))
                && zend_hash_find(symbol_table, "SCRIPT_FILENAME", 
sizeof("SCRIPT_FILENAME"), (void **) &path_translated)==SUCCESS) {
                php_register_variable("PATH_TRANSLATED", Z_STRVAL_PP(path_translated), 
track_vars_array TSRMLS_CC);
        }

        php_register_variable("PHP_SELF", ((request_rec *) SG(server_context))->uri, 
track_vars_array TSRMLS_CC);
}
/* }}} */

/* {{{ php_apache_startup
 */
static int php_apache_startup(sapi_module_struct *sapi_module)
{
        if (php_module_startup(sapi_module, &apache_module_entry, 1) == FAILURE) {
                return FAILURE;
        } else {
                return SUCCESS;
        }
}
/* }}} */

/* {{{ php_apache_log_message
 */
static void php_apache_log_message(char *message)
{
        TSRMLS_FETCH();

        if (SG(server_context)) {
#if MODULE_MAGIC_NUMBER >= 19970831
                aplog_error(NULL, 0, APLOG_ERR | APLOG_NOERRNO, ((request_rec *) 
SG(server_context))->server, "%s", message);
#else
                log_error(message, ((request_rec *) SG(server_context))->server);
#endif
        } else {
                fprintf(stderr, "%s", message);
                fprintf(stderr, "\n");
        }
}
/* }}} */

/* {{{ php_apache_request_shutdown
 */
static void php_apache_request_shutdown(void *dummy)
{
        TSRMLS_FETCH();

        php_output_set_status(0 TSRMLS_CC);
        if (AP(in_request)) {
                AP(in_request) = 0;
                php_request_shutdown(dummy);
        }
        SG(server_context) = NULL; 
        /* 
        * The server context (request) is NOT invalid by the time 
        * run_cleanups() is called 
        */
}
/* }}} */

/* {{{ php_apache_sapi_activate
 */
static int php_apache_sapi_activate(TSRMLS_D)
{
        request_rec *r = (request_rec *) SG(server_context); 

        /*
         * For the Apache module version, this bit of code registers a cleanup
         * function that gets triggered when our request pool is destroyed.
         * We need this because at any point in our code we can be interrupted
         * and that may happen before we have had time to free our memory.
         * The php_request_shutdown function needs to free all outstanding allocated
         * memory.  
         */
        block_alarms();
        register_cleanup(r->pool, NULL, php_apache_request_shutdown, 
php_request_shutdown_for_exec);
        AP(in_request)=1;
        unblock_alarms();

        /* Override the default headers_only value - sometimes "GET" requests should 
actually only
         * send headers.
         */
        SG(request_info).headers_only = r->header_only;
        return SUCCESS;
}
/* }}} */

/* {{{ php_apache_get_stat
 */
static struct stat *php_apache_get_stat(TSRMLS_D)
{
        return &((request_rec *) SG(server_context))->finfo;
}
/* }}} */

/* {{{ php_apache_getenv
 */
static char *php_apache_getenv(char *name, size_t name_len TSRMLS_DC)
{
        return (char *) table_get(((request_rec *) 
SG(server_context))->subprocess_env, name);
}
/* }}} */

/* {{{ sapi_apache_get_fd
 */
static int sapi_apache_get_fd(int *nfd TSRMLS_DC)
{
#if PHP_APACHE_HAVE_CLIENT_FD
        request_rec *r = SG(server_context);
        int fd;

        fd = r->connection->client->fd;
        
        if (fd >= 0) {
                if (nfd) *nfd = fd;
                return SUCCESS;
        }
#endif
        return FAILURE;
}
/* }}} */

/* {{{ sapi_apache_force_http_10
 */
static int sapi_apache_force_http_10(TSRMLS_D)
{
        request_rec *r = SG(server_context);
        
        r->proto_num = HTTP_VERSION(1,0);
        
        return SUCCESS;
}

/* {{{ sapi_apache_get_target_uid
 */
static int sapi_apache_get_target_uid(uid_t *obj TSRMLS_DC)
{
        *obj = ap_user_id;
        return SUCCESS;
}

/* {{{ sapi_apache_get_target_gid
 */
static int sapi_apache_get_target_gid(gid_t *obj TSRMLS_DC)
{
        *obj = ap_group_id;
        return SUCCESS;
}

/* {{{ sapi_module_struct apache_sapi_module
 */
static sapi_module_struct apache_sapi_module = {
        "apache",                                               /* name */
        "Apache",                                               /* pretty name */
                                                                        
        php_apache_startup,                             /* startup */
        php_module_shutdown_wrapper,    /* shutdown */

        php_apache_sapi_activate,               /* activate */
        NULL,                                                   /* deactivate */

        sapi_apache_ub_write,                   /* unbuffered write */
        sapi_apache_flush,                              /* flush */
        php_apache_get_stat,                    /* get uid */
        php_apache_getenv,                              /* getenv */

        php_error,                                              /* error handler */

        sapi_apache_header_handler,             /* header handler */
        sapi_apache_send_headers,               /* send headers handler */
        NULL,                                                   /* send header handler 
*/

        sapi_apache_read_post,                  /* read POST data */
        sapi_apache_read_cookies,               /* read Cookies */

        sapi_apache_register_server_variables,          /* register server variables */
        php_apache_log_message,                 /* Log message */

        NULL,                                                   /* php.ini path 
override */

#ifdef PHP_WIN32
        NULL,
        NULL,
#else
        block_alarms,                                   /* Block interruptions */
        unblock_alarms,                                 /* Unblock interruptions */
#endif

        NULL,                                                   /* default post reader 
*/
        NULL,                                                   /* treat data */
        NULL,                                                   /* exe location */
        0,                                                              /* ini ignore 
*/
        sapi_apache_get_fd,
        sapi_apache_force_http_10,
        sapi_apache_get_target_uid,
        sapi_apache_get_target_gid
};
/* }}} */

/* {{{ php_restore_umask
 */
static void php_restore_umask(void)
{
        umask(saved_umask);
}
/* }}} */

/* {{{ init_request_info
 */
static void init_request_info(TSRMLS_D)
{
        request_rec *r = ((request_rec *) SG(server_context));
        char *content_length = (char *) table_get(r->subprocess_env, "CONTENT_LENGTH");
        const char *authorization=NULL;
        char *tmp;

        SG(request_info).query_string = r->args;
        SG(request_info).path_translated = r->filename;
        SG(request_info).request_uri = r->uri;
        SG(request_info).request_method = (char *)r->method;
        SG(request_info).content_type = (char *) table_get(r->subprocess_env, 
"CONTENT_TYPE");
        SG(request_info).content_length = (content_length ? atoi(content_length) : 0);
        SG(sapi_headers).http_response_code = r->status;

        if (r->headers_in) {
                authorization = table_get(r->headers_in, "Authorization");
        }
        if (authorization
                && (!PG(safe_mode) || (PG(safe_mode) && !auth_type(r)))
                && !strcasecmp(getword(r->pool, &authorization, ' '), "Basic")) {
                tmp = uudecode(r->pool, authorization);
                SG(request_info).auth_user = getword_nulls_nc(r->pool, &tmp, ':');
                if (SG(request_info).auth_user) {
                        r->connection->user = pstrdup(r->connection->pool, 
SG(request_info).auth_user);
                        r->connection->ap_auth_type = "Basic";
                        SG(request_info).auth_user = 
estrdup(SG(request_info).auth_user);
                }
                SG(request_info).auth_password = tmp;
                if (SG(request_info).auth_password) {
                        SG(request_info).auth_password = 
estrdup(SG(request_info).auth_password);
                }
        } else {
                SG(request_info).auth_user = NULL;
                SG(request_info).auth_password = NULL;
        }
}
/* }}} */

/* {{{ php_apache_alter_ini_entries
 */
static int php_apache_alter_ini_entries(php_per_dir_entry *per_dir_entry TSRMLS_DC)
{
        zend_alter_ini_entry(per_dir_entry->key, per_dir_entry->key_length+1, 
per_dir_entry->value, per_dir_entry->value_length, per_dir_entry->type, 
PHP_INI_STAGE_ACTIVATE);
        return 0;
}
/* }}} */

/* {{{ php_apache_get_default_mimetype
 */
static char *php_apache_get_default_mimetype(request_rec *r TSRMLS_DC)
{
        
        char *mimetype;
        if (SG(default_mimetype) || SG(default_charset)) {
                /* Assume output will be of the default MIME type.  Individual
                   scripts may change this later. */
                char *tmpmimetype;
                tmpmimetype = sapi_get_default_content_type(TSRMLS_C);
                mimetype = pstrdup(r->pool, tmpmimetype);
                efree(tmpmimetype);
        } else {
                mimetype = SAPI_DEFAULT_MIMETYPE "; charset=" SAPI_DEFAULT_CHARSET;
        }
        return mimetype;
}
/* }}} */

/* {{{ send_php
 */
static int send_php(request_rec *r, int display_source_mode, char *filename)
{
        int retval;
        HashTable *per_dir_conf;
        TSRMLS_FETCH();

        if (AP(in_request)) {
                zend_file_handle fh;

                fh.filename = r->filename;
                fh.opened_path = NULL;
                fh.free_filename = 0;
                fh.type = ZEND_HANDLE_FILENAME;

#if defined(ZEND_MULTIBYTE) && defined(HAVE_MBSTRING)
                php_mb_set_zend_encoding(TSRMLS_C);
#endif /* defined(ZEND_MULTIBYTE) && defined(HAVE_MBSTRING) */

                zend_execute_scripts(ZEND_INCLUDE TSRMLS_CC, NULL, 1, &fh);
                return OK;
        }

        zend_first_try {

                /* Make sure file exists */
                if (filename == NULL && r->finfo.st_mode == 0) {
                        return DECLINED;
                }

                per_dir_conf = (HashTable *) get_module_config(r->per_dir_config, 
&php5_module);
                if (per_dir_conf) {
                        zend_hash_apply((HashTable *) per_dir_conf, (apply_func_t) 
php_apache_alter_ini_entries TSRMLS_CC);
                }
                
                /* If PHP parser engine has been turned off with an "engine off"
                 * directive, then decline to handle this request
                 */
                if (!AP(engine)) {
                        r->content_type = php_apache_get_default_mimetype(r TSRMLS_CC);
                        r->allowed |= (1 << METHODS) - 1;
                        zend_try {
                                zend_ini_deactivate(TSRMLS_C);
                        } zend_end_try();
                        return DECLINED;
                }
                if (filename == NULL) {
                        filename = r->filename;
                }

                /* Apache 1.2 has a more complex mechanism for reading POST data */
#if MODULE_MAGIC_NUMBER > 19961007
                if ((retval = setup_client_block(r, REQUEST_CHUNKED_ERROR))) {
                        zend_try {
                                zend_ini_deactivate(TSRMLS_C);
                        } zend_end_try();
                        return retval;
                }
#endif

                if (AP(last_modified)) {
#if MODULE_MAGIC_NUMBER < 19970912
                        if ((retval = set_last_modified(r, r->finfo.st_mtime))) {
                                zend_try {
                                        zend_ini_deactivate(TSRMLS_C);
                                } zend_end_try();
                                return retval;
                        }
#else
                        update_mtime (r, r->finfo.st_mtime);
                        set_last_modified(r);
                        set_etag(r);
#endif
                }
                /* Assume output will be of the default MIME type.  Individual
                   scripts may change this later in the request. */
                r->content_type = php_apache_get_default_mimetype(r TSRMLS_CC);

                /* Init timeout */
                hard_timeout("send", r);

                SG(server_context) = r;
                
                php_save_umask();
                add_common_vars(r);
                add_cgi_vars(r);

                init_request_info(TSRMLS_C);
                apache_php_module_main(r, display_source_mode TSRMLS_CC);

                /* Done, restore umask, turn off timeout, close file and return */
                php_restore_umask();
                kill_timeout(r);
        } zend_end_try();

        return OK;
}
/* }}} */

/* {{{ send_parsed_php
 */
static int send_parsed_php(request_rec * r)
{
        int result = send_php(r, 0, NULL);

#if MEMORY_LIMIT
        {
                char *mem_usage;
                TSRMLS_FETCH();
 
                mem_usage = ap_psprintf(r->pool, "%u", AG(allocated_memory_peak));
                AG(allocated_memory_peak) = 0;
                ap_table_setn(r->notes, "mod_php_memory_usage", mem_usage);
        }
#endif

        return result;
}
/* }}} */

/* {{{ send_parsed_php_source
 */
static int send_parsed_php_source(request_rec * r)
{
        return send_php(r, 1, NULL);
}
/* }}} */

/* {{{ destroy_per_dir_entry
 */
static void destroy_per_dir_entry(php_per_dir_entry *per_dir_entry)
{
        free(per_dir_entry->key);
        free(per_dir_entry->value);
}
/* }}} */

/* {{{ copy_per_dir_entry
 */
static void copy_per_dir_entry(php_per_dir_entry *per_dir_entry)
{
        php_per_dir_entry tmp = *per_dir_entry;

        per_dir_entry->key = (char *) malloc(tmp.key_length+1);
        memcpy(per_dir_entry->key, tmp.key, tmp.key_length);
        per_dir_entry->key[per_dir_entry->key_length] = 0;

        per_dir_entry->value = (char *) malloc(tmp.value_length+1);
        memcpy(per_dir_entry->value, tmp.value, tmp.value_length);
        per_dir_entry->value[per_dir_entry->value_length] = 0;
}
/* }}} */

/* {{{ should_overwrite_per_dir_entry
 */
static zend_bool should_overwrite_per_dir_entry(HashTable *target_ht, 
php_per_dir_entry *orig_per_dir_entry, zend_hash_key *hash_key, void *pData)
{
        php_per_dir_entry *new_per_dir_entry;

        if (zend_hash_find(target_ht, hash_key->arKey, hash_key->nKeyLength, (void **) 
&new_per_dir_entry)==FAILURE) {
                return 1; /* does not exist in dest, copy from source */
        }

        if (new_per_dir_entry->type==PHP_INI_SYSTEM
                && orig_per_dir_entry->type!=PHP_INI_SYSTEM) {
                return 1;
        } else {
                return 0;
        }
}
/* }}} */

/* {{{ php_destroy_per_dir_info
 */
static void php_destroy_per_dir_info(HashTable *per_dir_info)
{
        zend_hash_destroy(per_dir_info);
        free(per_dir_info);
}
/* }}} */

/* {{{ php_create_dir
 */
static void *php_create_dir(pool *p, char *dummy)
{
        HashTable *per_dir_info;

        per_dir_info = (HashTable *) malloc(sizeof(HashTable));
        zend_hash_init_ex(per_dir_info, 5, NULL, (void (*)(void *)) 
destroy_per_dir_entry, 1, 0);
        register_cleanup(p, (void *) per_dir_info, (void (*)(void *)) 
php_destroy_per_dir_info, (void (*)(void *)) zend_hash_destroy);

        return per_dir_info;
}
/* }}} */

/* {{{ php_merge_dir
 */
static void *php_merge_dir(pool *p, void *basev, void *addv)
{
        /* This function *must* return addv, and not modify basev */
        zend_hash_merge_ex((HashTable *) addv, (HashTable *) basev, (copy_ctor_func_t) 
copy_per_dir_entry, sizeof(php_per_dir_entry), (merge_checker_func_t) 
should_overwrite_per_dir_entry, NULL);
        return addv;
}
/* }}} */

/* {{{ php_apache_value_handler_ex
 */
static CONST_PREFIX char *php_apache_value_handler_ex(cmd_parms *cmd, HashTable *conf, 
char *arg1, char *arg2, int mode)
{
        php_per_dir_entry per_dir_entry;

        if (!apache_php_initialized) {
                apache_php_initialized = 1;
#ifdef ZTS
                tsrm_startup(1, 1, 0, NULL);
#endif
                sapi_startup(&apache_sapi_module);
                php_apache_startup(&apache_sapi_module);
        }
        per_dir_entry.type = mode;

        if (strcasecmp(arg2, "none") == 0) {
                arg2 = "";
        }

        per_dir_entry.key_length = strlen(arg1);
        per_dir_entry.value_length = strlen(arg2);

        per_dir_entry.key = (char *) malloc(per_dir_entry.key_length+1);
        memcpy(per_dir_entry.key, arg1, per_dir_entry.key_length);
        per_dir_entry.key[per_dir_entry.key_length] = 0;

        per_dir_entry.value = (char *) malloc(per_dir_entry.value_length+1);
        memcpy(per_dir_entry.value, arg2, per_dir_entry.value_length);
        per_dir_entry.value[per_dir_entry.value_length] = 0;

        zend_hash_update(conf, per_dir_entry.key, per_dir_entry.key_length, 
&per_dir_entry, sizeof(php_per_dir_entry), NULL);
        return NULL;
}
/* }}} */

/* {{{ php_apache_value_handler
 */
static CONST_PREFIX char *php_apache_value_handler(cmd_parms *cmd, HashTable *conf, 
char *arg1, char *arg2)
{
        return php_apache_value_handler_ex(cmd, conf, arg1, arg2, PHP_INI_PERDIR);
}
/* }}} */

/* {{{ php_apache_admin_value_handler
 */
static CONST_PREFIX char *php_apache_admin_value_handler(cmd_parms *cmd, HashTable 
*conf, char *arg1, char *arg2)
{
        return php_apache_value_handler_ex(cmd, conf, arg1, arg2, PHP_INI_SYSTEM);
}
/* }}} */

/* {{{ php_apache_flag_handler_ex
 */
static CONST_PREFIX char *php_apache_flag_handler_ex(cmd_parms *cmd, HashTable *conf, 
char *arg1, char *arg2, int mode)
{
        char bool_val[2];

        if (!strcasecmp(arg2, "On") || (arg2[0] == '1' && arg2[1] == '\0')) {
                bool_val[0] = '1';
        } else {
                bool_val[0] = '0';
        }
        bool_val[1] = 0;
        
        return php_apache_value_handler_ex(cmd, conf, arg1, bool_val, mode);
}
/* }}} */

/* {{{ php_apache_flag_handler
 */
static CONST_PREFIX char *php_apache_flag_handler(cmd_parms *cmd, HashTable *conf, 
char *arg1, char *arg2)
{
        return php_apache_flag_handler_ex(cmd, conf, arg1, arg2, PHP_INI_PERDIR);
}
/* }}} */

/* {{{ php_apache_admin_flag_handler
 */
static CONST_PREFIX char *php_apache_admin_flag_handler(cmd_parms *cmd, HashTable 
*conf, char *arg1, char *arg2)
{
        return php_apache_flag_handler_ex(cmd, conf, arg1, arg2, PHP_INI_SYSTEM);
}
/* }}} */

/* {{{ int php_xbithack_handler(request_rec * r)
 */
static int php_xbithack_handler(request_rec * r)
{
        HashTable *per_dir_conf;
        TSRMLS_FETCH();

        if (!(r->finfo.st_mode & S_IXUSR)) {
                r->allowed |= (1 << METHODS) - 1;
                return DECLINED;
        }
        per_dir_conf = (HashTable *) get_module_config(r->per_dir_config, 
&php5_module);
        if (per_dir_conf) {
                zend_hash_apply((HashTable *) per_dir_conf, (apply_func_t) 
php_apache_alter_ini_entries TSRMLS_CC);
        }
        if(!AP(xbithack)) {
                r->allowed |= (1 << METHODS) - 1;
                return DECLINED;
        }
        return send_parsed_php(r);
}
/* }}} */

/* {{{ apache_php_module_shutdown_wrapper
 */
static void apache_php_module_shutdown_wrapper(void)
{
        apache_php_initialized = 0;
        apache_sapi_module.shutdown(&apache_sapi_module);

#if MODULE_MAGIC_NUMBER >= 19970728
        /* This function is only called on server exit if the apache API
         * child_exit handler exists, so shutdown globally 
         */
        sapi_shutdown();
#endif

#ifdef ZTS
        tsrm_shutdown();
#endif
}
/* }}} */

#if MODULE_MAGIC_NUMBER >= 19970728
/* {{{ php_child_exit_handler
 */
static void php_child_exit_handler(server_rec *s, pool *p)
{
/*      apache_php_initialized = 0; */
        apache_sapi_module.shutdown(&apache_sapi_module);

#ifdef ZTS
        tsrm_shutdown();
#endif
}
/* }}} */
#endif

/* {{{ void php_init_handler(server_rec *s, pool *p)
 */
static void php_init_handler(server_rec *s, pool *p)
{
        register_cleanup(p, NULL, (void (*)(void 
*))apache_php_module_shutdown_wrapper, (void (*)(void *))php_module_shutdown_for_exec);
        if (!apache_php_initialized) {
                apache_php_initialized = 1;
#ifdef ZTS
                tsrm_startup(1, 1, 0, NULL);
#endif
                sapi_startup(&apache_sapi_module);
                php_apache_startup(&apache_sapi_module);
        }
#if MODULE_MAGIC_NUMBER >= 19980527
        {
                TSRMLS_FETCH();
                if (PG(expose_php)) {
                        ap_add_version_component("PHP/" PHP_VERSION);
                }
        }
#endif
}
/* }}} */

/* {{{ handler_rec php_handlers[]
 */
handler_rec php_handlers[] =
{
        {"application/x-httpd-php", send_parsed_php},
        {"application/x-httpd-php-source", send_parsed_php_source},
        {"text/html", php_xbithack_handler},
        {NULL}
};
/* }}} */

/* {{{ command_rec php_commands[]
 */
command_rec php_commands[] =
{
        {"php_value",           php_apache_value_handler, NULL, OR_OPTIONS, TAKE2, 
"PHP Value Modifier"},
        {"php_flag",            php_apache_flag_handler, NULL, OR_OPTIONS, TAKE2, "PHP 
Flag Modifier"},
        {"php_admin_value",     php_apache_admin_value_handler, NULL, 
ACCESS_CONF|RSRC_CONF, TAKE2, "PHP Value Modifier (Admin)"},
        {"php_admin_flag",      php_apache_admin_flag_handler, NULL, 
ACCESS_CONF|RSRC_CONF, TAKE2, "PHP Flag Modifier (Admin)"},
        {NULL}
};
/* }}} */

/* {{{ odule MODULE_VAR_EXPORT php5_module
 */
module MODULE_VAR_EXPORT php5_module =
{
        STANDARD_MODULE_STUFF,
        php_init_handler,                       /* initializer */
        php_create_dir,                         /* per-directory config creator */
        php_merge_dir,                          /* dir merger */
        NULL,                                           /* per-server config creator */
        NULL,                                           /* merge server config */
        php_commands,                           /* command table */
        php_handlers,                           /* handlers */
        NULL,                                           /* filename translation */
        NULL,                                           /* check_user_id */
        NULL,                                           /* check auth */
        NULL,                                           /* check access */
        NULL,                                           /* type_checker */
        NULL,                                           /* fixups */
        NULL                                            /* logger */
#if MODULE_MAGIC_NUMBER >= 19970103
        , NULL                                          /* header parser */
#endif
#if MODULE_MAGIC_NUMBER >= 19970719
        , NULL                                  /* child_init */
#endif
#if MODULE_MAGIC_NUMBER >= 19970728
        , php_child_exit_handler                /* child_exit */
#endif
#if MODULE_MAGIC_NUMBER >= 19970902
        , NULL                                          /* post read-request */
#endif
};
/* }}} */

/*
 * Local variables:
 * tab-width: 4
 * c-basic-offset: 4
 * End:
 * vim600: sw=4 ts=4 fdm=marker
 * vim<600: sw=4 ts=4
 */

Index: php4/sapi/apache/mod_php5.exp
+++ php4/sapi/apache/mod_php5.exp
php5_module

Index: php4/sapi/apache/mod_php5.h
+++ php4/sapi/apache/mod_php5.h
/*
   +----------------------------------------------------------------------+
   | PHP Version 4                                                        |
   +----------------------------------------------------------------------+
   | Copyright (c) 1997-2003 The PHP Group                                |
   +----------------------------------------------------------------------+
   | This source file is subject to version 2.02 of the PHP license,      |
   | that is bundled with this package in the file LICENSE, and is        |
   | available at through the world-wide-web at                           |
   | http://www.php.net/license/2_02.txt.                                 |
   | If you did not receive a copy of the PHP license and are unable to   |
   | obtain it through the world-wide-web, please send a note to          |
   | [EMAIL PROTECTED] so we can mail you a copy immediately.               |
   +----------------------------------------------------------------------+
   | Author: Rasmus Lerdorf <[EMAIL PROTECTED]>                              |
   +----------------------------------------------------------------------+
 */
/* $Id: mod_php5.h,v 1.1 2003/03/29 04:52:46 sterling Exp $ */

#ifndef MOD_PHP5_H
#define MOD_PHP5_H

#if !defined(WIN32) && !defined(WINNT)
#ifndef MODULE_VAR_EXPORT
#define MODULE_VAR_EXPORT
#endif
#endif

typedef struct {
        long engine;
        long last_modified;
        long xbithack;
        long terminate_child;
        zend_bool in_request;
} php_apache_info_struct;

extern zend_module_entry apache_module_entry;

#ifdef ZTS
extern int php_apache_info_id;
#define AP(v) TSRMG(php_apache_info_id, php_apache_info_struct *, v)
#else
extern php_apache_info_struct php_apache_info;
#define AP(v) (php_apache_info.v)
#endif

#endif                                                  /* MOD_PHP5_H */

/*
 * Local variables:
 * tab-width: 4
 * c-basic-offset: 4
 * End:
 */

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to