21 August 2009. SMS. Mpack 1.6 for VMS (1.6a) ======================== ------------------------------------------------------------------------ Disclaimer ---------- No claims of any sort are made herein. (Any suggestions for improving the code in the VMS-specific sections are welcome, but low expectations are more realistic than high ones. ------------------------------------------------------------------------ Description ----------- This note accompanies a quick VMS port of mpack version 1.6, a pair of utilities: mpack, to "pack a file in MIME format", and munpack, "to unpack messages in MIME or split-uuencode format". Some of the most obvious features seem to work (mostly), but many have not been tested. Built and tested (slightly) in these environments: OpenVMS Alpha V7.3-2, HP C V7.3-009 OpenVMS IA64 V8.3-1H1, HP C V7.3-018 OpenVMS VAX V7.3, Compaq C V6.4-005 ------------------------------------------------------------------------ Mpack Web Resources ------------------- Main source kit: ftp://ftp.andrew.cmu.edu/pub/mpack/ Debian patches: http://ftp.de.debian.org/debian/pool/main/m/mpack/ ------------------------------------------------------------------------ Building Mpack on VMS --------------------- Extract the files from the distribution kit. The kit includes objects and executables for Alpha, IA64, and VAX, in the corresponding host-specific subdirectories. These builds were done with option (explained below) "LARGE" (except VAX). MMS or MMK is required. MMS commands are shown in the examples, but MMK should work. (An exception is for automatic dependency generation. See [.VMS]DESCRIP_MKDEPS.MMS for details.) Normally (starting in the main source directory): MMS /MACRO = (LARGE=1) ! Non-VAX MMS ! VAX Changes to the code should have removed all the compiler warnings, ------------------------------------------------------------------------ Installation - Foreign Commands ------------------------------- Set the symbols for the foreign commands: MPACK :== $ actual_device:[actual.directory]MPACK.EXE MUNPACK :== $ actual_device:[actual.directory]MUNPACK.EXE ------------------------------------------------------------------------ VMS Usage Notes --------------- A VMS file may need to be specified using UNIX notation. On non-VAX systems, with SET PROCESS /PARSE_STYLE = EXTENDED, mpack and munpack will preserve the case of the command line. On VAX systems (or with SET PROCESS /PARSE_STYLE = TRADITIONAL), command-line options and arguments with upper-case content must be quoted to avoid conversion to lower case by the C run-time library. ------------------------------------------------------------------------ News ---- Version 1.6a 2009-08-29 ------------------------ - New. Bugs and limitations may abound. This version is based on the original Carnegie Mellon University version 1.6 source kit, with some patches from the Debian 1.6-5 patch kit. (The Debian 1.6-6 patch kit seems to add nothing significant.) - It's not clear that building with the large-file option matters, but it should be harmless. ------------------------------------------------------------------------ Changes to Source Files ----------------------- Files new for VMS (all in [.VMS]): COLLECT_DEPS.COM Dependency collector for DESCRIP_MKDEPS.MMS. LIST_TO_OPT.COM Link options file creator. DESCRIP.MMS Main MMK or MMS description ("make") file. DESCRIP_DEPS.MMS Source dependency description file. DESCRIP_MKDEPS.MMS Source dependency generator description file. DESCRIP_SRC.MMS Source list description file. PROTO.H Combined function prototype header file. VMSOS.C Various VMS-specific code: DEC C run-time initialization. VMS_NAME_FIX.SH UNIX shell script to restore original mixed-case file names after storage on an ODS2 file system. VMS_NOTES.TXT These notes. Files modified for VMS: DECODE.C Compiler warning reduction. Function prototype reduction and extraction. Some Debian patches. ENCODE.C Compiler warning reduction. Function prototype extraction. Some Debian patches. MAGIC.C Compiler warning reduction. MD5.H Added multiple-inclusion guard. PART.C Compiler warning reduction. Function prototype extraction. Some Debian patches. PART.H Added multiple-inclusion guard. Added prototypes for functions in part.c. UNIXPK.C Compiler warning reduction. Function prototype reduction and extraction. Changed to use vfork() instead of fork() on VMS. Some Debian patches. UNIXUNPK.C Compiler warning reduction. Function prototype reduction. Some Debian patches. VERSION.H Version 1.6a. XMALLOC.C Compiler warning reduction. Function prototype reduction. ------------------------------------------------------------------------ The accompanying source kit may suffer from storage on an ODS2 file system, which does not preserve case or allow multiple dots in a file name. Building this kit should work on VMS, but it may be expected to fail on other systems. To use this kit on a non-VMS system, the files may need to be renamed to restore their original mixed-case and/or multi-dot names. The UNIX shell script "vms_name_fix.sh" (or something like it) should do the job. When reporting problems, especially build problems, with mpack for VMS, it is often useful to reveal precise compiler, run-time library, and VMS version information. The program DECC_VER.C (included in the kit) is intended to make that easier. ------------------------------------------------------------------------ Steven M. Schweda sms@antinode.info 382 South Warwick Street (+1) 651-699-9818 Saint Paul MN 55105-2547