Info-ZIP file INSTALL for UnZip


Compile:

  - Unpack *.c, *.h, preserving directory structure (e.g., ./unix/unix.c);
    exception is TOPS-20, where tops20/* should be unpacked into current
    dir.  Copy appropriate makefile into current dir and/or rename as
    appropriate.  (Some makefiles can be invoked in place--e.g., "nmake
    -f msdos\makefile.msc" or "make -f unix/Makefile some_unix_target"--
    but MS-DOS targets in Unix makefile [bcc_dos, gcc_dos, etc.] cannot.
    Also, moving the Unix Makefile instead of copying it will result in
    a harmless error message at compile time.)

  - If you want a non-standard version, define one or more of the following
    optional macros.  These may not be fully supported in future releases,
    however.

      OLD_EXDIR    (Unix, OS/2, MS-DOS only)
        Old behavior regarding the directory to which to extract:  argument
        immediately after zipfile name is extract-to dir; if dir doesn't
        exist, create if specified as "dir/" (i.e., with trailing path
        separator), else treat as stored file; if -d option used, treat
        argument as stored file regardless of trailing '/'.  For example:
            unzip foo bar       if bar is a dir, extract everything into it;
                                otherwise extract bar as stored file
            unzip foo bar/      extract everything into bar, creating if nec.
            unzip -d foo bar/   treat bar/ as a stored directory and extract

      DOSWILD      (MS-DOS only)
        Treat trailing "*.*" like Unix "*" (i.e., matches anything); treat
        trailing "*." as match for files without a dot (i.e., matches anything,
        as long as no dots in name).  Special treatment only occurs if patterns
        are at end of arguments; i.e., "a*.*" matches all files starting with
        "a", but "*.*c" matches all files ending in "c" *only* if they have a
        dot somewhere before the "c".  Thus "*.*.*" could be used (albeit awk-
        wardly) to specify all filenames with at least one dot in them, and
        "*." matches all filenames with no dots in them.  [The default method
        of specifying these would be "*.*" and "* -x *.*", respectively, where
        the second example makes use of UnZip's exclude-files option.]  All
        other regular expressions (including "?" and "[range_of_chars]") re-
        tain their Unix-like behavior.

      CHECK_VERSIONS (VMS only)
        UnZip "extra fields" are used to store VMS (RMS) filesystem info,
	and the format of this information may differ in various versions
	of VMS.  Defining this option will enable UnZip warnings when the
	stored extra-field VMS version(s) do(es) not match the version of
	VMS currently being used.  This is a common occurrence in zipfiles 
	received from other sites, but since the format of the filesystem
	does not seem to have changed in years (including on Alpha and Open-
	VMS systems), the warnings are not enabled by default.

      RETURN_CODES (VMS only)
        VMS interprets return codes according to a rigid set of guidelines,
        so VMS UnZip always returns 0 regardless of whether any warnings or
        errors occurred.  To see the UnZip return values, define RETURN_CODES;
        UnZip will then print the value and its interpretation.  This is often
        annoying, however.

      NO_ZIPINFO
        Compile without zipinfo mode (-Z) enabled; makes smaller executable
        because many text strings left out.  Automatically enabled for
        small-model compiles under MS-DOS and OS/2, so ordinarily there is
        no need to specify this explicitly.

      CHECK_EOF (primarily intended for MS-DOS)
        When unzipping an archive on a bad floppy drive, unzip reportedly
        hangs the system; this appears to be due to a failure to do a proper
        check for end-of-file from the read() system call.  Defining CHECK_EOF
        enables better checking; this option is not on by default because it
        was introduced too late in the testing process.

      DEBUG
        Used for debugging purposes; enables Trace() statements.  Generally
        best to compile only a single module this way.

  - If you regularly compile new versions of UnZip and always want the same
    non-standard option(s), add it (them) to the LOCAL_UNZIP environment
    variable.  Under MS-DOS, for example:

        set LOCAL_UNZIP -DDOSWILD -DOLD_EXDIR

    Can also use variable to hold special compiler options (e.g., -FPi87
    for Microsoft C, if x87 libraries are the only ones on your disk and
    they follow MS's default naming conventions).

  - Choose appropriate makefile based on description in <OS>/Contents file;
    move or copy into the current directory and possibly rename; edit to
    include any special macros (e.g., add -DDOSWILD to CFLAGS) or whatever
    (see special OS-specific notes below); and run the relevant "make" utility
    as appropriate.

      VMS
        For a one-time make, one can simply run the supplied command file.
	To use either DEC C on an Alpha or VAX C on a VAX, simply type
	"@make" (after copying make.com into the current directory; other-
	wise do "@[.vms]make").  To use GNU C (gcc) on either platform, do
	"@make gcc".

        For repeated makes or other hacker-like tinkering with the sources,
        use one of the included makefiles.  With DEC's MMS or the free MMK
        clone, copy descrip.mms into the current directory and run MMS or
        MMK.  Otherwise grab Todd Aven's free MAKE/VMS, copy makefile into
        the current dir and run make.

        Sources to Rahul Dhesi's BILF (binary/line-feed) program are also
        included as a convenience; it can be useful for converting between
        stream-LF and fixed-length-512 formats.  Further information is in
        the program comments.

  - 


Install:

  - Unix:  edit Makefile if manext (man-page extension, usually "1"), MANDIR
    and BINDIR are not correct; then do "make install"

  - VMS:  install UnZip as foreign symbol by adding this to login.com:
       $ unzip == "$disk:[dir]unzip.exe"
       $ zipinfo == "$disk:[dir]unzip.exe -Z"
    where "disk" and "dir" are location of UnZip executable; "$" before
    disk name is important.  Some people, including the author, prefer a
    short alias such as "ii" instead of "zipinfo"; edit to taste.  See
    vms/README for notes/warnings about zipfiles and UnZip under VMS.

  - OS/2, MS-DOS, NT:  move or copy unzip.exe to a directory in your path;
    also possibly copy unzip.exe to zipinfo.exe (or ii.exe), or else create
    a batch file for zipinfo ("@unzip -Z %1 %2  etc.")--only relevant if
    zipinfo mode is enabled, obviously...

