summaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorBob Beck <beck@cvs.openbsd.org>1999-03-01 01:16:10 +0000
committerBob Beck <beck@cvs.openbsd.org>1999-03-01 01:16:10 +0000
commit5e9b927491680aa1d931a0fce0e01c7a47f0ffa0 (patch)
tree3ca193f25706d343bac409d079f2087aba175007 /usr.sbin
parent85ea6023f3b47eacbd1c0ffc7e1575df2745ee24 (diff)
import apache 1.3.26 + mod_ssl 2.8.10
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/httpd/config.layout62
-rw-r--r--usr.sbin/httpd/htdocs/manual/install-tpf.html276
-rw-r--r--usr.sbin/httpd/htdocs/manual/suexec_1_2.html203
-rw-r--r--usr.sbin/httpd/icons/small/README.txt6
-rw-r--r--usr.sbin/httpd/icons/small/back.gifbin0 -> 129 bytes
-rw-r--r--usr.sbin/httpd/icons/small/binary.gifbin0 -> 134 bytes
-rw-r--r--usr.sbin/httpd/icons/small/binhex.gifbin0 -> 131 bytes
-rw-r--r--usr.sbin/httpd/icons/small/blank.gifbin0 -> 55 bytes
-rw-r--r--usr.sbin/httpd/icons/small/broken.gifbin0 -> 139 bytes
-rw-r--r--usr.sbin/httpd/icons/small/burst.gifbin0 -> 128 bytes
-rw-r--r--usr.sbin/httpd/icons/small/comp1.gifbin0 -> 130 bytes
-rw-r--r--usr.sbin/httpd/icons/small/comp2.gifbin0 -> 131 bytes
-rw-r--r--usr.sbin/httpd/icons/small/compressed.gifbin0 -> 128 bytes
-rw-r--r--usr.sbin/httpd/icons/small/continued.gifbin0 -> 114 bytes
-rw-r--r--usr.sbin/httpd/icons/small/dir.gifbin0 -> 132 bytes
-rw-r--r--usr.sbin/httpd/icons/small/dir2.gifbin0 -> 122 bytes
-rw-r--r--usr.sbin/httpd/icons/small/forward.gifbin0 -> 125 bytes
-rw-r--r--usr.sbin/httpd/icons/small/generic.gifbin0 -> 116 bytes
-rw-r--r--usr.sbin/httpd/icons/small/generic2.gifbin0 -> 127 bytes
-rw-r--r--usr.sbin/httpd/icons/small/generic3.gifbin0 -> 113 bytes
-rw-r--r--usr.sbin/httpd/icons/small/image.gifbin0 -> 126 bytes
-rw-r--r--usr.sbin/httpd/icons/small/image2.gifbin0 -> 138 bytes
-rw-r--r--usr.sbin/httpd/icons/small/index.gifbin0 -> 145 bytes
-rw-r--r--usr.sbin/httpd/icons/small/key.gifbin0 -> 187 bytes
-rw-r--r--usr.sbin/httpd/icons/small/movie.gifbin0 -> 134 bytes
-rw-r--r--usr.sbin/httpd/icons/small/rainbow.gifbin0 -> 3811 bytes
-rw-r--r--usr.sbin/httpd/icons/small/sound.gifbin0 -> 130 bytes
-rw-r--r--usr.sbin/httpd/icons/small/sound2.gifbin0 -> 119 bytes
-rw-r--r--usr.sbin/httpd/icons/small/tar.gifbin0 -> 132 bytes
-rw-r--r--usr.sbin/httpd/icons/small/text.gifbin0 -> 128 bytes
-rw-r--r--usr.sbin/httpd/icons/small/transfer.gifbin0 -> 124 bytes
-rw-r--r--usr.sbin/httpd/icons/small/unknown.gifbin0 -> 131 bytes
-rw-r--r--usr.sbin/httpd/icons/small/uu.gifbin0 -> 125 bytes
-rw-r--r--usr.sbin/httpd/src/helpers/binbuild.sh221
-rw-r--r--usr.sbin/httpd/src/os/tpf/Makefile.tmpl41
-rw-r--r--usr.sbin/httpd/src/os/tpf/TPFExport7
-rw-r--r--usr.sbin/httpd/src/os/tpf/ebcdic.h8
-rw-r--r--usr.sbin/httpd/src/os/tpf/os-inline.c31
-rw-r--r--usr.sbin/httpd/src/os/tpf/os.c177
-rw-r--r--usr.sbin/httpd/src/os/tpf/os.h111
40 files changed, 1143 insertions, 0 deletions
diff --git a/usr.sbin/httpd/config.layout b/usr.sbin/httpd/config.layout
new file mode 100644
index 00000000000..e387a27cfc0
--- /dev/null
+++ b/usr.sbin/httpd/config.layout
@@ -0,0 +1,62 @@
+##
+## config.layout -- APACI Pre-defined Installation Path Layouts
+##
+## Hints:
+## - layouts can be loaded with APACI's --with-layout=ID option
+## - when no --with-layout option is given, the default layout is `Apache'
+## - a trailing plus character (`+') on paths is replaced with a
+## `/<target>' suffix where <target> is the the argument from
+## option --target (defaults to `httpd').
+##
+
+# Classical Apache path layout.
+<Layout Apache>
+ prefix: /usr/local/apache
+ exec_prefix: $prefix
+ bindir: $exec_prefix/bin
+ sbindir: $exec_prefix/bin
+ libexecdir: $exec_prefix/libexec
+ mandir: $prefix/man
+ sysconfdir: $prefix/conf
+ datadir: $prefix
+ includedir: $prefix/include
+ localstatedir: $prefix
+ runtimedir: $localstatedir/logs
+ logfiledir: $localstatedir/logs
+ proxycachedir: $localstatedir/proxy
+</Layout>
+
+# GNU standards conforming path layout.
+# See FSF's GNU project `make-stds' document for details.
+<Layout GNU>
+ prefix: /usr/local
+ exec_prefix: $prefix
+ bindir: $exec_prefix/bin
+ sbindir: $exec_prefix/sbin
+ libexecdir: $exec_prefix/libexec
+ mandir: $prefix/man
+ sysconfdir: $prefix/etc+
+ datadir: $prefix/share+
+ includedir: $prefix/include+
+ localstatedir: $prefix/var+
+ runtimedir: $localstatedir/run
+ logfiledir: $localstatedir/log
+ proxycachedir: $localstatedir/proxy
+</Layout>
+
+# Apache binary distribution path layout
+<Layout BinaryDistribution>
+ prefix: /usr/local/apache
+ exec_prefix:
+ bindir: bin
+ sbindir: bin
+ libexecdir: libexec
+ mandir: man
+ sysconfdir: conf
+ datadir:
+ includedir: include
+ localstatedir:
+ runtimedir: logs
+ logfiledir: logs
+ proxycachedir: proxy
+</Layout>
diff --git a/usr.sbin/httpd/htdocs/manual/install-tpf.html b/usr.sbin/httpd/htdocs/manual/install-tpf.html
new file mode 100644
index 00000000000..a55636e5bec
--- /dev/null
+++ b/usr.sbin/httpd/htdocs/manual/install-tpf.html
@@ -0,0 +1,276 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+<TITLE>Installing Apache on TPF</TITLE>
+</HEAD>
+
+<BODY>
+<H1 ALIGN="center">
+ <A NAME="top">Installing the Apache 1.3 HTTP Server on TPF</A>
+</H1>
+<HR>
+<CENTER>[&nbsp;<A HREF="#setup">Setup</A>
+ &nbsp;|&nbsp;<A HREF="#compilation">Compilation</A>
+ &nbsp;|&nbsp;<A HREF="#installation">Installation</A>
+ &nbsp;|&nbsp;<A HREF="#visualage">VisualAge</A>&nbsp;]
+</CENTER>
+<HR>
+<BR>
+
+<P>
+This document outlines the steps needed to install Apache onto a TPF system.
+</P>
+<P>
+You should first read
+htdocs/manual/<A HREF="readme-tpf.html">readme-tpf.html</A>
+for basic information on the port of Apache to TPF including required PUT level
+and supported functions &amp; modules.
+</P>
+
+<H2 align=center><A NAME="setup">Setup</A></H2>
+<P>
+Due to the use of EBCDIC on MVS OS/390 Open Edition
+(later referred to simply as
+"Open Edition"), we've found that the most reliable
+method for loading Apache onto your system is to unzip and tar the distribution
+file on your PC, and then copy the extracted files to Open Edition
+via an NFS client
+capable of transferring the data in EBCDIC format.
+</P>
+<P>
+Before moving the distribution to an
+Open Edition environment, verify that the NFS drive will transfer the
+filenames with upper/lower case preserved.
+</P>
+<P>
+Since Open Edition is not the ultimate destination of the files,
+the only required files and subdirectories that need to be moved to
+Open Edition
+are in /src.
+</P>
+<P>
+<FONT COLOR=red><STRONG>WARNING</STRONG></FONT>:
+If you are using a product such as WinZip on your PC, verify that
+the <EM>"TAR File Smart CR/LF Conversion"</EM> option is NOT checked.
+You can find this in WinZip under Options, Configuration.
+Since you had to tar and unzip the file to read this document,
+you need to re-tar and -unzip if the CR/LF option was checked.
+This will save you lots of headaches later on.
+</P>
+<P>
+<FONT COLOR=red><STRONG>WARNING</STRONG></FONT>:
+Editing files on a PC before moving them to Open Edition may result
+in the loss/addition of unprintable characters. Files of concern include shell
+scripts and src/Configuration. The most common problems are with
+tab characters
+and CR/LF characters. Most editors will handle the CR/LF problem correctly
+but none seem to handle tab characters. If you need to edit files, edit them
+in a UNIX editor such as vi or emacs.
+</P>
+
+<H2 align=center><A NAME="compilation">Compilation</A></H2>
+<P>
+Apache supports the notion of "optional modules". However,
+the server has to know which modules are compiled into it. In order for
+those modules to be effective, it is necessary to generate a short bit of
+code ("modules.c") which simply has a list of them. If you are using the
+make and Configure utility, "modules.c" will be created for you.
+</P>
+<P>
+The provided scripts assume a c89 compiler and have only been tested on an
+Open Edition environment. If you are using a platform other that
+Open Edition you may need to modify src/os/tpf/TPFExport and src/Configure
+to match your environment.
+</P>
+<P>
+Note that UNIX/Open Edition commands in this section are shown in
+<TT><STRONG>bold</STRONG></TT>,
+are case sensitive, and must be made from the "src" directory.
+</P>
+<OL>
+<LI>Overlay src/Configuration with src/Configuration.tmpl:
+ <TT><STRONG>cp&nbsp;Configuration.tmpl&nbsp;Configuration</STRONG></TT>
+ <BR><BR>
+<LI>Edit src/Configuration. It contains the list and settings
+ of various "Rules" and an additional section at the bottom that determines
+ which modules to compile:
+ <BR><BR>
+ <OL type=a>
+ <LI>Adjust the Rules and <TT>EXTRA_CFLAGS|LIBS|LDFLAGS|INCLUDES</TT>
+ if you feel so inclined.
+ <BR><BR>
+ <LI>Comment out (by preceding the line with a "#") lines corresponding
+ to those modules you DO&nbsp;NOT wish to include.
+ At present the following modules MUST be commented out
+ as they are not yet supported on TPF: mod_actions, mod_auth,
+ mod_cgi, mod_env, mod_include, & mod_status.
+ <BR><BR>
+ <LI>Uncomment (by removing the initial "#", if present) lines
+ corresponding to those optional modules you wish
+ to include or add new lines corresponding to any custom modules
+ you have written.
+ The htdocs/manual/<A HREF="readme-tpf.html">readme-tpf.html</A>
+ document lists the modules that have been tested on TPF.
+ </OL>
+ <BR>
+<LI>Set the TPF environment variables:
+ <TT><STRONG>.&nbsp;os/tpf/TPFExport</STRONG></TT>
+ <BR>
+ (The initial period and blank on the command are required to ensure
+ the environment variables exist beyond the scope of the shell script.)
+ This script will set the environment variables required to compile the
+ programs for TPF. Verify that the export variables are valid for your
+ installation, in particular, the system include file directories. The
+ system include files must reside on your Open Edition system in the
+ appropriate file structure similar to /usr/include and /usr/include/sys.
+ DO&nbsp;NOT modify the <TT>TPF=YES</TT> export variable. If this is
+ changed, the "Configure" script will not recognize TPF.
+ <BR><BR>
+<LI>Run the "Configure" script:
+ <TT><STRONG>Configure</STRONG></TT>
+ <BR>
+ The output will look something like this...
+ <PRE>
+ Using config file: Configuration
+ Creating Makefile
+ + configured for TPF platform
+ + setting C compiler to c89
+ + setting C pre-processor to c89 -E
+ + checking for system header files
+ + adding selected modules
+ Creating Makefile in support
+ Creating Makefile in main
+ Creating Makefile in ap
+ Creating Makefile in regex
+ Creating Makefile in os/tpf
+ Creating Makefile in modules/standard
+ Creating Makefile in modules/example
+ $ _
+ </PRE>
+ This generates modules.c and new versions of the Makefiles.
+ <BR><BR>
+ If you want to maintain multiple configurations, you can
+ say, <EM>e.g.</EM>,
+ <BR>
+ <TT><STRONG>Configure -file Configuration.ai</STRONG></TT>
+ <BR>
+ <PRE>
+ Using config file: Configuration.ai
+ Creating Makefile
+ + configured for &lt;whatever&gt; platform
+ + setting C compiler to &lt;whatever&gt;
+ et cetera
+ </PRE>
+
+ If you receive an error such as "<TT>Configure 146: FSUM7351 not found</TT>"
+ the most likely explanation is that one or more of the make related
+ files were edited on a non-UNIX platform, corrupting the end-of-line marks.
+ Verify that lines ending with "\" in the flagged file do&nbsp;not have trailing
+ spaces. Using the vi editor and the sample error above as an example...
+ <BR><BR><PRE>
+ pull up the flagged file: <STRONG>vi&nbsp;Configure</STRONG>
+ turn on punctuation: <STRONG>:set&nbsp;list</STRONG>
+ go to the line in question: <STRONG>146G</STRONG>
+ or find a line with a "\": <STRONG>/\\</STRONG></PRE>
+ The end of line should display as "<TT>\$</TT>". If it is displayed as
+ "<TT>\ $</TT>" (with a blank between \ and $) then you should revert to the
+ distributed version of the file and make the site-specific
+ changes again using a UNIX compatible editor such as vi or emacs.
+ Then try the Configure command again.
+ <BR><PRE> close the file: <STRONG>:q </STRONG>(or
+
+<STRONG>:quit!</STRONG>)</PRE>
+<LI>Now compile the programs: <TT><STRONG>make</STRONG></TT><BR>
+ The modules placed in the Apache distribution are the ones that have been
+ tested and are used regularly by various members of the Apache development
+ group. Additional modules contributed by members or third parties with specific
+ needs or functions are available at
+ <A
+HREF="http://www.apache.org/dist/contrib/modules/">http://www.apache.org/dist/contrib/modules/</A>.
+ There are instructions on that page for linking these modules into the core Apache
+ code.
+ <BR><BR>
+ If during compilation you get a warning about a missing 'regex.h', set
+ <TT>WANTHSREGEX=yes</TT> in the src/Configuration file and start back at the
+ <TT><STRONG>Configure</STRONG></TT> step.
+</OL>
+
+<A NAME="installation">&nbsp;</A>
+<H2 align=center>Installation</H2>
+<OL>
+<LI>After compilation, you will have all the object files required to build an
+ "httpd" loadset. The next step is to link the object files and create a loadset to be
+ stored in a PDS. Sample JCL for linking and loadsets has been included in
+ src/os/tpf/samples as "linkdll.jcl" and "loadset.jcl". You can submit these jobs
+ from CMS or directly from Open Edition if you have the proper authority. After
+ the jobs have completed, you can <TT>ZOLDR LOAD</TT> them to your TPF system.
+ <BR><BR>
+ NOTE: The <TT>mod_<EM>xxx</EM>.o</TT> files in the linkdll.jcl file must correspond to the
+ <TT>mod_<EM>xxx</EM>.o</TT> lines in the src/Configuration file.
+ <BR><BR>
+<LI>
+ Apache requires a configuration file to initialize itself during activation.
+ (Previously three configuration files were used.)
+ Copy the distribution version, /conf/httpd.conf-dist, to /conf/httpd.conf and then
+ edit the /conf/httpd.conf copy with your site specific information. This first release
+ of Apache for TPF only runs under the "inetd" model so you
+ <font color=red><STRONG>must</STRONG></FONT> change <TT>ServerType</TT> from <TT>standalone</TT>
+ to <TT>inetd</TT>.
+ <BR><BR>
+ General documentation for Apache is located at
+ <A HREF="http://www.apache.org/docs/">http://www.apache.org/docs/</A>
+ and in the HTML pages included with this distribution under the
+ /htdocs/manual directory.
+ <BR><BR>
+<LI>On TPF activate ZCLAW and update INETD using ZINET entries, the common case:
+ <BR><BR>
+ <PRE>
+ ZINET ADD S-TFTP PGM-CTFT PORT-69 PROTOCOL-UDP MODEL-NOWAIT
+ ZINET ADD S-APACHE PGM-<EM>pppp</EM> PORT-80 PROTOCOL-TCP MODEL-NOWAIT</PRE>
+ Please refer to <EM>IBM Transaction Processing Facility Transmission Control
+ Protocol/Internet Protocol Version 4 Release 1</EM> for more information
+ on ZCLAW, INETD, and TFTP.
+ <BR><BR>
+<LI>Prior to sending a request to your Apache server from a browser,
+ TFTP the configuration file, log, icons and web pages to your TPF system.
+ A typical directory structure for Apache is as follows:
+<PRE> /usr/local/apache/conf
+ /usr/local/apache/logs
+ /usr/local/apache/icons
+ /usr/local/apache/htdocs</PRE>
+ The logs directory must exist in order to avoid an
+ <CODE>fopen</CODE> error while running Apache. TFTP an empty file into
+ the logs subdirectory to create it. All gif, jpg, and zip files should be
+ TFTP'd as binary; conf files and html pages should be TFTP'd as text.
+</OL>
+<A NAME="visualage">&nbsp;</A>
+<H2 align=center>Compiling with VisualAge TPF</H2>
+<P>
+ It is not required that "make" be used to compile Apache for TPF:
+ Individual programs may be compiled using IBM's VisualAge TPF product.
+ This is particularly useful when compiling selected programs for the Debug Tool.
+ <BR><BR>
+ The following VisualAge compile settings are required:
+ <UL>
+ <LI><EM>"DEFINE - Define preprocessor macro name(s)"</EM> must include
+ <TT><STRONG>TPF, CHARSET_EBCDIC, _POSIX_SOURCE,</STRONG></TT> and
+ <TT><STRONG>USE_HSREGEX</STRONG></TT>
+ <BR><BR>
+ <LI><EM>"LSEARCH - Path for user include files"</EM> must include
+ <TT><STRONG>../src/include</STRONG></TT> and <TT><STRONG>../src/os/tpf</STRONG></TT>
+ <BR><BR>
+ <LI><EM>"DLL - Generate DLL code"</EM> must be checked
+ <BR><BR>
+ <LI><EM>"LONGNAME - Support long names"</EM> must be checked
+ </UL>
+</P>
+<HR>
+<CENTER>[&nbsp;<A HREF="#top">top</A>
+ &nbsp;|&nbsp;<A HREF="#setup">Setup</A>
+ &nbsp;|&nbsp;<A HREF="#compilation">Compilation</A>
+ &nbsp;|&nbsp;<A HREF="#installation">Installation</A>
+ &nbsp;|&nbsp;<A HREF="#visualage">VisualAge</A>&nbsp;]
+</CENTER>
+
+</BODY>
+</HTML>
diff --git a/usr.sbin/httpd/htdocs/manual/suexec_1_2.html b/usr.sbin/httpd/htdocs/manual/suexec_1_2.html
new file mode 100644
index 00000000000..bcfc7252f2f
--- /dev/null
+++ b/usr.sbin/httpd/htdocs/manual/suexec_1_2.html
@@ -0,0 +1,203 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+<TITLE>Apache suEXEC Support</TITLE>
+</HEAD>
+<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
+<BODY
+ BGCOLOR="#FFFFFF"
+ TEXT="#000000"
+ LINK="#0000FF"
+ VLINK="#000080"
+ ALINK="#FF0000"
+>
+<DIV ALIGN="CENTER">
+ <IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
+ <H3>
+ Apache HTTP Server Version 1.3
+ </H3>
+</DIV>
+
+
+<H3><A NAME="install">Configuring &amp; Installing suEXEC</A></H3>
+<P ALIGN="LEFT">
+This section describes the configuration and installation of
+the suEXEC feature with the "<CODE>src/Configure</CODE>" script.
+<BR>
+(If you use Apache 1.3 you may want to use the Apache
+AutoConf-style interface (APACI) which is described in the
+<A HREF="suexec.html">main suEXEC document</A>).
+</P>
+
+<P ALIGN="LEFT">
+<STRONG>EDITING THE SUEXEC HEADER FILE</STRONG><BR>
+- From the top-level of the Apache source tree, type:&nbsp;&nbsp;
+<STRONG><CODE>cd support [ENTER]</CODE></STRONG>
+</P>
+
+<P ALIGN="LEFT">
+Edit the <CODE>suexec.h</CODE> file and change the following macros to
+match your local Apache installation.
+</P>
+
+<P ALIGN="LEFT">
+<EM>From support/suexec.h</EM>
+<PRE>
+ /*
+ * HTTPD_USER -- Define as the username under which Apache normally
+ * runs. This is the only user allowed to execute
+ * this program.
+ */
+ #define HTTPD_USER "www"
+
+ /*
+ * UID_MIN -- Define this as the lowest UID allowed to be a target user
+ * for suEXEC. For most systems, 500 or 100 is common.
+ */
+ #define UID_MIN 100
+
+ /*
+ * GID_MIN -- Define this as the lowest GID allowed to be a target group
+ * for suEXEC. For most systems, 100 is common.
+ */
+ #define GID_MIN 100
+
+ /*
+ * USERDIR_SUFFIX -- Define to be the subdirectory under users'
+ * home directories where suEXEC access should
+ * be allowed. All executables under this directory
+ * will be executable by suEXEC as the user so
+ * they should be "safe" programs. If you are
+ * using a "simple" UserDir directive (ie. one
+ * without a "*" in it) this should be set to
+ * the same value. suEXEC will not work properly
+ * in cases where the UserDir directive points to
+ * a location that is not the same as the user's
+ * home directory as referenced in the passwd file.
+ *
+ * If you have VirtualHosts with a different
+ * UserDir for each, you will need to define them to
+ * all reside in one parent directory; then name that
+ * parent directory here. IF THIS IS NOT DEFINED
+ * PROPERLY, ~USERDIR CGI REQUESTS WILL NOT WORK!
+ * See the suEXEC documentation for more detailed
+ * information.
+ */
+ #define USERDIR_SUFFIX "public_html"
+
+ /*
+ * LOG_EXEC -- Define this as a filename if you want all suEXEC
+ * transactions and errors logged for auditing and
+ * debugging purposes.
+ */
+ #define LOG_EXEC "/usr/local/apache/logs/cgi.log" /* Need me? */
+
+ /*
+ * DOC_ROOT -- Define as the DocumentRoot set for Apache. This
+ * will be the only hierarchy (aside from UserDirs)
+ * that can be used for suEXEC behavior.
+ */
+ #define DOC_ROOT "/usr/local/apache/htdocs"
+
+ /*
+ * SAFE_PATH -- Define a safe PATH environment to pass to CGI executables.
+ *
+ */
+ #define SAFE_PATH "/usr/local/bin:/usr/bin:/bin"
+</PRE>
+</P>
+
+<P ALIGN="LEFT">
+<STRONG>COMPILING THE SUEXEC WRAPPER</STRONG><BR>
+You now need to compile the suEXEC wrapper. At the shell command prompt,
+after compiling Apache,
+type:&nbsp;&nbsp;<STRONG><CODE>make suexec[ENTER]</CODE></STRONG>.
+This should create the <STRONG><EM>suexec</EM></STRONG> wrapper executable.
+</P>
+
+<P ALIGN="LEFT">
+<STRONG>COMPILING APACHE FOR USE WITH SUEXEC</STRONG><BR>
+By default, Apache is compiled to look for the suEXEC wrapper in the following
+location.
+</P>
+
+<P ALIGN="LEFT">
+<EM>From src/include/httpd.h</EM>
+<PRE>
+ /* The path to the suExec wrapper, can be overridden in Configuration */
+ #ifndef SUEXEC_BIN
+ #define SUEXEC_BIN HTTPD_ROOT "/sbin/suexec"
+ #endif
+</PRE>
+</P>
+
+<P ALIGN="LEFT">
+If your installation requires location of the wrapper program in a different
+directory, either add
+<CODE>-DSUEXEC_BIN=\"<EM>&lt;/your/path/to/suexec&gt;</EM>\"</CODE>
+to your CFLAGS (or edit src/include/httpd.h) and recompile your Apache server.
+See <A HREF="install.html">Compiling and Installing Apache</A>
+(and the <SAMP>INSTALL</SAMP> file in the source distribution)
+for more info on this process.
+</P>
+
+<P ALIGN="LEFT">
+<STRONG>COPYING THE SUEXEC BINARY TO ITS PROPER LOCATION</STRONG><BR>
+Copy the <STRONG><EM>suexec</EM></STRONG> executable created in the
+exercise above to the defined location for <STRONG>SUEXEC_BIN</STRONG>.
+</P>
+
+<P ALIGN="LEFT">
+<STRONG><CODE>cp suexec /usr/local/apache/sbin/suexec [ENTER]</CODE></STRONG>
+</P>
+
+<P ALIGN="LEFT">
+In order for the wrapper to set the user ID, it must be installed as owner
+<STRONG><EM>root</EM></STRONG> and must have the setuserid execution bit
+set for file modes. If you are not running a <STRONG><EM>root</EM></STRONG>
+user shell, do so now and execute the following commands.
+</P>
+
+<P ALIGN="LEFT">
+<STRONG><CODE>chown root /usr/local/apache/sbin/suexec [ENTER]</CODE></STRONG>
+<BR>
+<STRONG><CODE>chmod 4711 /usr/local/apache/sbin/suexec [ENTER]</CODE></STRONG>
+</P>
+
+<H3><A NAME="enable">Enabling &amp; Disabling suEXEC</A></H3>
+<P ALIGN="LEFT">
+After properly installing the <STRONG>suexec</STRONG> wrapper
+executable, you must kill and restart the Apache server. A simple
+<STRONG><CODE>kill -1 `cat httpd.pid`</CODE></STRONG> will not be enough.
+Upon startup of the web-server, if Apache finds a properly configured
+<STRONG>suexec</STRONG> wrapper, it will print the following message to
+the console (Apache 1.2):
+<PRE>
+ Configuring Apache for use with suexec wrapper.
+</PRE>
+If you use Apache 1.3 the following message is printed to the
+error log:
+<PRE>
+ [notice] suEXEC mechanism enabled (wrapper: <EM>/path/to/suexec</EM>)
+</PRE>
+</P>
+<P ALIGN="LEFT">
+If you don't see this message at server startup, the server is most
+likely not finding the wrapper program where it expects it, or the
+executable is not installed <STRONG><EM>setuid root</EM></STRONG>. Check
+your installation and try again.
+</P>
+
+<P ALIGN="CENTER">
+<STRONG><A HREF="suexec.html">BACK TO MAIN PAGE</A></STRONG>
+</P>
+
+<HR>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server Version 1.3
+ </H3>
+
+<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
+
+</BODY>
+</HTML>
diff --git a/usr.sbin/httpd/icons/small/README.txt b/usr.sbin/httpd/icons/small/README.txt
new file mode 100644
index 00000000000..deb96702b76
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/README.txt
@@ -0,0 +1,6 @@
+
+These icons are provided as an alternative to the standard Apache
+icon graphics. All graphics in this directory, with the exception
+of rainbow.gif, are 16x16 pixels in size, rather than the 20x22
+dimension icons which are the normal defaults for Apache and are
+in the parent directory of this one.
diff --git a/usr.sbin/httpd/icons/small/back.gif b/usr.sbin/httpd/icons/small/back.gif
new file mode 100644
index 00000000000..e331454726b
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/back.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/binary.gif b/usr.sbin/httpd/icons/small/binary.gif
new file mode 100644
index 00000000000..995f79b9b10
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/binary.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/binhex.gif b/usr.sbin/httpd/icons/small/binhex.gif
new file mode 100644
index 00000000000..3d54a5458e6
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/binhex.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/blank.gif b/usr.sbin/httpd/icons/small/blank.gif
new file mode 100644
index 00000000000..606787a8399
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/blank.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/broken.gif b/usr.sbin/httpd/icons/small/broken.gif
new file mode 100644
index 00000000000..1bcc57f25c5
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/broken.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/burst.gif b/usr.sbin/httpd/icons/small/burst.gif
new file mode 100644
index 00000000000..d882ceba9cb
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/burst.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/comp1.gif b/usr.sbin/httpd/icons/small/comp1.gif
new file mode 100644
index 00000000000..712f36afdb2
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/comp1.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/comp2.gif b/usr.sbin/httpd/icons/small/comp2.gif
new file mode 100644
index 00000000000..7759eb11f95
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/comp2.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/compressed.gif b/usr.sbin/httpd/icons/small/compressed.gif
new file mode 100644
index 00000000000..d3b156072ac
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/compressed.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/continued.gif b/usr.sbin/httpd/icons/small/continued.gif
new file mode 100644
index 00000000000..e1c9f2cfa68
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/continued.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/dir.gif b/usr.sbin/httpd/icons/small/dir.gif
new file mode 100644
index 00000000000..7b37b099177
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/dir.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/dir2.gif b/usr.sbin/httpd/icons/small/dir2.gif
new file mode 100644
index 00000000000..425d6e4b77c
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/dir2.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/forward.gif b/usr.sbin/httpd/icons/small/forward.gif
new file mode 100644
index 00000000000..2997466eb4d
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/forward.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/generic.gif b/usr.sbin/httpd/icons/small/generic.gif
new file mode 100644
index 00000000000..f8da6ff92c3
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/generic.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/generic2.gif b/usr.sbin/httpd/icons/small/generic2.gif
new file mode 100644
index 00000000000..992f13331bb
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/generic2.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/generic3.gif b/usr.sbin/httpd/icons/small/generic3.gif
new file mode 100644
index 00000000000..85aa275e25a
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/generic3.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/image.gif b/usr.sbin/httpd/icons/small/image.gif
new file mode 100644
index 00000000000..dc3d95ced76
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/image.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/image2.gif b/usr.sbin/httpd/icons/small/image2.gif
new file mode 100644
index 00000000000..a5c40f15508
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/image2.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/index.gif b/usr.sbin/httpd/icons/small/index.gif
new file mode 100644
index 00000000000..526df6b0645
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/index.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/key.gif b/usr.sbin/httpd/icons/small/key.gif
new file mode 100644
index 00000000000..8dfd6c09de3
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/key.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/movie.gif b/usr.sbin/httpd/icons/small/movie.gif
new file mode 100644
index 00000000000..7b4a42e7a0e
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/movie.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/rainbow.gif b/usr.sbin/httpd/icons/small/rainbow.gif
new file mode 100644
index 00000000000..8216b89bade
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/rainbow.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/sound.gif b/usr.sbin/httpd/icons/small/sound.gif
new file mode 100644
index 00000000000..a7a89ffd9ed
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/sound.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/sound2.gif b/usr.sbin/httpd/icons/small/sound2.gif
new file mode 100644
index 00000000000..07706e07b86
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/sound2.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/tar.gif b/usr.sbin/httpd/icons/small/tar.gif
new file mode 100644
index 00000000000..59c3ffb9a5f
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/tar.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/text.gif b/usr.sbin/httpd/icons/small/text.gif
new file mode 100644
index 00000000000..66ceefbc8c4
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/text.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/transfer.gif b/usr.sbin/httpd/icons/small/transfer.gif
new file mode 100644
index 00000000000..d460d3fffe6
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/transfer.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/unknown.gif b/usr.sbin/httpd/icons/small/unknown.gif
new file mode 100644
index 00000000000..7bf0bbc10a6
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/unknown.gif
Binary files differ
diff --git a/usr.sbin/httpd/icons/small/uu.gif b/usr.sbin/httpd/icons/small/uu.gif
new file mode 100644
index 00000000000..8c793f8a7f9
--- /dev/null
+++ b/usr.sbin/httpd/icons/small/uu.gif
Binary files differ
diff --git a/usr.sbin/httpd/src/helpers/binbuild.sh b/usr.sbin/httpd/src/helpers/binbuild.sh
new file mode 100644
index 00000000000..3279148fcbc
--- /dev/null
+++ b/usr.sbin/httpd/src/helpers/binbuild.sh
@@ -0,0 +1,221 @@
+#!/bin/sh
+#
+# binbuild.sh - Builds an Apache binary distribution.
+# Initially written by Lars Eilebrecht <lars@apache.org>.
+#
+# This script falls under the Apache License.
+# See http://www.apache.org/docs/LICENSE
+
+
+APDIR=$(basename $(pwd))
+VER=$(echo $APDIR |sed s/apache-//)
+OS=$(src/helpers/GuessOS)
+USER="$(src/helpers/buildinfo.sh -n %u@%h%d)"
+TAR="$(src/helpers/findprg.sh tar)"
+GTAR="$(src/helpers/findprg.sh gtar)"
+GZIP="$(src/helpers/findprg.sh gzip)"
+CONFIGPARAM="--with-layout=BinaryDistribution --enable-module=most --enable-shared=max"
+
+if [ ! -f ./ABOUT_APACHE ]
+then
+ echo "ERROR: The current directory contains no valid Apache distribution."
+ echo "Please change the directory to the top level directory of a freshly"
+ echo "unpacked Apache 1.3 source distribution and re-execute the script"
+ echo "'./src/helpers/bindbuild.sh'."
+ exit 1;
+fi
+
+if [ -d ./CVS ]
+then
+ echo "ERROR: The current directory is a CVS checkout of Apache."
+ echo "Only a standard Apache 1.3 source distribution should be used to"
+ echo "create a binary distribution."
+ exit 1;
+fi
+
+echo "Building Apache $VER binary distribution..."
+echo "Platform is \"$OS\"..."
+
+( echo "Build log for Apache binary distribution" && \
+ echo "----------------------------------------------------------------------" && \
+ ./configure $CONFIGPARAM && \
+ echo "----------------------------------------------------------------------" && \
+ make clean && \
+ rm -rf bindist install-bindist.sh *.bindist
+ echo "----------------------------------------------------------------------" && \
+ make && \
+ echo "----------------------------------------------------------------------" && \
+ make install-quiet root="bindist/" && \
+ echo "----------------------------------------------------------------------" && \
+ make clean && \
+ echo "----------------------------------------------------------------------" && \
+ echo "[EOF]" \
+) > build.log 2>&1
+
+if [ ! -f ./bindist/bin/httpd ]
+then
+ echo "ERROR: Failed to build Apache. See \"build.log\" for details."
+ exit 1;
+fi
+
+echo "Binary images successfully created..."
+echo "Creating supplementary files..."
+
+( echo " " && \
+ echo "Apache $VER binary distribution" && \
+ echo "================================" && \
+ echo " " && \
+ echo "This binary distribution is usable on a \"$OS\"" && \
+ echo "system and was built by \"$USER\"." && \
+ echo "" && \
+ echo "The distribution contains all standard Apache modules as shared" && \
+ echo "objects. This allows you to enable or disable particular modules" && \
+ echo "with the LoadModule/AddModule directives in the configuration file" && \
+ echo "without the need to re-compile Apache." && \
+ echo "" && \
+ echo "See \"INSTALL.bindist\" on how to install the distribution." && \
+ echo " " && \
+ echo "NOTE: Please do not send support-related mails to the address mentioned" && \
+ echo " above or to any member of the Apache Group! Support questions" && \
+ echo " should be directed to the \"comp.infosystems.www.servers.unix\"" && \
+ echo " or \"comp.infosystems.www.servers.ms-windows\" newsgroup" && \
+ echo " (as appropriate for the platform you use), where some of the" && \
+ echo " Apache team lurk, in the company of many other Apache gurus" && \
+ echo " who should be able to help." && \
+ echo " If you think you found a bug in Apache or have a suggestion please" && \
+ echo " visit the bug report page at http://www.apache.org/bug_report.html" && \
+ echo " " && \
+ echo "----------------------------------------------------------------------" && \
+ ./bindist/bin/httpd -V && \
+ echo "----------------------------------------------------------------------" \
+) > README.bindist
+cp README.bindist ../apache-$VER-$OS.README
+
+( echo " " && \
+ echo "Apache $VER binary installation" && \
+ echo "================================" && \
+ echo " " && \
+ echo "To install this binary distribution you have to execute the installation" && \
+ echo "script \"install-bindist.sh\" in the top-level directory of the distribution." && \
+ echo " " && \
+ echo "The script takes the ServerRoot directory into which you want to install" && \
+ echo "Apache as an option. If you ommit the option the default path" && \
+ echo "\"/usr/local/apache\" is used." && \
+ echo "Make sure you have write permissions in the target directory, e.g. switch" && \
+ echo "to user \"root\" before you execute the script." && \
+ echo " " && \
+ echo "See \"README.bindist\" for further details about this distribution." && \
+ echo " " && \
+ echo "Please note that this distribution includes the complete Apache source code." && \
+ echo "Therefore you may compile Apache yourself at any time if you have a compiler" && \
+ echo "installation on your system." && \
+ echo "See \"INSTALL\" for details on how to accomplish this." && \
+ echo " " \
+) > INSTALL.bindist
+
+( echo "#!/bin/sh" && \
+ echo "#" && \
+ echo "# Usage: install-bindist.sh [ServerRoot]" && \
+ echo "# This script installs the Apache binary distribution and" && \
+ echo "# was automatically created by binbuild.sh." && \
+ echo " " && \
+ echo "if [ .\$1 = . ]" && \
+ echo "then" && \
+ echo " SR=/usr/local/apache" && \
+ echo "else" && \
+ echo " SR=\$1" && \
+ echo "fi" && \
+ echo "echo \"Installing binary distribution for platform $OS\"" && \
+ echo "echo \"into directory \$SR ...\"" && \
+ echo "./src/helpers/mkdir.sh \$SR" && \
+ echo "cp -r bindist/proxy \$SR/proxy" && \
+ echo "cp -r bindist/man \$SR/man" && \
+ echo "cp -r bindist/logs \$SR/logs" && \
+ echo "cp -r bindist/libexec \$SR/libexec" && \
+ echo "cp -r bindist/include \$SR/include" && \
+ echo "cp -r bindist/icons \$SR/icons" && \
+ echo "cp -r bindist/cgi-bin \$SR/cgi-bin" && \
+ echo "cp -r bindist/bin \$SR/bin" && \
+ echo "if [ -d \$SR/conf ]" && \
+ echo "then" && \
+ echo " echo \"[Preserving existing configuration files.]\"" && \
+ echo " cp -r bindist/conf/*.default \$SR/conf/" && \
+ echo "else" && \
+ echo " cp -r bindist/conf \$SR/conf" && \
+ echo "fi" && \
+ echo "if [ -d \$SR/htdocs ]" && \
+ echo "then" && \
+ echo " echo \"[Preserving existing htdocs directory.]\"" && \
+ echo "else" && \
+ echo " cp -r bindist/htdocs \$SR/htdocs" && \
+ echo "fi" && \
+ echo "sed -e s%/usr/local/apache%\$SR/% \$SR/conf/httpd.conf.default > \$SR/conf/httpd.conf" && \
+ echo "sed -e s%PIDFILE=%PIDFILE=\$SR/% -e s%HTTPD=%HTTPD=\\\"\$SR/% -e \"s%/httpd$%/httpd -d \$SR\\\"%\" bindist/bin/apachectl > \$SR/bin/apachectl" && \
+ echo " " && \
+ echo "echo \"Ready.\"" && \
+ echo "echo \" +--------------------------------------------------------+\"" && \
+ echo "echo \" | You now have successfully installed the Apache $VER |\"" && \
+ echo "echo \" | HTTP server. To verify that Apache actually works |\"" && \
+ echo "echo \" | correctly you now should first check the (initially |\"" && \
+ echo "echo \" | created or preserved) configuration files |\"" && \
+ echo "echo \" | |\"" && \
+ echo "echo \" | \$SR/conf/httpd.conf\"" && \
+ echo "echo \" | |\"" && \
+ echo "echo \" | and then you should be able to immediately fire up |\"" && \
+ echo "echo \" | Apache the first time by running: |\"" && \
+ echo "echo \" | |\"" && \
+ echo "echo \" | \$SR/bin/apachectl start \"" &&\
+ echo "echo \" | |\"" && \
+ echo "echo \" | Thanks for using Apache. The Apache Group |\"" && \
+ echo "echo \" | http://www.apache.org/ |\"" && \
+ echo "echo \" +--------------------------------------------------------+\"" && \
+ echo "echo \" \"" \
+) > install-bindist.sh
+chmod 755 install-bindist.sh
+
+sed -e "s%\"/htdocs%\"/usr/local/apache/htdocs%" \
+ -e "s%\"/icons%\"/usr/local/apache/icons%" \
+ -e "s%\"/cgi-bin%\"/usr/local/apache/cgi-bin%" \
+ -e "s%^ServerAdmin.*%ServerAdmin you@your.address%" \
+ -e "s%#ServerName.*%#ServerName localhost%" \
+ -e "s%Port 8080%Port 80%" \
+ bindist/conf/httpd.conf.default > bindist/conf/httpd.conf
+cp bindist/conf/httpd.conf bindist/conf/httpd.conf.default
+
+echo "Creating distribution archive and readme file..."
+
+if [ ".`grep -i error build.log > /dev/null`" != . ]
+then
+ echo "ERROR: Failed to build Apache. See \"build.log\" for details."
+ exit 1;
+else
+ if [ ".$GTAR" != . ]
+ then
+ $GTAR -zcf ../apache-$VER-$OS.tar.gz -C .. --owner=root --group=root apache-$VER
+ else
+ if [ ".$TAR" != . ]
+ then
+ $TAR -cf ../apache-$VER-$OS.tar -C .. apache-$VER
+ if [ ".$GZIP" != . ]
+ then
+ $GZIP ../apache-$VER-$OS.tar
+ fi
+ else
+ echo "ERROR: Could not find a 'tar' program!"
+ echo " Please execute the following commands manually:"
+ echo " tar -cf ../apache-$VER-$OS.tar ."
+ echo " gzip ../apache-$VER-$OS.tar"
+ fi
+ fi
+
+ if [ -f ../apache-$VER-$OS.tar.gz ] && [ -f ../apache-$VER-$OS.README ]
+ then
+ echo "Ready."
+ echo "You can find the binary archive (apache-$VER-$OS.tar.gz)"
+ echo "and the readme file (apache-$VER-$OS.README) in the"
+ echo "parent directory."
+ exit 0;
+ else
+ exit 1;
+ fi
+fi
diff --git a/usr.sbin/httpd/src/os/tpf/Makefile.tmpl b/usr.sbin/httpd/src/os/tpf/Makefile.tmpl
new file mode 100644
index 00000000000..ad54c1b84a4
--- /dev/null
+++ b/usr.sbin/httpd/src/os/tpf/Makefile.tmpl
@@ -0,0 +1,41 @@
+CFLAGS=$(OPTIM) $(CFLAGS1) $(EXTRA_CFLAGS)
+LIBS=$(EXTRA_LIBS) $(LIBS1)
+INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES)
+LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS)
+
+OBJS= os.o os-inline.o ebcdic.o
+
+LIB= libos.a
+
+all: $(LIB)
+
+$(LIB): $(OBJS)
+ rm -f $@
+ ar cr $@ $(OBJS)
+ $(RANLIB) $@
+
+.c.o:
+ $(CC) -c $(INCLUDES) $(CFLAGS) $(SPACER) $<
+
+clean:
+ rm -f $(OBJS) $(LIB)
+
+distclean: clean
+ -rm -f Makefile
+
+# We really don't expect end users to use this rule. It works only with
+# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after
+# using it.
+depend:
+ cp Makefile.tmpl Makefile.tmpl.bak \
+ && sed -ne '1,/^# DO NOT REMOVE/p' Makefile.tmpl > Makefile.new \
+ && gcc -MM $(INCLUDES) $(CFLAGS) *.c >> Makefile.new \
+ && sed -e '1,$$s: $(INCDIR)/: $$(INCDIR)/:g' Makefile.new \
+ > Makefile.tmpl \
+ && rm Makefile.new
+
+$(OBJS): Makefile
+os.o: os.c os-inline.c
+ebcdic.o: ebcdic.c
+# DO NOT REMOVE
+os.o: os.c
diff --git a/usr.sbin/httpd/src/os/tpf/TPFExport b/usr.sbin/httpd/src/os/tpf/TPFExport
new file mode 100644
index 00000000000..449ebf2f93a
--- /dev/null
+++ b/usr.sbin/httpd/src/os/tpf/TPFExport
@@ -0,0 +1,7 @@
+#!/bin/sh
+echo " Setting TPF/c89 environment variables"
+export _C89_CCMODE=1
+# replace the following with the location of your TPF include files
+export _C89_INCDIRS="/u/tpf41/currentmaint/include /u/tpf41/currentmaint/include/oco"
+export TPF=YES
+echo "Done"
diff --git a/usr.sbin/httpd/src/os/tpf/ebcdic.h b/usr.sbin/httpd/src/os/tpf/ebcdic.h
new file mode 100644
index 00000000000..e9c4120e1a3
--- /dev/null
+++ b/usr.sbin/httpd/src/os/tpf/ebcdic.h
@@ -0,0 +1,8 @@
+#include <sys/types.h>
+
+extern const unsigned char os_toascii[256];
+extern const unsigned char os_toebcdic[256];
+void ebcdic2ascii(void *dest, const void *srce, size_t count);
+void ebcdic2ascii_strictly(unsigned char *dest, const unsigned char *srce, size_t count);
+void ascii2ebcdic(void *dest, const void *srce, size_t count);
+
diff --git a/usr.sbin/httpd/src/os/tpf/os-inline.c b/usr.sbin/httpd/src/os/tpf/os-inline.c
new file mode 100644
index 00000000000..e58917af369
--- /dev/null
+++ b/usr.sbin/httpd/src/os/tpf/os-inline.c
@@ -0,0 +1,31 @@
+/*
+ * This file contains functions which can be inlined if the compiler
+ * has an "inline" modifier. Because of this, this file is both a
+ * header file and a compilable module.
+ *
+ * Only inlineable functions should be defined in here. They must all
+ * include the INLINE modifier.
+ *
+ * If the compiler supports inline, this file will be #included as a
+ * header file from os.h to create all the inline function
+ * definitions. INLINE will be defined to whatever is required on
+ * function definitions to make them inline declarations.
+ *
+ * If the compiler does not support inline, this file will be compiled
+ * as a normal C file into libos.a (along with os.c). In this case
+ * INLINE will _not_ be set so we can use this to test if we are
+ * compiling this source file.
+ */
+
+#ifndef INLINE
+#define INLINE
+
+/* Anything required only when compiling */
+#include "ap_config.h"
+
+#endif
+
+INLINE int ap_os_is_path_absolute(const char *file)
+{
+ return (file && file[0] == '/' ? 1 : 0);
+}
diff --git a/usr.sbin/httpd/src/os/tpf/os.c b/usr.sbin/httpd/src/os/tpf/os.c
new file mode 100644
index 00000000000..aea4d961f4e
--- /dev/null
+++ b/usr.sbin/httpd/src/os/tpf/os.c
@@ -0,0 +1,177 @@
+/* ====================================================================
+ * Copyright (c) 1998-1999 The Apache Group. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgment:
+ * "This product includes software developed by the Apache Group
+ * for use in the Apache HTTP server project (http://www.apache.org/)."
+ *
+ * 4. The names "Apache Server" and "Apache Group" must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission. For written permission, please contact
+ * apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache"
+ * nor may "Apache" appear in their names without prior written
+ * permission of the Apache Group.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ * acknowledgment:
+ * "This product includes software developed by the Apache Group
+ * for use in the Apache HTTP server project (http://www.apache.org/)."
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Group and was originally based
+ * on public domain software written at the National Center for
+ * Supercomputing Applications, University of Illinois, Urbana-Champaign.
+ * For more information on the Apache Group and the Apache HTTP server
+ * project, please see <http://www.apache.org/>.
+ *
+ */
+
+/*
+ * This file will include OS specific functions which are not inlineable.
+ * Any inlineable functions should be defined in os-inline.c instead.
+ */
+
+#include "httpd.h"
+#include "http_core.h"
+#include "os.h"
+
+/* Check the Content-Type to decide if conversion is needed */
+int ap_checkconv(struct request_rec *r)
+{
+ int convert_to_ascii;
+ const char *type;
+
+ /* To make serving of "raw ASCII text" files easy (they serve faster
+ * since they don't have to be converted from EBCDIC), a new
+ * "magic" type prefix was invented: text/x-ascii-{plain,html,...}
+ * If we detect one of these content types here, we simply correct
+ * the type to the real text/{plain,html,...} type. Otherwise, we
+ * set a flag that translation is required later on.
+ */
+
+ type = (r->content_type == NULL) ? ap_default_type(r) : r->content_type;
+
+ /* If no content type is set then treat it as (ebcdic) text/plain */
+ convert_to_ascii = (type == NULL);
+
+ /* Conversion is applied to text/ files only, if ever. */
+ if (type && (strncasecmp(type, "text/", 5) == 0 ||
+ strncasecmp(type, "message/", 8) == 0)) {
+ if (strncasecmp(type, ASCIITEXT_MAGIC_TYPE_PREFIX,
+ sizeof(ASCIITEXT_MAGIC_TYPE_PREFIX)-1) == 0)
+ r->content_type = ap_pstrcat(r->pool, "text/",
+ type+sizeof(ASCIITEXT_MAGIC_TYPE_PREFIX)-1,
+ NULL);
+ else
+ /* translate EBCDIC to ASCII */
+ convert_to_ascii = 1;
+ }
+ /* Enable conversion if it's a text document */
+ ap_bsetflag(r->connection->client, B_EBCDIC2ASCII, convert_to_ascii);
+
+ return convert_to_ascii;
+}
+
+int tpf_select(int maxfds, fd_set *reads, fd_set *writes, fd_set *excepts, struct timeval *tv)
+{
+ int sockets[24];
+ int no_reads = 0;
+ int no_writes = 0;
+ int no_excepts = 0;
+ int timeout = 0;
+ int counter = 0;
+ int i;
+ fd_set *temp;
+
+ if(maxfds) {
+ if(reads)
+ temp = reads;
+ else if(writes)
+ temp = writes;
+ else if(excepts)
+ temp = excepts;
+ else
+ temp = NULL;
+
+ for(i=0; i<maxfds; i++) {
+ if(FD_ISSET(i,temp)) {
+ sockets[counter] = i;
+ counter++;
+ }
+ }
+
+ if(tv)
+ timeout = tv->tv_sec * 1000 + tv->tv_usec;
+
+ if(reads)
+ no_reads = counter;
+ else if(writes)
+ no_writes = counter;
+ else if(excepts)
+ no_excepts = counter;
+ }
+ return select(sockets, no_reads, no_writes, no_excepts, timeout);
+}
+
+/* pipe is not yet available on TPF */
+int pipe(int fildes[2])
+{
+ errno = ENOSYS;
+ return(-1);
+}
+
+/* fork and exec functions are not defined on
+ TPF due to the implementation of tpf_fork() */
+
+pid_t fork(void)
+{
+ errno = ENOSYS;
+ return(-1);
+}
+
+int execl(const char *path, const char *arg0, ...)
+{
+ errno = ENOSYS;
+ return(-1);
+}
+
+int execle(const char *path, const char *arg0, ...)
+{
+ errno = ENOSYS;
+ return(-1);
+}
+
+int execve(const char *path, char *const argv[], char *const envp[])
+{
+ errno = ENOSYS;
+ return(-1);
+}
diff --git a/usr.sbin/httpd/src/os/tpf/os.h b/usr.sbin/httpd/src/os/tpf/os.h
new file mode 100644
index 00000000000..9a94bcc96c2
--- /dev/null
+++ b/usr.sbin/httpd/src/os/tpf/os.h
@@ -0,0 +1,111 @@
+#ifndef APACHE_OS_H
+#define APACHE_OS_H
+
+#define PLATFORM "TPF"
+
+#ifdef errno
+#undef errno
+#endif
+
+/*
+ * This file in included in all Apache source code. It contains definitions
+ * of facilities available on _this_ operating system (HAVE_* macros),
+ * and prototypes of OS specific functions defined in os.c or os-inline.c
+ */
+
+#include "ap_config.h"
+
+#if !defined(INLINE) && defined(USE_GNU_INLINE)
+/* Compiler supports inline, so include the inlineable functions as
+ * part of the header
+ */
+#define INLINE extern ap_inline
+
+INLINE int ap_os_is_path_absolute(const char *file);
+
+#include "os-inline.c"
+#endif
+
+#ifndef INLINE
+/* Compiler does not support inline, so prototype the inlineable functions
+ * as normal
+ */
+extern int ap_os_is_path_absolute(const char *file);
+#endif
+
+/* Other ap_os_ routines not used by this platform */
+
+#define ap_os_is_filename_valid(f) (1)
+
+/* Sorry if this is ugly, but the include order doesn't allow me
+ * to use request_rec here... */
+struct request_rec;
+extern int ap_checkconv(struct request_rec *r);
+
+#ifdef FD_SETSIZE
+#undef FD_SETSIZE
+#endif
+
+#define FD_SETSIZE 2048
+
+#ifdef __FD_MASK
+#undef __FD_MASK
+#endif
+
+typedef long __FD_MASK;
+
+#ifdef __NBBY
+#undef __NBBY
+#endif
+
+#define __NBBY 8 /* number of bits in a byte */
+
+#ifdef __NFDBITS
+#undef __NFDBITS
+#endif
+
+#define __NFDBITS (sizeof(__FD_MASK) * __NBBY)
+
+#ifndef __howmany
+#define __howmany(x, y) (((x)+((y)-1))/(y))
+#endif
+
+typedef struct fd_set {
+ __FD_MASK fds_bits [__howmany(FD_SETSIZE, __NFDBITS)];
+} fd_set;
+
+#define FD_SET(n, p)((p)->fds_bits[(n)/__NFDBITS] |= (1 <<((n) % __NFDBITS)))
+
+#define FD_CLR(n, p)((p)->fds_bits[(n)/__NFDBITS] &= ~(1 << ((n) % __NFDBITS)))
+
+#define FD_ISSET(n, p)((p)->fds_bits[(n)/__NFDBITS] & (1 <<((n) % __NFDBITS)))
+
+#define FD_ZERO(p) memset((char *)(p), 0, sizeof(*(p)))
+
+
+#define SIGPIPE 13
+#define SIGQUIT 24
+#define SO_KEEPALIVE 0x0008
+
+/* TPF doesn't have, or need, tzset (it is used in mod_expires.c) */
+#define tzset()
+
+#include <stdarg.h>
+#undef va_list
+#undef va_start
+#undef va_arg
+#undef va_end
+
+typedef char *va_list;
+
+#define __va_promote(type) (((sizeof(type) + sizeof(int) - 1) \
+ / sizeof(int)) * sizeof(int))
+
+#define va_start(ap, last) (ap = ((char *)&(last) + __va_promote(last)))
+
+#define va_arg(ap, type) ((type *)(ap += sizeof(type) < sizeof(int) ? \
+ (abort(), 0) : sizeof(type)))[-1]
+
+#define va_end(ap)
+
+#endif /*! APACHE_OS_H*/