diff -Nur thttpd-2.20b/Makefile.in thttpd-2.20b-php/Makefile.in --- thttpd-2.20b/Makefile.in Tue Jul 4 18:21:32 2000 +++ thttpd-2.20b-php/Makefile.in Mon Nov 13 14:25:48 2000 @@ -46,13 +46,15 @@ # You shouldn't need to edit anything below here. +include php_makefile + CC = @CC@ CCOPT = @V_CCOPT@ DEFS = @DEFS@ INCLS = -I. CFLAGS = $(CCOPT) $(DEFS) $(INCLS) -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ +LDFLAGS = @LDFLAGS@ $(PHP_LDFLAGS) +LIBS = @LIBS@ $(PHP_LIBS) NETLIBS = @V_NETLIBS@ INSTALL = @INSTALL@ @@ -62,7 +64,7 @@ @rm -f $@ $(CC) $(CFLAGS) -c $*.c -SRC = thttpd.c libhttpd.c fdwatch.c mmc.c timers.c match.c tdate_parse.c syslog.c +SRC = thttpd.c libhttpd.c fdwatch.c mmc.c timers.c match.c tdate_parse.c syslog.c php_thttpd.c OBJ = $(SRC:.c=.o) @LIBOBJS@ @@ -151,6 +153,9 @@ tags: ctags -wtd *.c *.h + +php_thttpd.o: php_thttpd.c + $(CC) $(PHP_CFLAGS) $(CFLAGS) -c php_thttpd.c tar: @name=`sed -n -e '/SERVER_SOFTWARE/!d' -e 's,.*thttpd/,thttpd-,' -e 's, .*,,p' version.h` ; \ diff -Nur thttpd-2.20b/libhttpd.c thttpd-2.20b-php/libhttpd.c --- thttpd-2.20b/libhttpd.c Wed Sep 27 20:13:24 2000 +++ thttpd-2.20b-php/libhttpd.c Mon Nov 13 14:25:57 2000 @@ -75,6 +75,8 @@ #include "match.h" #include "tdate_parse.h" +#include "php_thttpd.h" + #ifndef STDIN_FILENO #define STDIN_FILENO 0 #endif @@ -225,6 +227,8 @@ free( (void*) hs->cwd ); if ( hs->cgi_pattern != (char*) 0 ) free( (void*) hs->cgi_pattern ); + if ( hs->php_pattern != (char*) 0 ) + free( (void*) hs->php_pattern ); if ( hs->charset != (char*) 0 ) free( (void*) hs->charset ); if ( hs->url_pattern != (char*) 0 ) @@ -232,6 +236,7 @@ if ( hs->local_pattern != (char*) 0 ) free( (void*) hs->local_pattern ); free( (void*) hs ); + thttpd_php_shutdown(); } @@ -292,6 +297,7 @@ } hs->port = port; + hs->php_pattern = strdup("**.php"); if ( cgi_pattern == (char*) 0 ) hs->cgi_pattern = (char*) 0; else @@ -363,6 +369,8 @@ return (httpd_server*) 0; } + thttpd_php_init(); + /* Done initializing. */ if ( hs->binding_hostname == (char*) 0 ) syslog( LOG_INFO, "%s starting on port %d", SERVER_SOFTWARE, hs->port ); @@ -2167,7 +2175,9 @@ void httpd_close_conn( httpd_conn* hc, struct timeval* nowP ) { - if ( hc->file_address != (char*) 0 ) + if (hc->file_address == (char *) 1) { + thttpd_closed_conn(hc->conn_fd); + } else if ( hc->file_address != (char*) 0 ) { mmc_unmap( hc->file_address, nowP, &(hc->sb) ); hc->file_address = (char*) 0; @@ -3336,6 +3346,11 @@ ( hc->sb.st_mode & S_IXOTH ) && match( hc->hs->cgi_pattern, hc->expnfilename ) ) return cgi( hc ); + + if ( hc->hs->php_pattern != (char*) 0 && + match( hc->hs->php_pattern, hc->expnfilename)) { + return thttpd_php_request( hc ); + } /* It's not CGI. If it's executable or there's pathinfo, someone's ** trying to either serve or run a non-CGI file as CGI. Either case diff -Nur thttpd-2.20b/libhttpd.h thttpd-2.20b-php/libhttpd.h --- thttpd-2.20b/libhttpd.h Tue Jun 13 20:48:56 2000 +++ thttpd-2.20b-php/libhttpd.h Mon Nov 13 14:25:48 2000 @@ -69,6 +69,7 @@ char* server_hostname; int port; char* cgi_pattern; + char* php_pattern; char* charset; char* cwd; int listen4_fd, listen6_fd; diff -Nur thttpd-2.20b/thttpd.c thttpd-2.20b-php/thttpd.c --- thttpd-2.20b/thttpd.c Wed Sep 27 21:31:48 2000 +++ thttpd-2.20b-php/thttpd.c Mon Nov 13 14:25:57 2000 @@ -1332,6 +1333,12 @@ c->bytes_sent = hc->bytes; clear_connection( c, tvP ); return; + } + if (hc->file_address == (char *) 1) { + tmr_cancel( c->idle_read_timer ); + c->idle_read_timer = (Timer*) 0; + c->wouldblock_delay = 0; + return; } if ( c->bytes_sent >= c->bytes_to_send ) {