summaryrefslogtreecommitdiffstats
path: root/rubbos/app/httpd-2.0.64/os/tpf
diff options
context:
space:
mode:
Diffstat (limited to 'rubbos/app/httpd-2.0.64/os/tpf')
-rw-r--r--rubbos/app/httpd-2.0.64/os/tpf/TPFExport7
-rw-r--r--rubbos/app/httpd-2.0.64/os/tpf/ebcdic.c179
-rw-r--r--rubbos/app/httpd-2.0.64/os/tpf/ebcdic.h24
-rw-r--r--rubbos/app/httpd-2.0.64/os/tpf/os.c132
-rw-r--r--rubbos/app/httpd-2.0.64/os/tpf/os.h87
-rw-r--r--rubbos/app/httpd-2.0.64/os/tpf/samples/linkdll.jcl121
-rw-r--r--rubbos/app/httpd-2.0.64/os/tpf/samples/loadset.jcl58
7 files changed, 608 insertions, 0 deletions
diff --git a/rubbos/app/httpd-2.0.64/os/tpf/TPFExport b/rubbos/app/httpd-2.0.64/os/tpf/TPFExport
new file mode 100644
index 00000000..449ebf2f
--- /dev/null
+++ b/rubbos/app/httpd-2.0.64/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/rubbos/app/httpd-2.0.64/os/tpf/ebcdic.c b/rubbos/app/httpd-2.0.64/os/tpf/ebcdic.c
new file mode 100644
index 00000000..6774a31f
--- /dev/null
+++ b/rubbos/app/httpd-2.0.64/os/tpf/ebcdic.c
@@ -0,0 +1,179 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "ap_config.h"
+#if APR_CHARSET_EBCDIC
+#include "ebcdic.h"
+/*
+This code does basic character mapping for IBM's TPF operating system.
+It is a modified version of <Martin.Kraemer@Mch.SNI.De>'s code for
+the BS2000 (apache/src/os/bs2000/ebcdic.c).
+*/
+
+/*
+Bijective EBCDIC (character set IBM-1047) to US-ASCII table:
+This apr_table_t is bijective - there are no ambigous or duplicate characters.
+*/
+const unsigned char os_toascii_strictly[256] = {
+ 0x00, 0x01, 0x02, 0x03, 0x85, 0x09, 0x86, 0x7f, /* 00-0f: */
+ 0x87, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* ................ */
+ 0x10, 0x11, 0x12, 0x13, 0x8f, 0x0a, 0x08, 0x97, /* 10-1f: */
+ 0x18, 0x19, 0x9c, 0x9d, 0x1c, 0x1d, 0x1e, 0x1f, /* ................ */
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x92, 0x17, 0x1b, /* 20-2f: */
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07, /* ................ */
+ 0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04, /* 30-3f: */
+ 0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a, /* ................ */
+ 0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5, /* 40-4f: */
+ 0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, /* ...........<(+| */
+ 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef, /* 50-5f: */
+ 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e, /* &.........!$*);^ */
+ 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5, /* 60-6f: */
+ 0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, /* -/.........,%_>? */
+ 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, /* 70-7f: */
+ 0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, /* .........`:#@'=" */
+ 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 80-8f: */
+ 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, /* .abcdefghi...... */
+ 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, /* 90-9f: */
+ 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, /* .jklmnopqr...... */
+ 0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, /* a0-af: */
+ 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0x5b, 0xde, 0xae, /* .~stuvwxyz...[.. */
+ 0xac, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc, /* b0-bf: */
+ 0xbd, 0xbe, 0xdd, 0xa8, 0xaf, 0x5d, 0xb4, 0xd7, /* .............].. */
+ 0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* c0-cf: */
+ 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, /* {ABCDEFGHI...... */
+ 0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, /* d0-df: */
+ 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff, /* }JKLMNOPQR...... */
+ 0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, /* e0-ef: */
+ 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, /* \.STUVWXYZ...... */
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* f0-ff: */
+ 0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x9f /* 0123456789...... */
+};
+
+/*
+Server EBCDIC (character set IBM-1047) to US-ASCII table:
+This apr_table_t is a copy of the os_toascii_strictly bijective apr_table_t above.
+The only change is that hex 0a (\012 octal) is mapped to hex 0a
+(ASCII's line feed) instead of hex 8e. This is done because throughout
+Apache, protocol string definitions hardcode the linefeed as \012 (octal):
+"Content-Type: text/plain\015\012". Without this kludge all protocol
+string definitions would need to be changed from ...\012 to ...\025.
+*/
+const unsigned char os_toascii[256] = {
+ 0x00, 0x01, 0x02, 0x03, 0x85, 0x09, 0x86, 0x7f, /* 00-0f: */
+ 0x87, 0x8d, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* ................ */
+ 0x10, 0x11, 0x12, 0x13, 0x8f, 0x0a, 0x08, 0x97, /* 10-1f: */
+ 0x18, 0x19, 0x9c, 0x9d, 0x1c, 0x1d, 0x1e, 0x1f, /* ................ */
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x92, 0x17, 0x1b, /* 20-2f: */
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07, /* ................ */
+ 0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04, /* 30-3f: */
+ 0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a, /* ................ */
+ 0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5, /* 40-4f: */
+ 0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, /* ...........<(+| */
+ 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef, /* 50-5f: */
+ 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e, /* &.........!$*);^ */
+ 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5, /* 60-6f: */
+ 0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, /* -/.........,%_>? */
+ 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, /* 70-7f: */
+ 0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, /* .........`:#@'=" */
+ 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 80-8f: */
+ 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, /* .abcdefghi...... */
+ 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, /* 90-9f: */
+ 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, /* .jklmnopqr...... */
+ 0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, /* a0-af: */
+ 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0x5b, 0xde, 0xae, /* .~stuvwxyz...[.. */
+ 0xac, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc, /* b0-bf: */
+ 0xbd, 0xbe, 0xdd, 0xa8, 0xaf, 0x5d, 0xb4, 0xd7, /* .............].. */
+ 0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* c0-cf: */
+ 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, /* {ABCDEFGHI...... */
+ 0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, /* d0-df: */
+ 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff, /* }JKLMNOPQR...... */
+ 0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, /* e0-ef: */
+ 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, /* \.STUVWXYZ...... */
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* f0-ff: */
+ 0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x9f /* 0123456789...... */
+};
+
+/*
+The US-ASCII to EBCDIC (character set IBM-1047) table:
+This apr_table_t is bijective (no ambiguous or duplicate characters)
+*/
+const unsigned char os_toebcdic[256] = {
+ 0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, /* 00-0f: */
+ 0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* ................ */
+ 0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, /* 10-1f: */
+ 0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* ................ */
+ 0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, /* 20-2f: */
+ 0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* !"#$%&'()*+,-./ */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 30-3f: */
+ 0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0123456789:;<=>? */
+ 0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 40-4f: */
+ 0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* @ABCDEFGHIJKLMNO */
+ 0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, /* 50-5f: */
+ 0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d, /* PQRSTUVWXYZ[\]^_ */
+ 0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 60-6f: */
+ 0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* `abcdefghijklmno */
+ 0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, /* 70-7f: */
+ 0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, /* pqrstuvwxyz{|}~. */
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x04, 0x06, 0x08, /* 80-8f: */
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x14, /* ................ */
+ 0x30, 0x31, 0x25, 0x33, 0x34, 0x35, 0x36, 0x17, /* 90-9f: */
+ 0x38, 0x39, 0x3a, 0x3b, 0x1a, 0x1b, 0x3e, 0xff, /* ................ */
+ 0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5, /* a0-af: */
+ 0xbb, 0xb4, 0x9a, 0x8a, 0xb0, 0xca, 0xaf, 0xbc, /* ................ */
+ 0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, /* b0-bf: */
+ 0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* ................ */
+ 0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, /* c0-cf: */
+ 0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* ................ */
+ 0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, /* d0-df: */
+ 0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xba, 0xae, 0x59, /* ................ */
+ 0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, /* e0-ef: */
+ 0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* ................ */
+ 0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, /* f0-ff: */
+ 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf /* ................ */
+};
+
+/* Translate a memory block from EBCDIC (host charset) to ASCII (net charset)
+ * dest and srce may be identical, or separate memory blocks, but
+ * should not overlap.
+ */
+void
+ebcdic2ascii(void *dest, const void *srce, size_t count)
+{
+ unsigned char *udest = dest;
+ const unsigned char *usrce = srce;
+ while (count-- != 0) {
+ *udest++ = os_toascii[*usrce++];
+ }
+}
+void
+ebcdic2ascii_strictly(unsigned char *dest, const unsigned char *srce, size_t count)
+{
+ while (count-- != 0) {
+ *dest++ = os_toascii_strictly[*srce++];
+ }
+}
+void
+ascii2ebcdic(void *dest, const void *srce, size_t count)
+{
+ unsigned char *udest = dest;
+ const unsigned char *usrce = srce;
+
+ while (count-- != 0) {
+ *udest++ = os_toebcdic[*usrce++];
+ }
+}
+#endif /*APR_CHARSET_EBCDIC*/
+
diff --git a/rubbos/app/httpd-2.0.64/os/tpf/ebcdic.h b/rubbos/app/httpd-2.0.64/os/tpf/ebcdic.h
new file mode 100644
index 00000000..1af4825d
--- /dev/null
+++ b/rubbos/app/httpd-2.0.64/os/tpf/ebcdic.h
@@ -0,0 +1,24 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#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/rubbos/app/httpd-2.0.64/os/tpf/os.c b/rubbos/app/httpd-2.0.64/os/tpf/os.c
new file mode 100644
index 00000000..ff46b551
--- /dev/null
+++ b/rubbos/app/httpd-2.0.64/os/tpf/os.c
@@ -0,0 +1,132 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * 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"
+#include "scoreboard.h"
+#include "http_log.h"
+
+static FILE *sock_fp;
+
+#ifndef __PIPE_
+int pipe(int fildes[2])
+{
+ errno = ENOSYS;
+ return(-1);
+}
+#endif
+
+/* 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);
+}
+
+int execvp(const char *file, char *const argv[])
+{
+ errno = ENOSYS;
+ return(-1);
+}
+
+
+pid_t os_fork(server_rec *s, int slot)
+{
+ struct tpf_fork_input fork_input;
+ APACHE_TPF_INPUT input_parms;
+ int count;
+ listen_rec *lr;
+
+ fflush(stdin);
+ if (dup2(fileno(sock_fp), STDIN_FILENO) == -1)
+ ap_log_error(APLOG_MARK, APLOG_CRIT, errno, s,
+ "unable to replace stdin with sock device driver");
+ fflush(stdout);
+ if (dup2(fileno(sock_fp), STDOUT_FILENO) == -1)
+ ap_log_error(APLOG_MARK, APLOG_CRIT, errno, s,
+ "unable to replace stdout with sock device driver");
+ input_parms.generation = ap_my_generation;
+ input_parms.scoreboard_heap = ap_scoreboard_image;
+
+ lr = ap_listeners;
+ count = 0;
+ do {
+ input_parms.listeners[count] = lr->fd;
+ lr = lr->next;
+ count++;
+ } while(lr != ap_listeners);
+
+ input_parms.slot = slot;
+ input_parms.restart_time = ap_restart_time;
+ fork_input.ebw_data = &input_parms;
+ fork_input.program = ap_server_argv0;
+ fork_input.prog_type = TPF_FORK_NAME;
+ fork_input.istream = TPF_FORK_IS_BALANCE;
+ fork_input.ebw_data_length = sizeof(input_parms);
+ fork_input.parm_data = "-x";
+ return tpf_fork(&fork_input);
+}
+
+int os_check_server(char *server) {
+#ifndef USE_TPF_DAEMON
+ int rv;
+ int *current_acn;
+ if((rv = inetd_getServerStatus(server)) == INETD_SERVER_STATUS_INACTIVE)
+ return 1;
+ else {
+ current_acn = (int *)cinfc_fast(CINFC_CMMACNUM);
+ if(ecbp2()->ce2acn != *current_acn)
+ return 1;
+ }
+#endif
+ return 0;
+}
+
+AP_DECLARE(apr_status_t) ap_os_create_privileged_process(
+ const request_rec *r,
+ apr_proc_t *newproc, const char *progname,
+ const char * const *args,
+ const char * const *env,
+ apr_procattr_t *attr, apr_pool_t *p)
+{
+ return apr_proc_create(newproc, progname, args, env, attr, p);
+}
diff --git a/rubbos/app/httpd-2.0.64/os/tpf/os.h b/rubbos/app/httpd-2.0.64/os/tpf/os.h
new file mode 100644
index 00000000..b6cdcec2
--- /dev/null
+++ b/rubbos/app/httpd-2.0.64/os/tpf/os.h
@@ -0,0 +1,87 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#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 "apr.h"
+#include "ap_config.h"
+#include <strings.h>
+#ifndef __strings_h
+
+#define FD_SETSIZE 2048
+
+typedef long fd_mask;
+
+#define NBBY 8 /* number of bits in a byte */
+#define NFDBITS (sizeof(fd_mask) * NBBY)
+#define howmany(x, y) (((x)+((y)-1))/(y))
+
+typedef struct fd_set {
+ fd_mask fds_bits [howmany(FD_SETSIZE, NFDBITS)];
+} fd_set;
+
+#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)))
+#endif
+
+#ifdef FD_SET
+#undef FD_SET
+#define FD_SET(n, p) (0)
+#endif
+
+#include <i$netd.h>
+struct apache_input {
+ INETD_SERVER_INPUT inetd_server;
+ void *scoreboard_heap; /* scoreboard system heap address */
+ int scoreboard_fd; /* scoreboard file descriptor */
+ int slot; /* child number */
+ int generation; /* server generation number */
+ int listeners[10];
+ time_t restart_time;
+};
+
+typedef struct apache_input APACHE_TPF_INPUT;
+
+extern int tpf_child;
+
+struct server_rec;
+pid_t os_fork(struct server_rec *s, int slot);
+int os_check_server(char *server);
+
+extern char *ap_server_argv0;
+extern int scoreboard_fd;
+#include <signal.h>
+#ifndef SIGPIPE
+#define SIGPIPE 14
+#endif
+#ifdef NSIG
+#undef NSIG
+#endif
+#endif /*! APACHE_OS_H*/
diff --git a/rubbos/app/httpd-2.0.64/os/tpf/samples/linkdll.jcl b/rubbos/app/httpd-2.0.64/os/tpf/samples/linkdll.jcl
new file mode 100644
index 00000000..16524bf3
--- /dev/null
+++ b/rubbos/app/httpd-2.0.64/os/tpf/samples/linkdll.jcl
@@ -0,0 +1,121 @@
+//APACH JOB MSGLEVEL=(1,1),CLASS=A,MSGCLASS=A
+/*ROUTE PRINT XXXXXX.XXXXXX
+/*ROUTE PUNCH XXXXXX.XXXXXX
+/*NOTIFY XXXXXX.XXXXXX
+//CCLE JCLLIB ORDER=(SYS1.CBC.SCBCPRC,SYS1.CEE.SCEEPROC)
+//PRELINK EXEC EDCPL,COND.LKED=(0,NE),
+// PPARM='OMVS,DLLNAME(pppp)',
+// LREGSIZ='2048K',
+// LPARM='AMODE=31,RMODE=ANY,LIST,XREF'
+//PLKED.SYSLIB DD DISP=SHR,DSN=FSE0000.DEVP.STUB.OB
+// DD DISP=SHR,DSN=FSE0000.DEVP.CLIB.OB
+// DD DISP=SHR,DSN=ACP.CLIB.RLSE46.WEB
+// DD DISP=SHR,DSN=ACP.STUB.RLSE46.WEB
+// DD DISP=SHR,DSN=ACP.CLIB.RLSE40
+// DD DISP=SHR,DSN=ACP.STUB.RLSE40
+//PLKED.SYSDEFSD DD DSN=APA0000.DEVP.IMPORTS.DSD(ppppvv),DISP=SHR
+//PLKED.DSD DD DSN=APA0000.DEVP.IMPORTS.DSD,DISP=SHR
+//PLKED.OBJLIB DD DISP=SHR,DSN=FSE0000.DEVP.TEST.OB
+// DD DISP=SHR,DSN=ACP.OBJ.RLSE46.WEB
+// DD DISP=SHR,DSN=ACP.OBJ.INTG98.NBS
+// DD DISP=SHR,DSN=ACP.MAIN.SYST.OBBSS
+// DD DISP=SHR,DSN=ACP.DF.MAIN.SYST.OBBSS
+// DD DISP=SHR,DSN=ACP.OBJ.RLSE40.BSS
+//PLKED.OBJ1 DD PATH='/usr/local/apache/src/ap/ap_cpystrn.o'
+//PLKED.OBJ2 DD PATH='/usr/local/apache/src/ap/ap_execve.o'
+//PLKED.OBJ3 DD PATH='/usr/local/apache/src/ap/ap_signal.o'
+//PLKED.OBJ4 DD PATH='/usr/local/apache/src/ap/ap_slack.o'
+//PLKED.OBJ5 DD PATH='/usr/local/apache/src/ap/ap_snprintf.o'
+//PLKED.OBJ6 DD PATH='/usr/local/apache/src/ap/ap_strings.o'
+//PLKED.OBJ7 DD PATH='/usr/local/apache/src/os/tpf/ebcdic.o'
+//PLKED.OBJ8 DD PATH='/usr/local/apache/src/os/tpf/os.o'
+//PLKED.OBJ9 DD PATH='/usr/local/apache/src/os/tpf/os-inline.o'
+//PLKED.OBJ10 DD PATH='/usr/local/apache/src/regex/regcomp.o'
+//PLKED.OBJ11 DD PATH='/usr/local/apache/src/regex/regerror.o'
+//PLKED.OBJ12 DD PATH='/usr/local/apache/src/regex/regexec.o'
+//PLKED.OBJ13 DD PATH='/usr/local/apache/src/regex/regfree.o'
+//PLKED.OBJ14 DD PATH='/usr/local/apache/src/main/alloc.o'
+//PLKED.OBJ15 DD PATH='/usr/local/apache/src/main/buff.o'
+//PLKED.OBJ16 DD PATH='/usr/local/apache/src/main/fnmatch.o'
+//PLKED.OBJ17 DD PATH='/usr/local/apache/src/main/http_config.o'
+//PLKED.OBJ18 DD PATH='/usr/local/apache/src/main/http_core.o'
+//PLKED.OBJ19 DD PATH='/usr/local/apache/src/main/http_log.o'
+//PLKED.OBJ20 DD PATH='/usr/local/apache/src/main/http_main.o'
+//PLKED.OBJ21 DD PATH='/usr/local/apache/src/main/http_protocol.o'
+//PLKED.OBJ22 DD PATH='/usr/local/apache/src/main/http_request.o'
+//PLKED.OBJ23 DD PATH='/usr/local/apache/src/main/http_vhost.o'
+//PLKED.OBJ24 DD PATH='/usr/local/apache/src/main/md5c.o'
+//PLKED.OBJ25 DD PATH='/usr/local/apache/src/main/rfc1413.o'
+//PLKED.OBJ26 DD PATH='/usr/local/apache/src/main/util.o'
+//PLKED.OBJ27 DD PATH='/usr/local/apache/src/main/util_date.o'
+//PLKED.OBJ28 DD PATH='/usr/local/apache/src/main/util_md5.o'
+//PLKED.OBJ29 DD PATH='/usr/local/apache/src/main/util_script.o'
+//PLKED.OBJ30 DD PATH='/usr/local/apache/src/main/util_uri.o'
+//PLKED.OBJ31 DD PATH='/usr/local/apache/src/modules.o'
+//PLKED.OBJ32 DD PATH='/usr/local/apache/src/buildmark.o'
+//PLKED.OBJ33 DD PATH='/usr/local/apache/src/modules/standard/mod_auto\
+// index.o'
+//PLKED.OBJ34 DD PATH='/usr/local/apache/src/modules/standard/mod_dir.\
+// o'
+//PLKED.OBJ35 DD PATH='/usr/local/apache/src/modules/standard/mod_mime\
+// .o'
+//PLKED.OBJ36 DD PATH='/usr/local/apache/src/modules/standard/mod_sete\
+// nvif.o'
+//PLKED.OBJ37 DD PATH='/usr/local/apache/src/modules/standard/mod_alia\
+// s.o'
+//PLKED.OBJ38 DD PATH='/usr/local/apache/src/modules/standard/mod_acce\
+// ss.o'
+//PLKED.OBJ39 DD PATH='/usr/local/apache/src/modules/standard/mod_user\
+// dir.o'
+//PLKED.OBJ40 DD PATH='/usr/local/apache/src/modules/standard/mod_spel\
+// ing.o'
+//PLKED.OBJ41 DD PATH='/usr/local/apache/src/modules/standard/mod_nego\
+// tiation.o'
+//PLKED.SYSIN DD *
+ ORDER @@DLMHDR
+ INCLUDE OBJLIB(CSTRTD40)
+ INCLUDE OBJ1
+ INCLUDE OBJ2
+ INCLUDE OBJ3
+ INCLUDE OBJ4
+ INCLUDE OBJ5
+ INCLUDE OBJ6
+ INCLUDE OBJ7
+ INCLUDE OBJ8
+ INCLUDE OBJ9
+ INCLUDE OBJ10
+ INCLUDE OBJ11
+ INCLUDE OBJ12
+ INCLUDE OBJ13
+ INCLUDE OBJ14
+ INCLUDE OBJ15
+ INCLUDE OBJ16
+ INCLUDE OBJ17
+ INCLUDE OBJ18
+ INCLUDE OBJ19
+ INCLUDE OBJ20
+ INCLUDE OBJ21
+ INCLUDE OBJ22
+ INCLUDE OBJ23
+ INCLUDE OBJ24
+ INCLUDE OBJ25
+ INCLUDE OBJ26
+ INCLUDE OBJ27
+ INCLUDE OBJ28
+ INCLUDE OBJ29
+ INCLUDE OBJ30
+ INCLUDE OBJ31
+ INCLUDE OBJ32
+ INCLUDE OBJ33
+ INCLUDE OBJ34
+ INCLUDE OBJ35
+ INCLUDE OBJ36
+ INCLUDE OBJ37
+ INCLUDE OBJ38
+ INCLUDE OBJ39
+ INCLUDE OBJ40
+ INCLUDE OBJ41
+/*
+//*** WARNING *** NEVER change .LK to .OB in SYSLMOD!!!
+//LKED.SYSLMOD DD DISP=OLD,DSN=xxxxxx.xxxx(ppppvv)
+//
diff --git a/rubbos/app/httpd-2.0.64/os/tpf/samples/loadset.jcl b/rubbos/app/httpd-2.0.64/os/tpf/samples/loadset.jcl
new file mode 100644
index 00000000..405af828
--- /dev/null
+++ b/rubbos/app/httpd-2.0.64/os/tpf/samples/loadset.jcl
@@ -0,0 +1,58 @@
+//OLDRWEB JOB MSGLEVEL=1,CLASS=A,MSGCLASS=S
+//JOBCAT DD DSN=ICFCAT.ESAWK2,DISP=SHR
+/*ROUTE PRINT xxxxxx.xxxxxxx
+/*ROUTE PUNCH xxxxxx.xxxxxxx
+//TLDR EXEC PGM=TPFLDRCA,REGION=8M,
+// PARM='OLDR,SYS=ACP,CLMSIZE=8000000'
+//STEPLIB DD DSN=ACP.LINK.RLSE46.WEB,DISP=SHR
+// DD DSN=ACP.LINK.RLSE40.BSS,DISP=SHR
+// DD DSN=VIS0000.DEVP.TEST.LK,DISP=SHR
+// DD DSN=SYS1.CEE.SCEERUN,DISP=SHR
+//SALTB DD DSN=ACP.SALTBL.RLSE46.WEB,DISP=SHR
+// DD DSN=ACP.SALTBL.INTG46.WEB,DISP=SHR
+//OBJLIB DD DSN=FSE0000.DEVP.TEST.OB,DISP=SHR
+// DD DSN=APA0000.DEVP.TEST.OB,DISP=SHR
+// DD DSN=ACP.DRVE.TEST.OB,DISP=SHR
+// DD DSN=ACP.OBJ.RLSE46.WEB,DISP=SHR
+// DD DSN=ACP.OBJ.INTG36.DRV,DISP=SHR
+// DD DSN=ACP.OBJ.INTG46.WEB,DISP=SHR
+// DD DSN=ACP.OBJ.INTG40.BSS,DISP=SHR
+//LOADMOD DD DSN=FSE0000.DEVP.TEST.LK,DISP=SHR
+// DD DSN=APA0000.DEVP.TEST.LK,DISP=SHR
+// DD DSN=CWEISS.LINK,DISP=SHR
+// DD DSN=ACP.DRVE.TEST.LK,DISP=SHR
+// DD DSN=ACP.LINK.RLSE46.WEB,DISP=SHR
+// DD DSN=ACP.LINK.INTG98.NBS,DISP=SHR
+// DD DSN=ACP.LINK.INTG46.WEB,DISP=SHR
+// DD DSN=ACP.LINK.INTG36.DRV,DISP=SHR
+// DD DSN=ACP.LINK.INTG40.BSS,DISP=SHR
+//LOADSUM DD DSN=&&LOADSUM,DISP=(NEW,PASS),UNIT=SYSDA,
+// LRECL=133,SPACE=(TRK,(10,10)),RECFM=FBA
+//CPRTEMP DD UNIT=SYSDA,
+// DSN=&&CPRTEMP,SPACE=(TRK,(100,20)),
+// DCB=(RECFM=FB,BLKSIZE=4095,LRECL=4095),
+// DISP=(NEW,DELETE)
+//PROGTEMP DD UNIT=SYSDA,
+// DSN=&&PRTEMP,SPACE=(TRK,(100,20)),
+// DCB=(RECFM=FB,BLKSIZE=4095,LRECL=4095),
+// DISP=(NEW,DELETE)
+//OUTPUT DD DSN=&&VRDROUT,DISP=(NEW,PASS),UNIT=SYSDA,
+// DCB=(RECFM=F,BLKSIZE=4095,LRECL=4095)
+//SYSUDUMP DD DUMMY
+//SYSABEND DD DUMMY
+//SYSOUT DD SYSOUT=A
+//SYSPRINT DD SYSOUT=A
+//PRINTER DD SYSOUT=A
+//CEEDUMP DD SYSOUT=A
+//SYSIN DD *
+SYSID=BSS
+PATVERS=NONE
+SALVERS=40
+LOADER LOADSET lllllll
+LOADER CALL PROG ppppvv
+/*
+//TRANSMIT EXEC PGM=IKJEFT01,
+// PARM='TRANSMIT xxxxxx.xxxxxx DDNAME(SYSTSIN) NOLOG NONOTIFY SEQ'
+//SYSTSIN DD UNIT=SYSDA,
+// DSN=&&VRDROUT,DISP=(OLD,DELETE)
+//SYSTSPRT DD DUMMY