aboutsummaryrefslogtreecommitdiffstats
path: root/www
diff options
context:
space:
mode:
authornbm <nbm@FreeBSD.org>2000-07-20 19:55:59 +0800
committernbm <nbm@FreeBSD.org>2000-07-20 19:55:59 +0800
commitd883c7a9bae18f0f6aa35d1da135d71a561f12e1 (patch)
tree792bef77b332c5a87a2f547bc605509ae1a0994d /www
parentab5ed6f423da80fca2eac82e4b3ce014238e65bc (diff)
downloadfreebsd-ports-gnome-d883c7a9bae18f0f6aa35d1da135d71a561f12e1.tar.gz
freebsd-ports-gnome-d883c7a9bae18f0f6aa35d1da135d71a561f12e1.tar.zst
freebsd-ports-gnome-d883c7a9bae18f0f6aa35d1da135d71a561f12e1.zip
Add tclhttpd, a pure-Tcl implementation of a HTTP server.
PR: ports/19870 Submitted by: Mikhail Teterin <mi@privatelabs.com>
Diffstat (limited to 'www')
-rw-r--r--www/Makefile1
-rw-r--r--www/tclhttpd/Makefile60
-rw-r--r--www/tclhttpd/distinfo1
-rw-r--r--www/tclhttpd/files/patch-ab22
-rw-r--r--www/tclhttpd/files/patch-ac32
-rw-r--r--www/tclhttpd/files/patch-ad7
-rw-r--r--www/tclhttpd/files/patch-ae16
-rw-r--r--www/tclhttpd/files/patch-af5
-rw-r--r--www/tclhttpd/files/patch-ah26
-rw-r--r--www/tclhttpd/files/patch-pl52
-rw-r--r--www/tclhttpd/files/pkgIndex.tcl5
-rw-r--r--www/tclhttpd/files/tclhttpd.sh24
-rw-r--r--www/tclhttpd/pkg-comment1
-rw-r--r--www/tclhttpd/pkg-descr24
-rw-r--r--www/tclhttpd/pkg-plist216
-rw-r--r--www/tclhttpd/scripts/post-patch18
-rw-r--r--www/tclhttpd/scripts/pre-build18
17 files changed, 528 insertions, 0 deletions
diff --git a/www/Makefile b/www/Makefile
index 29b1ada5e9b2..9f535f8d6fdf 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -147,6 +147,7 @@
SUBDIR += squidtimes
SUBDIR += squirm
SUBDIR += swish-e
+ SUBDIR += tclhttpd
SUBDIR += thttpd
SUBDIR += tidy
SUBDIR += tinyproxy
diff --git a/www/tclhttpd/Makefile b/www/tclhttpd/Makefile
new file mode 100644
index 000000000000..7e755078f610
--- /dev/null
+++ b/www/tclhttpd/Makefile
@@ -0,0 +1,60 @@
+# New ports collection makefile for: thttpd
+# Date created: 27 Apr 2000
+# Whom: Mikhail Teterin <mi@aldan.algebra.com>
+#
+# $FreeBSD$
+#
+
+PORTNAME= tclhttpd
+PORTVERSION= 3.0.3
+CATEGORIES= www tcl${TCL_VER}
+MASTER_SITES= ${MASTER_SITE_TCLTK}
+MASTER_SITE_SUBDIR= httpd
+DISTNAME= ${PORTNAME}${PORTVERSION}
+
+MAINTAINER= mi@aldan.algebra.com
+
+RUN_DEPENDS= ${LOCALBASE}/lib/tcllib0.4/pkgIndex.tcl:${PORTSDIR}/devel/tcllib
+LIB_DEPENDS= tcl${TCL_VER}:${PORTSDIR}/lang/tcl${TCL_VER}
+
+TCL_DVER?= 8.3
+TCL_VER= ${TCL_DVER:S/.//}
+GNU_CONFIGURE= yes
+CONFIGURE_ARGS= --with-tcl="${LOCALBASE}/lib/tcl${TCL_DVER}" \
+ --with-tclinclude="${LOCALBASE}/include/tcl${TCL_DVER}"
+
+PLIST_SUB+= TCL_VER=${TCL_VER} PORTVERSION=${PORTVERSION} \
+ "LIBSUF=`echo ${PORTOBJFORMAT} | ${SED} -e s/elf/1/ -e s/aout/1.0/`"
+
+RCD= ${LOCALBASE}/etc/rc.d/tclhttpd.sh
+
+SCRIPTS_ENV+= LOCALBASE=${LOCALBASE} WRKSRC=${WRKSRC}} \
+ CFLAGS="${CFLAGS}" TCL_DVER=${TCL_DVER} \
+ TCL_VER=${TCL_VER}
+
+post-install:
+ test -e ${RCD} || ${SED} \
+ "s%COMMAND_LINE%${LOCALBASE}/bin/tclsh${TCL_DVER} ${PREFIX}/bin/httpd.tcl%" \
+ < ${FILESDIR}/tclhttpd.sh > ${RCD}
+ ${MKDIR} ${LOCALBASE}/${PORTNAME}${PORTVERSION}
+ ${CHOWN} -R nobody ${LOCALBASE}/share/${PORTNAME}${PORTVERSION}
+ #${LN} -sf ${LOCALBASE}/share/${PORTNAME}${PORTVERSION} \
+ # ${LOCALBASE}/${PORTNAME}${PORTVERSION}/htdocs
+ ${CHMOD} +x ${RCD}
+ ${INSTALL_DATA} ${WRKSRC}/src/libcrypt.so.* \
+ ${WRKSRC}/src/liblimit.so.* ${WRKSRC}/src/libsetuid.so.* \
+ ${LOCALBASE}/lib/${PORTNAME}${PORTVERSION}/
+ ${INSTALL_SCRIPT} ${WRKSRC}/bin/httpd.tcl \
+ ${WRKSRC}/bin/httpdthread.tcl ${LOCALBASE}/bin/
+ ${INSTALL_DATA} ${WRKSRC}/bin/tclhttpd.rc ${LOCALBASE}/etc/
+ ${CAT} ${FILESDIR}/pkgIndex.tcl >> \
+ ${LOCALBASE}/lib/${PORTNAME}${PORTVERSION}/pkgIndex.tcl
+ for f in ${LOCALBASE}/lib/${PORTNAME}${PORTVERSION}/lib*.so.* ; \
+ do \
+ ${LN} -sf `basename $$f` \
+ `echo $$f | ${SED} 's@\(.*\.so\)\..*@\1@'` ; \
+ done
+
+do-build: # empty -- everything done by ${SCRIPTDIR}/pre-build
+
+.include <bsd.port.mk>
diff --git a/www/tclhttpd/distinfo b/www/tclhttpd/distinfo
new file mode 100644
index 000000000000..e24f60253b62
--- /dev/null
+++ b/www/tclhttpd/distinfo
@@ -0,0 +1 @@
+MD5 (tclhttpd3.0.3.tar.gz) = d2b48707b786cf560c03740eb3557d50
diff --git a/www/tclhttpd/files/patch-ab b/www/tclhttpd/files/patch-ab
new file mode 100644
index 000000000000..b6c9a4fede83
--- /dev/null
+++ b/www/tclhttpd/files/patch-ab
@@ -0,0 +1,22 @@
+--- Makefile.in Wed Apr 26 16:35:29 2000
++++ Makefile.in Thu Apr 27 16:24:39 2000
+@@ -124,3 +124,3 @@
+ SERVER_ROOT = @SERVER_ROOT@
+-htdocsdir = $(SERVER_ROOT)/htdocs
++htdocsdir = $(prefix)/share/@PACKAGE@@VERSION@
+
+@@ -220,3 +220,3 @@
+
+-all: binaries libraries doc
++all: libraries doc
+
+@@ -236,3 +236,3 @@
+
+-install: all install-binaries install-libraries install-doc
++install: all install-libraries install-doc
+
+@@ -315,3 +315,3 @@
+ installdirs:
+- $(mkinstalldirs) $(pkglibdir) $(cryptlibdir) $(prefix)/bin $(htdocsdir)
++ $(mkinstalldirs) $(pkglibdir) $(prefix)/bin $(htdocsdir)
+
diff --git a/www/tclhttpd/files/patch-ac b/www/tclhttpd/files/patch-ac
new file mode 100644
index 000000000000..0304fe804064
--- /dev/null
+++ b/www/tclhttpd/files/patch-ac
@@ -0,0 +1,32 @@
+--- bin/httpd.tcl Wed Jun 14 13:25:50 2000
++++ bin/httpd.tcl Wed Jun 21 15:59:34 2000
+@@ -82,21 +82,9 @@
+
+ # Search around for the Standard Tcl Library
+
+-if {![catch {package require base64 2.0}]} {
+- # Already available in environment
+-} elseif {[file exist [file join $home ../tcllib]]} {
+- lappend auto_path [file join $home ../tcllib]
+-} else {
+- # Look for the CVS development sources
+- set cvs [lindex [lsort -decreasing \
+- [glob -nocomplain [file join $home ../../tcllib*]]] 0]
+- if {[file exist [file join $cvs modules]]} {
+- lappend auto_path [file join $cvs modules]
+- } elseif {[file exist [file join $cvs pkgIndex.tcl]]} {
+- lappend auto_path $cvs
+- } else {
+- error "Cannot find Standard Tcl Library in auto_path:\n[join $auto_path \n]"
+- }
++if {[catch {package require tcllib} e]} {
++ error "Cannot find Standard Tcl Library in auto_path:\n\
++ [join $auto_path \n($e)\n]"
+ }
+
+ set Config(home) $home
+@@ -130,3 +130,3 @@
+ } else {
+- set Config(config) [file join $Config(home) tclhttpd.rc]
++ set Config(config) [file join $Config(home) ../etc/tclhttpd.rc]
+ }
diff --git a/www/tclhttpd/files/patch-ad b/www/tclhttpd/files/patch-ad
new file mode 100644
index 000000000000..4ddfcb2b94f3
--- /dev/null
+++ b/www/tclhttpd/files/patch-ad
@@ -0,0 +1,7 @@
+--- configure Wed Apr 26 17:44:05 2000
++++ configure Thu Apr 27 18:44:11 2000
+@@ -1850,3 +1850,3 @@
+ MAKE_STATIC_LIB="\${STLIB_LD} \$@ \$(\$@_OBJECTS)"
+- MAKE_SHARED_LIB="\${SHLIB_LD} -o \$@ \$(\$@_OBJECTS) \${SHLIB_LDFLAGS} \${SHLIB_LD_LIBS}"
++ MAKE_SHARED_LIB="\${SHLIB_LD} -o \$@ \$> \${SHLIB_LDFLAGS} \${SHLIB_LD_LIBS}"
+ ;;
diff --git a/www/tclhttpd/files/patch-ae b/www/tclhttpd/files/patch-ae
new file mode 100644
index 000000000000..2cdf64b0ef7d
--- /dev/null
+++ b/www/tclhttpd/files/patch-ae
@@ -0,0 +1,16 @@
+--- bin/tclhttpd.rc Mon Apr 24 21:39:19 2000
++++ bin/tclhttpd.rc Fri Apr 28 19:23:21 2000
+@@ -24,2 +24,3 @@
+ foreach d [list \
++ [file join [Config home] ../share/tclhttpd3.0.3] \
+ [file join [Config home] ../htdocs] \
+@@ -36,3 +36,3 @@
+
+-Config uid 50
++Config uid 65534 ;# BSD's nobody
+
+@@ -45,3 +45,3 @@
+
+-Config gid 50
++Config gid 65534 ;# BSD's nobody group
+
diff --git a/www/tclhttpd/files/patch-af b/www/tclhttpd/files/patch-af
new file mode 100644
index 000000000000..74df2c3f7272
--- /dev/null
+++ b/www/tclhttpd/files/patch-af
@@ -0,0 +1,5 @@
+--- lib/log.tcl Mon Apr 3 20:00:28 2000
++++ lib/log.tcl Fri May 5 10:01:58 2000
+@@ -29,1 +29,1 @@
+- set Log(compressProg) /usr/local/bin/gzip
++ set Log(compressProg) /usr/bin/gzip
diff --git a/www/tclhttpd/files/patch-ah b/www/tclhttpd/files/patch-ah
new file mode 100644
index 000000000000..2c2d15c2cc56
--- /dev/null
+++ b/www/tclhttpd/files/patch-ah
@@ -0,0 +1,26 @@
+This is needed, because of the way tcllib's pkgIndex.tcl is laid
+out. The _children_ of the directory containing tcllib itself are
+not searched for packages the first time. So
+ ``package require <some sub package>''
+will fail the first time :(. This is, probably, a bug in tcllib,
+but this is a workaround.
++++ htdocs/cgi-bin/flip.cgi Fri May 5 11:34:19 2000
+@@ -5,4 +5,3 @@
+ if {[catch {
+- package require ncgi
+- package require html
++ package require tcllib
+
++++ htdocs/cgi-bin/redirect.cgi Fri May 5 11:34:31 2000
+@@ -5,3 +5,3 @@
+ if {[catch {
+- package require ncgi
++ package require tcllib
+
++++ htdocs/cgi-bin/test.cgi Fri May 5 11:34:47 2000
+@@ -5,4 +5,3 @@
+ if {[catch {
+- package require ncgi
+- package require html
++ package require tcllib
+
diff --git a/www/tclhttpd/files/patch-pl b/www/tclhttpd/files/patch-pl
new file mode 100644
index 000000000000..98437d8881ef
--- /dev/null
+++ b/www/tclhttpd/files/patch-pl
@@ -0,0 +1,52 @@
+This patch adds a way to add the functionality to the server by
+specifying extra files it should source on startup. Those files can
+define MIME type handlers, subtree handlers etc (see the server's
+documentation for what they can do -- very powerful stuff).
+
+According to the software's author, Brent Welch, there is currently no
+other way to extend the server -- other then adding code to the
+httpd.tcl (or other files) directly. The tclhttpd.rc file is executed by
+a safe interpreter and so can not load any other files itself.
+
++++ bin/httpd.tcl 2000/05/16 23:09:50
+@@ -152,4 +152,5 @@
+ [list threads.arg [cget threads] {Number of worker threads (zero for non-threaded)}] \
+ [list library.arg [cget library] {Directory list where custom packages and auto loads are}] \
++ [list extrafiles.arg [cget ExtraFiles] {Extra files to source}] \
+ [list debug.arg 0 {If true, start interactive command loop}] \
+ ] \
+@@ -228,7 +229,9 @@
+ }
+ }
+-if ![catch {
++if {[catch {
+ setuid $Config(uid) $Config(gid)
+-}] {
++} e]} {
++ Stderr "failed to suid to $Config(uid).$Config(gid): $e"
++} else {
+ Stderr "Running as user $Config(uid)"
+ }
+@@ -256,4 +259,6 @@
+ append error "\n$errorInfo"
+ error $error
++} else {
++ puts stderr "Sourced [file nativename $Config(main)] nicely"
+ }
+
++++ bin/httpdthread.tcl 2000/05/10 19:32:55
+@@ -142,2 +142,14 @@
+ }
+
++if {[info exists Config(extrafiles)]} {
++ puts stderr "Proceeding to source $Config(extrafiles)"
++ foreach f $Config(extrafiles) {
++ if {[catch "source $f" e]} {
++ puts stderr "Failed to source $f: $e"
++ } else {
++ puts stderr "Sourced $f ($e)."
++ }
++ }
++} else {
++ puts stderr "No extra files specified"
++}
diff --git a/www/tclhttpd/files/pkgIndex.tcl b/www/tclhttpd/files/pkgIndex.tcl
new file mode 100644
index 000000000000..40dbfd49fc20
--- /dev/null
+++ b/www/tclhttpd/files/pkgIndex.tcl
@@ -0,0 +1,5 @@
+# Tiny helper binaries for thc TclHttp-daemon providing the
+# functionality not available in the TCL itself:
+package ifneeded crypt 1.0 [list load [file join $dir libcrypt.so]]
+package ifneeded setuid 1.0 [list load [file join $dir libsetuid.so]]
+package ifneeded limit 1.0 [list load [file join $dir liblimit.so]]
diff --git a/www/tclhttpd/files/tclhttpd.sh b/www/tclhttpd/files/tclhttpd.sh
new file mode 100644
index 000000000000..bba81a73cb35
--- /dev/null
+++ b/www/tclhttpd/files/tclhttpd.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+PID_FILE=/var/run/tclhttpd.pid
+case $1 in
+ stop)
+ if [ -e $PID_FILE ] ; then
+ PID=`cat $PID_FILE`
+ if kill $PID ; then
+ exec rm -f $PID_FILE
+ fi
+ else
+ echo "No $PID_FILE presenet, tclhttpd is, probably, not running" > /dev/stderr
+ fi
+ ;;
+ ''|start)
+ COMMAND_LINE &
+ sleep 2
+ if kill -0 $! ; then
+ echo -n ' tclhttpd'
+ echo $! > $PID_FILE
+ else
+ exec logger -s "tclhttpd failed to start"
+ fi
+ ;;
+esac
diff --git a/www/tclhttpd/pkg-comment b/www/tclhttpd/pkg-comment
new file mode 100644
index 000000000000..e7c8d52ae9ba
--- /dev/null
+++ b/www/tclhttpd/pkg-comment
@@ -0,0 +1 @@
+An http-server implemented in TCL
diff --git a/www/tclhttpd/pkg-descr b/www/tclhttpd/pkg-descr
new file mode 100644
index 000000000000..9eeb02c5e8b8
--- /dev/null
+++ b/www/tclhttpd/pkg-descr
@@ -0,0 +1,24 @@
+This is a pure-Tcl implementation of an HTTP protocol server. It runs as
+a script on top of a vanilla Tcl interpreter using tcllib scripts and,
+optionally, two binary libraries (crypt and limit).
+
+The Tcl I/O system provides event-driven I/O facilities and a primitive
+that copies data from one I/O channel to another. The server does the
+HTTP protocol handling and then simply directs the I/O system to blast
+data from disk to a network socket. The server has suprisingly good
+performance because of Tcl's sophisticated I/O system.
+
+The HTTP protocol is perhaps the least interesting aspect of the server.
+The cool stuff is the framework for generating dynamic page content, and
+the support for embedding the server directly into legacy applications
+to "web-enable" them.
+
+A Tcl-based web server is ideal for embedding because Tcl was designed
+to support embedding into other applications. The interpreted nature of
+Tcl allows dynamic reconfiguration of the server. Once the core
+interface between the web server and the hosting application is defined,
+it is possible to manage the web server, upload Safe-Tcl control
+scripts, download logging information, and otherwise debug the Tcl part
+of the application without restarting the hosting application.
+
+WWW: http://dev.scriptics.com/software/tclhttpd/
diff --git a/www/tclhttpd/pkg-plist b/www/tclhttpd/pkg-plist
new file mode 100644
index 000000000000..731fca21106f
--- /dev/null
+++ b/www/tclhttpd/pkg-plist
@@ -0,0 +1,216 @@
+bin/httpd.tcl
+bin/httpdthread.tcl
+etc/tclhttpd.rc
+etc/rc.d/tclhttpd.sh
+lib/tclhttpd%%PORTVERSION%%/libsetuid.so.%%LIBSUF%%
+lib/tclhttpd%%PORTVERSION%%/libsetuid.so
+lib/tclhttpd%%PORTVERSION%%/liblimit.so.%%LIBSUF%%
+lib/tclhttpd%%PORTVERSION%%/liblimit.so
+lib/tclhttpd%%PORTVERSION%%/libcrypt.so.%%LIBSUF%%
+lib/tclhttpd%%PORTVERSION%%/libcrypt.so
+lib/tclhttpd%%PORTVERSION%%/admin.tcl
+lib/tclhttpd%%PORTVERSION%%/auth.tcl
+lib/tclhttpd%%PORTVERSION%%/cgi.tcl
+lib/tclhttpd%%PORTVERSION%%/config.tcl
+lib/tclhttpd%%PORTVERSION%%/counter.tcl
+lib/tclhttpd%%PORTVERSION%%/debug.tcl
+lib/tclhttpd%%PORTVERSION%%/demo.tcl
+lib/tclhttpd%%PORTVERSION%%/direct.tcl
+lib/tclhttpd%%PORTVERSION%%/dirlist.tcl
+lib/tclhttpd%%PORTVERSION%%/discover.tcl
+lib/tclhttpd%%PORTVERSION%%/doc.tcl
+lib/tclhttpd%%PORTVERSION%%/httpd.tcl
+lib/tclhttpd%%PORTVERSION%%/imagemap.tcl
+lib/tclhttpd%%PORTVERSION%%/include.tcl
+lib/tclhttpd%%PORTVERSION%%/log.tcl
+lib/tclhttpd%%PORTVERSION%%/mail.tcl
+lib/tclhttpd%%PORTVERSION%%/maptcl.tcl
+lib/tclhttpd%%PORTVERSION%%/maptk.tcl
+lib/tclhttpd%%PORTVERSION%%/mtype.tcl
+lib/tclhttpd%%PORTVERSION%%/open.tcl
+lib/tclhttpd%%PORTVERSION%%/pkgIndex.tcl
+lib/tclhttpd%%PORTVERSION%%/redirect.tcl
+lib/tclhttpd%%PORTVERSION%%/safecgio.tcl
+lib/tclhttpd%%PORTVERSION%%/session.tcl
+lib/tclhttpd%%PORTVERSION%%/sendsock.tcl
+lib/tclhttpd%%PORTVERSION%%/snmp.tcl
+lib/tclhttpd%%PORTVERSION%%/srvui.tcl
+lib/tclhttpd%%PORTVERSION%%/status.tcl
+lib/tclhttpd%%PORTVERSION%%/stdin.tcl
+lib/tclhttpd%%PORTVERSION%%/telnet.tcl
+lib/tclhttpd%%PORTVERSION%%/thread.tcl
+lib/tclhttpd%%PORTVERSION%%/url.tcl
+lib/tclhttpd%%PORTVERSION%%/utils.tcl
+lib/tclhttpd%%PORTVERSION%%/version.tcl
+lib/tclhttpd%%PORTVERSION%%/mime.types
+@dirrm lib/tclhttpd%%PORTVERSION%%
+share/tclhttpd%%PORTVERSION%%/empty.html
+share/tclhttpd%%PORTVERSION%%/error.html
+share/tclhttpd%%PORTVERSION%%/hacks.tml
+share/tclhttpd%%PORTVERSION%%/include.shtml
+share/tclhttpd%%PORTVERSION%%/index.tml
+share/tclhttpd%%PORTVERSION%%/license.terms
+share/tclhttpd%%PORTVERSION%%/notfound.html
+share/tclhttpd%%PORTVERSION%%/redirect
+share/tclhttpd%%PORTVERSION%%/register.tml
+share/tclhttpd%%PORTVERSION%%/test.tml
+share/tclhttpd%%PORTVERSION%%/access/README.txt
+share/tclhttpd%%PORTVERSION%%/access/auth/hello.txt
+share/tclhttpd%%PORTVERSION%%/access/auth/test.cgi
+share/tclhttpd%%PORTVERSION%%/access/auth/.htaccess
+share/tclhttpd%%PORTVERSION%%/access/bydir/README.txt
+share/tclhttpd%%PORTVERSION%%/access/bydir/user.cgi
+share/tclhttpd%%PORTVERSION%%/access/bydir/.htaccess
+share/tclhttpd%%PORTVERSION%%/access/bytcl/index.tml
+share/tclhttpd%%PORTVERSION%%/access/bytcl/.tclaccess
+share/tclhttpd%%PORTVERSION%%/access/noawe/.htaccess
+share/tclhttpd%%PORTVERSION%%/access/null/index.tml
+share/tclhttpd%%PORTVERSION%%/access/null/.tclaccess
+share/tclhttpd%%PORTVERSION%%/access/session/page.auth
+share/tclhttpd%%PORTVERSION%%/access/session/.tclaccess
+share/tclhttpd%%PORTVERSION%%/access/.htaccess
+share/tclhttpd%%PORTVERSION%%/book/TCLHTTPD-1.gif
+share/tclhttpd%%PORTVERSION%%/book/TCLHTTPD-2.gif
+share/tclhttpd%%PORTVERSION%%/book/TCLHTTPD.css
+share/tclhttpd%%PORTVERSION%%/book/TCLHTTPD.html
+share/tclhttpd%%PORTVERSION%%/cgi-bin/big.cgi
+share/tclhttpd%%PORTVERSION%%/cgi-bin/cgilib.tcl
+share/tclhttpd%%PORTVERSION%%/cgi-bin/cwd.cgi
+share/tclhttpd%%PORTVERSION%%/cgi-bin/debugee.cgi
+share/tclhttpd%%PORTVERSION%%/cgi-bin/env
+share/tclhttpd%%PORTVERSION%%/cgi-bin/env.cgi
+share/tclhttpd%%PORTVERSION%%/cgi-bin/err0.cgi
+share/tclhttpd%%PORTVERSION%%/cgi-bin/err1.cgi
+share/tclhttpd%%PORTVERSION%%/cgi-bin/err2.cgi
+share/tclhttpd%%PORTVERSION%%/cgi-bin/flip.cgi
+share/tclhttpd%%PORTVERSION%%/cgi-bin/hello.cgi
+share/tclhttpd%%PORTVERSION%%/cgi-bin/junk
+share/tclhttpd%%PORTVERSION%%/cgi-bin/junk.exe
+share/tclhttpd%%PORTVERSION%%/cgi-bin/prodebug.tcl
+share/tclhttpd%%PORTVERSION%%/cgi-bin/redirect.cgi
+share/tclhttpd%%PORTVERSION%%/cgi-bin/sleep.cgi
+share/tclhttpd%%PORTVERSION%%/cgi-bin/tclIndex
+share/tclhttpd%%PORTVERSION%%/cgi-bin/test.cgi
+share/tclhttpd%%PORTVERSION%%/cgi-bin/testupload.cgi
+share/tclhttpd%%PORTVERSION%%/cgi-bin/user.cgi
+share/tclhttpd%%PORTVERSION%%/forms/file.tml
+share/tclhttpd%%PORTVERSION%%/forms/form1.tml
+share/tclhttpd%%PORTVERSION%%/forms/headers.tml
+share/tclhttpd%%PORTVERSION%%/forms/headerspost.tml
+share/tclhttpd%%PORTVERSION%%/forms/index.tml
+share/tclhttpd%%PORTVERSION%%/forms/ncgiredirect.cgi
+share/tclhttpd%%PORTVERSION%%/forms/redirect.tml
+share/tclhttpd%%PORTVERSION%%/forms/redirect2.tml
+share/tclhttpd%%PORTVERSION%%/forms/multi.tml
+share/tclhttpd%%PORTVERSION%%/forms/posttest.tml
+share/tclhttpd%%PORTVERSION%%/forms/testupload.tml
+share/tclhttpd%%PORTVERSION%%/forms/.tml
+share/tclhttpd%%PORTVERSION%%/guestbook/guestbook.cgi
+share/tclhttpd%%PORTVERSION%%/guestbook/newguest.cgi
+share/tclhttpd%%PORTVERSION%%/guestbook/newguest.html
+share/tclhttpd%%PORTVERSION%%/images/Blue.gif
+share/tclhttpd%%PORTVERSION%%/images/Red.gif
+share/tclhttpd%%PORTVERSION%%/images/ScripticsLogo1.gif
+share/tclhttpd%%PORTVERSION%%/images/Space.gif
+share/tclhttpd%%PORTVERSION%%/images/TclPro200.gif
+share/tclhttpd%%PORTVERSION%%/images/lake.gif
+share/tclhttpd%%PORTVERSION%%/images/lake.map
+share/tclhttpd%%PORTVERSION%%/images/logo125.gif
+share/tclhttpd%%PORTVERSION%%/images/ppt1.gif
+share/tclhttpd%%PORTVERSION%%/images/ppt2.gif
+share/tclhttpd%%PORTVERSION%%/images/ppt3.gif
+share/tclhttpd%%PORTVERSION%%/images/ppt4.gif
+share/tclhttpd%%PORTVERSION%%/images/ppt5.gif
+share/tclhttpd%%PORTVERSION%%/images/pwrdLogo100.gif
+share/tclhttpd%%PORTVERSION%%/images/pwrdLogo150.gif
+share/tclhttpd%%PORTVERSION%%/images/pwrdLogo175.gif
+share/tclhttpd%%PORTVERSION%%/images/pwrdLogo200.gif
+share/tclhttpd%%PORTVERSION%%/images/pwrdLogo75.gif
+share/tclhttpd%%PORTVERSION%%/images/setup.gif
+share/tclhttpd%%PORTVERSION%%/images/tcl89.gif
+share/tclhttpd%%PORTVERSION%%/images/tclp.gif
+share/tclhttpd%%PORTVERSION%%/include/footer.html
+share/tclhttpd%%PORTVERSION%%/java/Auth.class
+share/tclhttpd%%PORTVERSION%%/java/Getpass.class
+share/tclhttpd%%PORTVERSION%%/java/Helper.class
+share/tclhttpd%%PORTVERSION%%/java/MD5.class
+share/tclhttpd%%PORTVERSION%%/java/README
+share/tclhttpd%%PORTVERSION%%/java/ServerDemo.class
+share/tclhttpd%%PORTVERSION%%/java/ServerDemo.html
+share/tclhttpd%%PORTVERSION%%/java/auth.js
+share/tclhttpd%%PORTVERSION%%/java/test.html
+share/tclhttpd%%PORTVERSION%%/libtml/Index
+share/tclhttpd%%PORTVERSION%%/libtml/faq.tcl
+share/tclhttpd%%PORTVERSION%%/libtml/htmlutils.tcl
+share/tclhttpd%%PORTVERSION%%/libtml/mypage.tcl
+share/tclhttpd%%PORTVERSION%%/libtml/pkgIndex.tcl
+share/tclhttpd%%PORTVERSION%%/libtml/ss_survey.tcl
+share/tclhttpd%%PORTVERSION%%/libtml/sunscript.tcl
+share/tclhttpd%%PORTVERSION%%/manual/htdig.html
+share/tclhttpd%%PORTVERSION%%/manual/reference.tml
+share/tclhttpd%%PORTVERSION%%/manual/stdin.html
+share/tclhttpd%%PORTVERSION%%/manual/technotes.tml
+share/tclhttpd%%PORTVERSION%%/map/bush.tml
+share/tclhttpd%%PORTVERSION%%/map/index.tml
+share/tclhttpd%%PORTVERSION%%/map/mapdefault.tml
+share/tclhttpd%%PORTVERSION%%/map/surfer.tml
+share/tclhttpd%%PORTVERSION%%/snmp/allport.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/discover.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/host.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/index.html
+share/tclhttpd%%PORTVERSION%%/snmp/outdiscov.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/portdetail.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/repeat.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/system.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/telnet.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/telnet_pass.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/browser/README
+share/tclhttpd%%PORTVERSION%%/snmp/browser/browser.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/browser/browser2.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/browser/control.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/browser/end.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/browser/start.html
+share/tclhttpd%%PORTVERSION%%/snmp/browser/table.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/browser/title.html
+share/tclhttpd%%PORTVERSION%%/snmp/browser/title.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/browser/walk.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/browser/walker.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/test_mibTable/README
+share/tclhttpd%%PORTVERSION%%/snmp/test_mibTable/index.html
+share/tclhttpd%%PORTVERSION%%/snmp/test_mibTable/table1.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/test_mibTable/table2.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/test_mibTable/table3.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/test_mibTable/table4.snmp
+share/tclhttpd%%PORTVERSION%%/snmp/test_mibTable/test2.snmp
+share/tclhttpd%%PORTVERSION%%/stats/doc.tml
+share/tclhttpd%%PORTVERSION%%/stats/index.tml
+share/tclhttpd%%PORTVERSION%%/stats/notfound.tml
+share/tclhttpd%%PORTVERSION%%/stats/.tml
+share/tclhttpd%%PORTVERSION%%/templates/form.tml
+share/tclhttpd%%PORTVERSION%%/templates/index.tml
+share/tclhttpd%%PORTVERSION%%/templates/simple.subst
+share/tclhttpd%%PORTVERSION%%/templates/.tml
+share/tclhttpd%%PORTVERSION%%/.tml
+@dirrm share/tclhttpd%%PORTVERSION%%/access/auth
+@dirrm share/tclhttpd%%PORTVERSION%%/access/bydir
+@dirrm share/tclhttpd%%PORTVERSION%%/access/bytcl
+@dirrm share/tclhttpd%%PORTVERSION%%/access/noawe
+@dirrm share/tclhttpd%%PORTVERSION%%/access/null
+@dirrm share/tclhttpd%%PORTVERSION%%/access/session
+@dirrm share/tclhttpd%%PORTVERSION%%/access
+@dirrm share/tclhttpd%%PORTVERSION%%/book
+@dirrm share/tclhttpd%%PORTVERSION%%/cgi-bin
+@dirrm share/tclhttpd%%PORTVERSION%%/forms
+@dirrm share/tclhttpd%%PORTVERSION%%/guestbook
+@dirrm share/tclhttpd%%PORTVERSION%%/images
+@dirrm share/tclhttpd%%PORTVERSION%%/include
+@dirrm share/tclhttpd%%PORTVERSION%%/java
+@dirrm share/tclhttpd%%PORTVERSION%%/libtml
+@dirrm share/tclhttpd%%PORTVERSION%%/manual
+@dirrm share/tclhttpd%%PORTVERSION%%/map
+@dirrm share/tclhttpd%%PORTVERSION%%/snmp/browser
+@dirrm share/tclhttpd%%PORTVERSION%%/snmp/test_mibTable
+@dirrm share/tclhttpd%%PORTVERSION%%/snmp
+@dirrm share/tclhttpd%%PORTVERSION%%/stats
+@dirrm share/tclhttpd%%PORTVERSION%%/templates
+@dirrm share/tclhttpd%%PORTVERSION%%
diff --git a/www/tclhttpd/scripts/post-patch b/www/tclhttpd/scripts/post-patch
new file mode 100644
index 000000000000..26de6121b1fd
--- /dev/null
+++ b/www/tclhttpd/scripts/post-patch
@@ -0,0 +1,18 @@
+if [ ${LOCALBASE} != /usr/local ] ; then
+ for f in `find ${WRKSRC} -type f | xargs grep -l /usr/local`
+ do
+ cp -p $f $f.ul && \
+ sed "s%/usr/local%${LOCALBASE}%g" < $f.ul > $f \
+ && rm -f $f.ul
+ done
+fi
+for f in `find ${WRKSRC} -type f | \
+ xargs grep -l '^exec tclsh.* '`
+do
+ patch --quiet $f << EOP
+@@ -1,1 +1,2 @@
+-#!/bin/sh
++#!${LOCALBASE}/bin/tclsh${TCL_DVER}
++# The ``exec tclsh<whatever>'' below will simply be ignored.
+EOP
+done
diff --git a/www/tclhttpd/scripts/pre-build b/www/tclhttpd/scripts/pre-build
new file mode 100644
index 000000000000..3885e7a6000c
--- /dev/null
+++ b/www/tclhttpd/scripts/pre-build
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+crypt_SRCS="crypt.c cryptLib.c"
+setuid_SRCS=setuid.c
+limit_SRCS=limit.c
+
+cd ${WRKSRC}/src
+
+for l in crypt setuid limit
+do
+ make INTERNALLIB=Y NOPROFILE=Y \
+ LIB=${l} SHLIB_MAJOR=1 SHLIB_MINOR=0 \
+ SRCS="`eval echo \\$${l}_SRCS`" -ECFLAGS \
+ CFLAGS="${CFLAGS} -I${PREFIX}/include/tcl${TCL_DVER} -DUSE_TCL_STUBS" \
+ LDADD="-L${PREFIX}/lib -ltclstub${TCL_VER} -lcrypt" \
+ -f bsd.lib.mk \
+ || exit 1
+done