                                                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

