summaryrefslogtreecommitdiff
path: root/contrib/ports
diff options
context:
space:
mode:
authorEduardo Chappa <echappa@gmx.com>2013-02-03 00:59:38 -0700
committerEduardo Chappa <echappa@gmx.com>2013-02-03 00:59:38 -0700
commit094ca96844842928810f14844413109fc6cdd890 (patch)
treee60efbb980f38ba9308ccb4fb2b77b87bbc115f3 /contrib/ports
downloadalpine-094ca96844842928810f14844413109fc6cdd890.tar.xz
Initial Alpine Version
Diffstat (limited to 'contrib/ports')
-rw-r--r--contrib/ports/aos/README20
-rw-r--r--contrib/ports/aos/aos.diff125
-rw-r--r--contrib/ports/sequent_ptx_4.4.6188
-rw-r--r--contrib/ports/vms/readme.1st9
-rw-r--r--contrib/ports/vms/readme.vms102
-rw-r--r--contrib/ports/vms/vms_link.opt1
-rw-r--r--contrib/ports/vms/vms_multinet_link.opt1
-rw-r--r--contrib/ports/vms/vms_netlib_link.opt1
-rw-r--r--contrib/ports/vms/vmsbuild.com31
-rw-r--r--contrib/ports/vms/vmsbuild_cclient.com103
10 files changed, 581 insertions, 0 deletions
diff --git a/contrib/ports/aos/README b/contrib/ports/aos/README
new file mode 100644
index 00000000..6503853f
--- /dev/null
+++ b/contrib/ports/aos/README
@@ -0,0 +1,20 @@
+From tenser@snafu.eec.psu.edu Tue May 7 10:14:10 1996
+Date: Tue, 16 Apr 1996 14:57:45 -0000
+From: Dan Cross <tenser@snafu.eec.psu.edu>
+To: pine@cac.washington.edu
+Subject: Pine patches for the IBM RT (Pine 3.93, 4.3BSD)
+
+Hi there!
+ I ported pine 3.93 to the IBM RT running AOS using the BSD port. (AOS
+is IBM's port of 4.3BSD to the RT architecture.) There were only minor
+changes that had to be made to the source to get it running under AOS, so
+I just stuck with the BSD port. (It seemed like a waste to change, since
+there was so much duplication between the BSD port and an AOS port.)
+ I wanted to send back the patches to you all to get them re-integrated
+into the main distribution so that the RT becomes a supported architecture.
+So, without further inane babble by myself, here they are. Thanks!
+
+ - Dan C.
+
+(ps- if you would like my binaries to put up for FTP, let me know and I'll
+pack them up for ya'll!)
diff --git a/contrib/ports/aos/aos.diff b/contrib/ports/aos/aos.diff
new file mode 100644
index 00000000..a8858529
--- /dev/null
+++ b/contrib/ports/aos/aos.diff
@@ -0,0 +1,125 @@
+*** os_bsd.c.orig Mon Apr 15 17:46:29 1996
+--- pine3.93/imap/non-ANSI/c-client/os_bsd.c Mon Apr 15 14:02:14 1996
+***************
+*** 67,72 ****
+--- 67,74 ----
+ #include "memmove.c"
+ #include "strerror.c"
+ #include "strstr.c"
++ #ifndef ibm032
+ #include "strtol.c"
++ #endif /* !ibm032 */
+ #include "strtoul.c"
+ #include "tz_bsd.c"
+*** os_bsd.h.orig Mon Apr 15 17:46:31 1996
+--- pine3.93/imap/non-ANSI/c-client/os_bsd.h Mon Apr 15 13:45:22 1996
+***************
+*** 40,46 ****
+--- 40,48 ----
+ #include <fcntl.h>
+ #include <syslog.h>
+ #include <sys/file.h>
++ #ifndef ibm032
+ #include <machine/endian.h> /* needed for htons() prototypes */
++ #endif /* !ibm032 */
+
+
+ char *getenv ();
+*** tz_bsd.c.orig Mon Apr 15 17:46:32 1996
+--- pine3.93/imap/non-ANSI/c-client/tz_bsd.c Mon Apr 15 16:22:38 1996
+***************
+*** 42,47 ****
+--- 42,61 ----
+ char *s;
+ void *t;
+ {
++ #ifndef ibm032
+ /* append timezone from tm struct */
+ sprintf (s + strlen (s)," (%s)",((struct tm *) t)->tm_zone);
++ #else
++ struct timeval tv;
++ struct timezone tz;
++
++ (void)memset((char *)&tv, 0, sizeof(tv));
++ (void)memset((char *)&tz, 0, sizeof(tz));
++
++ if (gettimeofday(&tv, &tz) < 0)
++ return; /* Silent error. */
++
++ (void)sprintf(s + strlen(s), " (%s)",
++ timezone(tz.tz_minuteswest, tz.tz_dsttime));
++ #endif /* !ibm032 */
+ }
+*** other.c.orig Mon Apr 15 17:47:02 1996
+--- pine3.93/pine/other.c Mon Apr 15 15:18:02 1996
+***************
+*** 353,359 ****
+ pbuf.exittest = sigedit_exit_for_pico;
+ pbuf.upload = (ps_global->VAR_UPLOAD_CMD
+ && ps_global->VAR_UPLOAD_CMD[0])
+! ? upload_msg_to_pico : NULL;
+ pbuf.keybinit = init_keyboard;
+ pbuf.helper = helper;
+ pbuf.resize = resize_for_pico;
+--- 353,359 ----
+ pbuf.exittest = sigedit_exit_for_pico;
+ pbuf.upload = (ps_global->VAR_UPLOAD_CMD
+ && ps_global->VAR_UPLOAD_CMD[0])
+! ? (int(*)())upload_msg_to_pico : NULL;
+ pbuf.keybinit = init_keyboard;
+ pbuf.helper = helper;
+ pbuf.resize = resize_for_pico;
+*** send.c.orig Mon Apr 15 17:47:12 1996
+--- pine3.93/pine/send.c Mon Apr 15 15:36:46 1996
+***************
+*** 1656,1662 ****
+ #else
+ pbuf.upload = (ps_global->VAR_UPLOAD_CMD
+ && ps_global->VAR_UPLOAD_CMD[0])
+! ? upload_msg_to_pico : NULL;
+ #endif
+
+ pbuf.raw_io = Raw;
+--- 1656,1662 ----
+ #else
+ pbuf.upload = (ps_global->VAR_UPLOAD_CMD
+ && ps_global->VAR_UPLOAD_CMD[0])
+! ? (int (*)())upload_msg_to_pico : NULL;
+ #endif
+
+ pbuf.raw_io = Raw;
+*** tempfile.orig Mon Apr 15 17:48:22 1996
+--- pine3.93/pine/osdep/tempfile Mon Apr 15 15:39:52 1996
+***************
+*** 2,11 ****
+--- 2,31 ----
+ Create a temporary file, the name of which we don't care about
+ and that goes away when it is closed. Just like ANSI C tmpfile.
+ ----*/
++ #ifdef ibm032
++ #define FILENAMESIZE 20
++ #define FILETMPLATE "/tmp/ptmpXXXXXX"
++ #endif /* ibm032 */
++
+ FILE *
+ create_tmpfile()
+ {
++ #ifndef ibm032
+ return(tmpfile());
++ #else
++ char buf[FILENAMESIZE];
++ int fd;
++
++ (void)memset(buf, 0, FILENAMESIZE);
++ (void)strcpy(buf, FILETMPLATE);
++
++ if ((fd = mkstemp(buf)) < 0)
++ return(NULL);
++
++ (void)unlink(buf);
++
++ return(fdopen(fd, "w+"));
++ #endif /* !ibm032 */
+ }
+
+
diff --git a/contrib/ports/sequent_ptx_4.4.6 b/contrib/ports/sequent_ptx_4.4.6
new file mode 100644
index 00000000..064ed460
--- /dev/null
+++ b/contrib/ports/sequent_ptx_4.4.6
@@ -0,0 +1,188 @@
+
+Larry Mascarenhas <lmascare@cscinfo.com> found he had to make some changesx
+to get Pine 4.21 to compile on Sequent ptx v4.4.6. We didn't have time to
+integrate these into the distribution. He was kind enough to send us the
+diffs of what he had to do to make it work.
+
+
+
+diff -cr pine.dist/imap/src/osdep/unix/Makefile pine4.20/imap/src/osdep/unix/Makefile
+*** pine.dist/imap/src/osdep/unix/Makefile Thu Sep 30 01:54:13 1999
+--- pine4.20/imap/src/osdep/unix/Makefile Fri Nov 12 15:26:40 1999
+***************
+*** 418,424 ****
+ MAILSPOOL=/usr/mail \
+ RSHPATH=/usr/bin/resh \
+ BASECFLAGS="-Wc,-O3 -Wc,-seq -Dprivate=PRIVATE -DNFSKLUDGE" \
+! BASELDFLAGS="-lseq -lsec -lsocket -linet -lnsl -lgen" \
+ RANLIB=true
+
+ pyr: # Pyramid
+--- 418,424 ----
+ MAILSPOOL=/usr/mail \
+ RSHPATH=/usr/bin/resh \
+ BASECFLAGS="-Wc,-O3 -Wc,-seq -Dprivate=PRIVATE -DNFSKLUDGE" \
+! BASELDFLAGS="-lseq -lsec -lsocket -lnsl -lgen" \
+ RANLIB=true
+
+ pyr: # Pyramid
+diff -cr pine.dist/pico/makefile.ptx pine4.20/pico/makefile.ptx
+*** pine.dist/pico/makefile.ptx Mon Jun 29 18:23:52 1998
+--- pine4.20/pico/makefile.ptx Fri Nov 12 15:37:28 1999
+***************
+*** 42,48 ****
+ LIBARGS= ru
+ RANLIB= true
+
+! LIBS= $(EXTRALIBES) -ltermlib -linet
+
+ OFILES= attach.o basic.o bind.o browse.o buffer.o \
+ composer.o display.o file.o fileio.o line.o pico_os.o \
+--- 42,48 ----
+ LIBARGS= ru
+ RANLIB= true
+
+! LIBS= $(EXTRALIBES) -ltermlib -lsocket -l nsl
+
+ OFILES= attach.o basic.o bind.o browse.o buffer.o \
+ composer.o display.o file.o fileio.o line.o pico_os.o \
+diff -cr pine.dist/pine/cmplhelp.sh pine4.20/pine/cmplhelp.sh
+*** pine.dist/pine/cmplhelp.sh Fri Feb 20 19:50:38 1998
+--- pine4.20/pine/cmplhelp.sh Fri Nov 12 15:16:17 1999
+***************
+*** 49,55 ****
+ s/-sed-backslash-quote-/\\"/g
+ ' |
+
+! awk 'BEGIN {in_text = 0;
+ count = 0;
+ printf("#include <stdio.h>\n#include \"headers.h\"\n\n\n");
+ }
+--- 49,55 ----
+ s/-sed-backslash-quote-/\\"/g
+ ' |
+
+! nawk 'BEGIN {in_text = 0;
+ count = 0;
+ printf("#include <stdio.h>\n#include \"headers.h\"\n\n\n");
+ }
+diff -cr pine.dist/pine/cmplhlp2.sh pine4.20/pine/cmplhlp2.sh
+*** pine.dist/pine/cmplhlp2.sh Wed Feb 18 20:46:52 1998
+--- pine4.20/pine/cmplhlp2.sh Fri Nov 12 15:16:28 1999
+***************
+*** 44,50 ****
+ #
+
+
+! awk ' BEGIN { printf("\n\n\t\t/*\n");
+ printf("\t\t * AUTMATICALLY GENERATED FILE!\n");
+ printf("\t\t * DO NOT EDIT!!\n\t\t */\n\n\n");
+ printf("#define\tHelpType\tchar **\n");
+--- 44,50 ----
+ #
+
+
+! nawk ' BEGIN { printf("\n\n\t\t/*\n");
+ printf("\t\t * AUTMATICALLY GENERATED FILE!\n");
+ printf("\t\t * DO NOT EDIT!!\n\t\t */\n\n\n");
+ printf("#define\tHelpType\tchar **\n");
+diff -cr pine.dist/pine/mailtrfc.sh pine4.20/pine/mailtrfc.sh
+*** pine.dist/pine/mailtrfc.sh Fri Mar 15 02:14:43 1996
+--- pine4.20/pine/mailtrfc.sh Fri Nov 12 15:18:35 1999
+***************
+*** 47,53 ****
+
+
+
+! org=`awk '/^domain/ {print $2}' < /etc/resolv.conf`
+ domain=`echo $org | sed -e 's/^[^.]*\.//'`
+ host=`hostname`".$org"
+
+--- 47,53 ----
+
+
+
+! org=`nawk '/^domain/ {print $2}' < /etc/resolv.conf`
+ domain=`echo $org | sed -e 's/^[^.]*\.//'`
+ host=`hostname`".$org"
+
+***************
+*** 56,62 ****
+ echo "Hostname: $host"
+
+ sed -n -e '/message-id/s/^.*</</p' |
+! awk 'BEGIN {mailers[0] = "Other";
+ mailers[1] = "Pine";
+ mailers[2] = "MailManager";
+ mailers[3] = "sendmail";
+--- 56,62 ----
+ echo "Hostname: $host"
+
+ sed -n -e '/message-id/s/^.*</</p' |
+! nawk 'BEGIN {mailers[0] = "Other";
+ mailers[1] = "Pine";
+ mailers[2] = "MailManager";
+ mailers[3] = "sendmail";
+***************
+*** 115,121 ****
+
+
+ echo $host $org $domain | \
+! awk '{printf(" %.17s %.11s %.11s Off Campus Total\n", $1, $2, $3)}'
+ egrep -v 'TOTAL|----|^-->' /tmp/syslogx.$$ | sort +0.60rn
+ egrep 'TOTAL|----' /tmp/syslogx.$$
+ grep '^-->' /tmp/syslogx.$$ | sed -e 's/-->//' > other-traffic
+--- 115,121 ----
+
+
+ echo $host $org $domain | \
+! nawk '{printf(" %.17s %.11s %.11s Off Campus Total\n", $1, $2, $3)}'
+ egrep -v 'TOTAL|----|^-->' /tmp/syslogx.$$ | sort +0.60rn
+ egrep 'TOTAL|----' /tmp/syslogx.$$
+ grep '^-->' /tmp/syslogx.$$ | sed -e 's/-->//' > other-traffic
+diff -cr pine.dist/pine/send.c pine4.20/pine/send.c
+*** pine.dist/pine/send.c Wed Oct 6 16:18:27 1999
+--- pine4.20/pine/send.c Mon Nov 15 12:46:22 1999
+***************
+*** 50,56 ****
+ #include "../c-client/smtp.h"
+ #include "../c-client/nntp.h"
+
+-
+ #ifndef TCPSTREAM
+ #define TCPSTREAM void
+ #endif
+--- 50,55 ----
+***************
+*** 3933,3940 ****
+ if((ps_global->post->pid = fork()) == 0){
+ /*
+ * Put us in new process group...
+- */
+ setpgrp(0, ps_global->post->pid);
+
+ /* BUG: should fix argv[0] to indicate what we're up to */
+
+--- 3932,3940 ----
+ if((ps_global->post->pid = fork()) == 0){
+ /*
+ * Put us in new process group...
+ setpgrp(0, ps_global->post->pid);
++ */
++ setpgrp();
+
+ /* BUG: should fix argv[0] to indicate what we're up to */
+
+diff -cr pine.dist/pine/signals.c pine4.20/pine/signals.c
+*** pine.dist/pine/signals.c Tue Apr 20 20:25:18 1999
+--- pine4.20/pine/signals.c Mon Nov 15 12:46:59 1999
+***************
+*** 53,58 ****
+--- 53,59 ----
+ ====*/
+
+ #include "headers.h"
++ #undef sigmask
+
+ /*
+ * call used by TERM and HUP handlers to quickly close streams
diff --git a/contrib/ports/vms/readme.1st b/contrib/ports/vms/readme.1st
new file mode 100644
index 00000000..42652494
--- /dev/null
+++ b/contrib/ports/vms/readme.1st
@@ -0,0 +1,9 @@
+
+To build the VMS version of pine, just move the VMSBUILD.COM command
+script into the top level pine directory. If the script fails moving
+the pine-specific c-client build script (VMSBUILD_CCLIENT.COM) into
+place, just copy it by hand into the C-CLIENT.DIR it creates. This
+RENAME was added just prior to release by the pine team and was not
+part of the contributed port.
+
+- The Pine Team
diff --git a/contrib/ports/vms/readme.vms b/contrib/ports/vms/readme.vms
new file mode 100644
index 00000000..da14481f
--- /dev/null
+++ b/contrib/ports/vms/readme.vms
@@ -0,0 +1,102 @@
+ VMS readme for PINE/C-CLEINT/PICO
+ ========================
+
+Building
+========
+
+ There are three executables:
+Pico/PICO.EXE: This is the stand-alone version of the editor.
+C-Client/MTEST: Testing program for debugging purposes.
+Pine/PINE: The pine...
+
+In order to build SET DEF into the top directory (i.e. the one above PINE.DIR,
+PICO.DIR, etc.) and then @VMSBUILD. It will rename the C-CLient directory and
+then compile Pico, C-Client and Pine.
+
+Optional parameters to the VMSBUILD command:
+
+NETLIB - Use the Netlib library. It must be preloaded into [.NETLIB]NETLIB.OLB
+MULTINET - Call Multinet's transport directly.
+
+If more than one option is used - separate them with coma and no spaces.
+
+There are a few warnnings during the link - ignore them...
+On VAX we have to link the objects themselves and can't use libraries since the
+linker/librarian lose the global variables; on AXP it is ok...
+
+
+Using
+=====
+ All the user needs is the PINE.EXE; Pine reads the mail from the user's
+VMS/MAIL files and send outgoing mail either via mail routines using some
+foreign protocol or via direct SMTP to some SMTP server (I preffer this
+metod). You use the latter by defining SMTP-SERVER field with some host.
+If you do not set it you must define PINE_MAIL_PROTOCOL to the prefix of
+the foreign protocol used. For example, if you use SMTP% you have to define
+it to SMTP.
+ The global PINE configuration file (if needed) is located at UTIL$:PINE.CONF;
+if you want to recompile it with a different name then modify PINE/OS.H;
+
+
+Why TcpIp communication is needed?
+==================================
+ It is not really needed, but helps much. It is needed in three places:
+1. Sending mail: You can either send mail using the xxx% mechanism by defning
+ PINE_MAIL_PROTOCOL; in this case no TcpIp is needed.
+ you can use another mechanism: Don't define the above but set some SMTP
+ server node name in PINE.CONF or .PINERC. In this case you need some
+ SMTP package.
+2. PINE can read NEWS via the NNTP protocol which runs over TcpIp...
+3. Remote nodes (usually PC) can access the IMAP daemon and PINE can access
+ remote IMAP servers using TcpIp.
+
+
+Restrictions
+============
+1. In order to not modify the source too much the handling of the special
+ INBOX folder was not modified. Hence, it always try to open the (empty)
+ INBOX folder instead of NEWMAIL.
+ It is possible to define in the system's wide PINE.CONF that
+ inbox-path=NEWMAIL. In this case NEWMAIL will be opened when PINE is
+ started. However, the user must not then switch to another folder as long
+ as NEWMAIL has items.
+2. WASTEBASKET folder is not used.
+3. .PINERC and .ADDRBOOK are fixed to the user's login directory and cannot
+ be defined to be elsewhere (the definition is ignored).
+4-100. Probably exists and I forgot to mention :-)
+
+
+IMAPD
+=====
+ IMAPD of version 3.89 is available with the old Pine VMS port from
+VMS.HUJI.AC.IL; the current version of IMAPD will be ported soon.
+
+
+NETLIB
+======
+ NETLIB can be obtained from PUBLIC.TGV.COM:/MADISON/NETLIB. NETLIB supports
+all the common TcpIp packages like Multinet, UCX, Fusion, Wollongong, etc.
+
+
+Suggested PINE.CONF file.
+=========================
+here is the PINE.CONF file we use here:
+
+# Our fully-qualified machine name:
+user-domain=vms.huji.ac.il
+
+# Where to connect to send outputgoing mail.
+smtp-server=vms.huji.ac.il
+
+# Which viewer to see GIF/JPEG/etc.
+image-viewer=xv
+
+# Which folder will be opened automatically when entering PINE. See note above.
+inbox-path=NEWMAIL
+
+
+Notes:
+=====
+1. Due to the readonly definition in the source files we use an external
+ #define to redefine it to something else. Due to that CTYPE.H fails, so
+ we use a private copy of it.
diff --git a/contrib/ports/vms/vms_link.opt b/contrib/ports/vms/vms_link.opt
new file mode 100644
index 00000000..0f454490
--- /dev/null
+++ b/contrib/ports/vms/vms_link.opt
@@ -0,0 +1 @@
+SYS$SHARE:VAXCRTL/SHARE
diff --git a/contrib/ports/vms/vms_multinet_link.opt b/contrib/ports/vms/vms_multinet_link.opt
new file mode 100644
index 00000000..5eb99104
--- /dev/null
+++ b/contrib/ports/vms/vms_multinet_link.opt
@@ -0,0 +1 @@
+MULTINET:MULTINET_SOCKET_LIBRARY/SHARE
diff --git a/contrib/ports/vms/vms_netlib_link.opt b/contrib/ports/vms/vms_netlib_link.opt
new file mode 100644
index 00000000..4bec72f1
--- /dev/null
+++ b/contrib/ports/vms/vms_netlib_link.opt
@@ -0,0 +1 @@
+netlib_shr/share
diff --git a/contrib/ports/vms/vmsbuild.com b/contrib/ports/vms/vmsbuild.com
new file mode 100644
index 00000000..e3f58ebc
--- /dev/null
+++ b/contrib/ports/vms/vmsbuild.com
@@ -0,0 +1,31 @@
+$! VMSBUILD.COM - Calls the subdirectories VMSBUILD.
+$! Can be called with options separated with commas and no spaces. The
+$! options are:
+$!
+$! NETLIB - For linking with Netlib. NETLIB.OLB must be pre-loaded into
+$! [.NETLIb]NETLIB.OLB
+$! MULTINET - Used with Multinet transport (no NETLIB is used).
+$! HEBREW - Build the Hebrew version.
+$!
+$!
+$ IF F$EXISTS("[.IMAP.ANSI]C-CLIENT.DIR") THEN RENAME [.IMAP.ANSI]C-CLIENT.DIR [];
+$ IF F$EXISTS("[.CONTRIB.VMS]VMSBUILD_CCLIENT.COM") THEN RENAME [.CONTRIB.VMS]VMSBUILD_CCLIENT.COM [.C-CLIENT]VMSBUILD.COM;
+$ SET DEF [.PICO]
+$@VMSBUILD 'P1'
+$ SET DEF [-.C-CLIENT]
+$@VMSBUILD 'P1'
+$ SET DEF [-.PINE]
+$@VMSBUILD 'P1'
+$ SET DEF [-]
+$!
+$ TYPE SYS$INPUT:
+Executables can be found in:
+
+PICO/PICO.EXE - The stand-alone editor (not needed).
+C-CLIENT/MTEST.EXE - Interactive testing program (not needed).
+C-CLIENT/IMAPD.EXE - the IMAP daemon. Should be copied elsewhere and defined
+ in the INETD.CONF file or equivalent.
+PINE/PINE.EXE - What you waited for...
+
+$!
+$ EXIT
diff --git a/contrib/ports/vms/vmsbuild_cclient.com b/contrib/ports/vms/vmsbuild_cclient.com
new file mode 100644
index 00000000..7d4c0a20
--- /dev/null
+++ b/contrib/ports/vms/vmsbuild_cclient.com
@@ -0,0 +1,103 @@
+$! Program: Operating-system dependent routines -- VMS version
+$!
+$! Author: Yehavi Bourvine, The Hebrew University of Jerusalem.
+$! Internet: Yehavi@VMS.huji.ac.il
+$!
+$! Date: 2 August 1994
+$! Last Edited: 2 August 1994
+$!
+$! Copyright 1994 by the University of Washington
+$!
+$! Permission to use, copy, modify, and distribute this software and its
+$! documentation for any purpose and without fee is hereby granted, provided
+$! that the above copyright notice appears in all copies and that both the
+$! above copyright notice and this permission notice appear in supporting
+$! documentation, and that the name of the University of Washington not be
+$! used in advertising or publicity pertaining to distribution of the software
+$! without specific, written prior permission. This software is made available
+$! "as is", and
+$! THE UNIVERSITY OF WASHINGTON DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED,
+$! WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT LIMITATION ALL IMPLIED
+$! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND IN
+$! NO EVENT SHALL THE UNIVERSITY OF WASHINGTON BE LIABLE FOR ANY SPECIAL,
+$! INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+$! LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, TORT
+$! (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF OR IN CONNECTION
+$! WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+$!
+$! VMSBUILD.COM for C-CLIENT.
+$ CREATE LINKAGE.H
+$ DECK
+extern DRIVER imapdriver, nntpdriver, vmsmaildriver;
+$ EOD
+$ CREATE LINKAGE.C
+$ DECK
+ mail_link((DRIVER *)&imapdriver);
+ mail_link((DRIVER *)&nntpdriver);
+ mail_link((DRIVER *)&vmsmaildriver);
+$ EOD
+$!
+$ DEFINE SYS SYS$LIBRARY: ! Normal .H location.
+$ DEFINE NETINET SYS$LIBRARY:
+$ DEFINE ARPA SYS$LIBRARY:
+$!
+$ COPY OS_VMS.H OSDEP.H;
+$ COPY TCP_VMSN.C TCP_VMS.C; ! Default - no TcpIp support.
+$!
+$ CC_DEF = ",''P1'"
+$ LINK_OPT = ""
+$ IF P1 .EQS. "" THEN CC_DEF=""
+$ IF F$LOCATE("MULTINET", P1) .LT. F$LENGTH(P1)
+$ THEN
+$ DEFINE SYS MULTINET_ROOT:[MULTINET.INCLUDE.SYS],sys$library
+$ DEFINE NETINET MULTINET_ROOT:[MULTINET.INCLUDE.NETINET]
+$ DEFINE ARPA MULTINET_ROOT:[MULTINET.INCLUDE.ARPA]
+$ COPY TCP_VMSM.C TCP_VMS.C; ! Multinet support.
+$ LINK_OPT = ",[-.CONTRIB.VMS]VMS_MULTINET_LINK/OPTION"
+$ ENDIF
+$ IF F$LOCATE("NETLIB", P1) .LT. F$LENGTH(P1)
+$ THEN
+$ LINK_OPT = ",[-.CONTRIB.VMS]VMS_NETLIB_LINK/OPTION"
+$ COPY TCP_VMSL.C TCP_VMS.C; ! Netlib support.
+$ ENDIF
+$!
+$ CC_PREF = ""
+$ IF F$LOCATE("VAX", F$GETSYI("HW_NAME")) .EQS. F$LENGTH(F$GETSYI("HW_NAME"))
+$ THEN
+$ CC_PREF = "/PREFIX=(ALL,EXCEPT=(SOCKET,CONNECT,BIND,LISTEN,SOCKET_READ,SOCKET_WRITE,SOCKET_CLOSE,SELECT,ACCEPT,BCMP,BCOPY,BZERO,GETHOSTBYNAME,"
+$ CC_PREF = CC_PREF + "GETHOSTBYADDR,GETPEERNAME,GETDTABLESIZE,HTONS,HTONL,NTOHS,NTOHL,SEND,SENDTO,RECV,RECVFROM))"
+$ CC_PREF = CC_PREF + "/STANDARD=VAXC"
+$ ELSE
+$ CC_PREF = "/INCLUDE=[]"
+$ LINK_OPT = LINK_OPT + ",[-.CONTRIB.VMS]VMS_LINK/OPTION"
+$ COPY SYS$LIBRARY:CTYPE.H *.*;
+$ EDIT/EDT CTYPE.H
+s/readonly// w
+exit
+$ ENDIF
+$ SET VERIFY
+$ CC/NOOPTIMIZE'CC_PREF'/define=("readonly"="ReadOnly"'cc_def') OS_VMS
+$ CC/NOOPTIMIZE'CC_PREF'/define=("readonly"="ReadOnly"'cc_def') vms_mail
+$ CC/NOOPTIMIZE'CC_PREF'/define=("readonly"="ReadOnly"'cc_def') MAIL
+$ CC/NOOPTIMIZE'CC_PREF'/define=("readonly"="ReadOnly"'cc_def') SMTP
+$ CC/NOOPTIMIZE'CC_PREF'/define=("readonly"="ReadOnly"'cc_def') RFC822
+$ CC/NOOPTIMIZE'CC_PREF'/define=("readonly"="ReadOnly"'cc_def') NNTP
+$ CC/NOOPTIMIZE'CC_PREF'/define=("readonly"="ReadOnly"'cc_def') nntpcvms
+$ CC/NOOPTIMIZE'CC_PREF'/define=("readonly"="ReadOnly"'cc_def') MISC
+$ CC/NOOPTIMIZE'CC_PREF'/define=("readonly"="ReadOnly"'cc_def') IMAP2
+$ CC/NOOPTIMIZE'CC_PREF'/define=("readonly"="ReadOnly"'cc_def', -
+ L_SET=0) SM_VMS
+$!
+$ CC/NOOPTIMIZE'CC_PREF'/define=("readonly"="ReadOnly"'cc_def') MTEST
+$! CC/NOOPTIMIZE'CC_PREF'/define=("readonly"="ReadOnly"'cc_def') IMAPD
+$!
+$ LIBRARY/OBJECT/CREATE/INSERT C-CLIENT OS_VMS,vms_mail,MAIL,SMTP,RFC822,-
+ NNTP,nntpcvms,MISC,IMAP2,SM_VMS
+$!
+$ SET NOVERIFY
+$ LINK MTEST,IMAP2,MAIL,MISC,NNTP,nntpcvms,OS_VMS,RFC822,SMTP,-
+ SM_VMS,VMS_MAIL,SYS$INPUT:/OPTION'LINK_OPT'
+PSECT=_CTYPE_,NOWRT
+$! LINK IMAPD,imapd_vms,IMAP2,MAIL,MISC,NNTP,nntpcvms,OS_VMS,RFC822,SMTP,-
+$! SM_VMS,VMS_MAIL'LINK_OPT'
+$ EXIT