4 July 2006. SMS. Gzip 1.3.5 for VMS (1.3.5a) =========================== ------------------------------------------------------------------------ Disclaimer ---------- No claims of any sort are made herein. The main gzip developers are probably unaware of this effort. 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 gzip version 1.3.5, a GNU free file compression utility. The most obvious features seem to work, but many have not been tested. Built and tested (slightly) in these environments: OpenVMS Alpha V7.3-2, HP C V7.1-015. OpenVMS IA64 V8.2-1, HP C V7.2-001. OpenVMS VAX V7.3, Compaq C V6.4-005. ------------------------------------------------------------------------ News ---- Version 1.3.5a 2006-07-01 -------------------------- - New. VMS-specific changes include: - Where C RTL support is available, command-line case is preserved on (non-VAX) systems with SET PROCESS /PARSE_STYLE = EXTENDED. - Where C RTL support is available, file open operations use a callback function to set non-default RMS parameters: file extend quantity (deq) = 16384, multi-block count (mbc) = 127, and multi-buffer count (mbf) = 2. Explicitly set RMS_DEFAULT values override these built-in values. ("-vv" shows details.) - New MMS or MMK builders with automatically generated source file dependencies. ------------------------------------------------------------------------ Changes to Source Files ----------------------- Files new for VMS (all in [.VMS]): COLLECT_DEPS.COM Dependency collector for DESCRIP_MKDEPS.MMS. CONFIG.H_VMS VMS-specific CONFIG.H. DECC_VER.C Program to show versions: VMS, C compiler, C run-time library. DESCRIP.MMS Main MMK or MMS description ("make") file. DESCRIP_CONFIG.MMS CONFIG.H description file. DESCRIP_DEPS.MMS Source dependency description file. DESCRIP_MKDEPS.MMS Source dependency generator description file. DESCRIP_SRC.MMS Source list description file. VMS.C Various VMS-specific code: file name wildcard expansion, DEC C run-time initialization, file open callback function for better RMS parameters. VMS.H VMS-specific header file. VMS_NOTES.TXT These notes. Files modified for VMS: TAILOR.H Changed to avoid C macro conflicts with config.h. Added C macros NO_FCHMOD and NO_FCHOWN. Changed to include "vms.h", for compiler message reduction. GZIP.C Added file open callbacks for VMS with DEC C. Changed to use chmod() instead of fchmod() on VMS (NO_FCHMOD). Changed to use chown() instead of fchown() on VMS (NO_FCHOWN). Added "LARGE_FILE" as one of the "Compilation options" which are listed with "-V". Reformed a variable declaration to accomodate old C compilers. ------------------------------------------------------------------------ Home source URL --------------- http://www.gzip.org/ ------------------------------------------------------------------------ Instructions ------------ Building -------- 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 "LARGE" (except VAX). MMS or MMK is required. Various build options are explained in the main builder file, [.VMS]DESCRIP.MMS. The builder must be run from the main source directory, not the [.VMS] subdirectory. A simple build might look like this (MMS shown, but MMK should work as well): MMS /DESCRIP = [.VMS] ! Small-file (DEC C). MMS /DESCRIP = [.VMS] /MACRO = LARGE=1 ! Large-file (DEC C). System-architecture-specific files (like objects and executables) are placed in separate directories, such as [.ALPHA], [.IA64], or [.VAX]. Large-file products get their own directories, [.ALPHAL] or [.IA64L]. On VAX, VAX C products are placed in [.VAXV], GNU C products in [.VAXG]. Each product builder announces what the destination directory will be when it is run. Instalation ----------- To complete the installation, the executable may be left in place, or moved (or copied) to a convenient place. While other methods (like DCL$PATH) exist, most users define symbols to make the gzip executable available as a foreign command. These symbol definitions may be placed in a user's SYS$LOGIN:LOGIN.COM, or in a more central location, like SYS$MANAGER:SYLOGIN.COM. Typical symbol definitions might look like these: GZIP :== $ dev:[dir]GZIP.EXE On UNIX systems, it's common to create hard links to the "gzip" executable from "gzcat" and "gunzip", to obviate specifying "-d" and "-cd", respectively, on a "gzip" command line. On a VMS system, this may be done using SET FILE /ENTER to create aliases. For example: SET FILE /ENTER = dev:[dir]GZCAT.EXE dev:[dir]GZIP.EXE SET FILE /ENTER = dev:[dir]GUNZIP.EXE dev:[dir]GZIP.EXE See HELP SET FILE /ENTER for cautions regarding its use. Alternatively, one could define additional foreign-command symbols for the other commands: GZCAT :== $ dev:[dir]GZIP.EXE -c GUNZIP :== $ dev:[dir]GZIP.EXE -d Help Library ------------ A VMS HELP file is supplied in [.VMS]GZIP.HLP. To be used, it must be added to a HELP library, either an existing library or one just for Wget. A new gzip help library may be created using a command like: MMS /DESCRIP = [.VMS] HELP When a new HELP library is created, a logical name "HLP$LIBRARY_n" may be defined to allow the HELP utility to find it. See "HELP HELP /USERLIBRARY" for details. ------------------------------------------------------------------------ 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 gzip 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.org 382 South Warwick Street (+1) 651-699-9818 Saint Paul MN 55105-2547