home *** CD-ROM | disk | FTP | other *** search
-
- INSTALLATION
-
-
- This document explains how to compile and install the zoo archiver.
-
- Generally, you will not build zoo by directly invoking the supplied
- makefile. Instead, you will execute one of the supplied scripts, or
- create a suitable script. Each supplied script has a name beginning
- with the characters "mk" and is executed with the command
- "sh scriptname" or "csh scriptname". All the scripts listed below
- worked correctly with version 1.50 of zoo, which was given only limited
- distribution. The current version 1.51 differs from 1.50 only in the
- files bsd.c, sysv.c, and version.c, so I expect the scripts to still
- work, with one exception that is noted. The following scripts are sup-
- plied.
-
- mksysv This is for any system running System V Release 2 or something
- reasonably compatible. It is known to work on the *T&T **IX
- PC (also known as the 3B1 or the *T&T 7300) running software
- revision 3.0. It will also work on more recent versions of
- Xenix. On older machine architectures this script may need to
- be revised to add a `-Ml' switch or equivalent to cause the
- large memory model to be used. For Microport System V/AT and
- Xenix see also descriptions for mkuport, mkx86, and mkx68.
-
- mkbsd This is for 4.3BSD. It is known to work on a VAX-11/785 run-
- ning 4.3BSD straight from Berkeley.
-
- mkuport For Microport System V/AT. This script includes the -Ml
- switch so that the large memory model is used.
-
- mksysvsh This script first calls mksysv to build zoo, then it deletes
- the executable program and re-loads it using the shareable
- libraries available on the *T&T **IX PC. It used to work but
- I'm given to understand that it was broken by a reference to a
- timezone-related variable that is absent from the shared
- library.
-
- mkx68 This script is for Xenix/68000. It is known to work on a
- Radio Shack Model 16 running Xenix version 3.01.01. It takes
- care of problems in the C compiler and in the include files
- related to incorrect handling of the `void' data type. How-
- ever, since this version of Xenix does not have the memset()
- library function, the line "#define MEMSET" must first be com-
- mented out from the group of symbol definitions for SYS_V in
- the file ``options.h''.
-
- mkx86 This script is for Xenix for 80286 systems. It is known to
- work on an Intel 310/286 running Xenix 3.4 and an AT running
- SCO Xenix 2.2. It causes the large memory model to be used
- and sufficient stack space to be allocated at load time.
-
- The file ``options.h'' defines preprocessor symbols for the various sys-
- tems. In most cases, given a reasonably powerful C compiler and
- library, you will be able to find a combination of options that will
- work.
-
- Other machine-dependent code and definitions are in machine.h,
- machine.c, and portable.h. Also, the amount of memory used for various
- arrays can be customized by defining symbols that are described and used
- in zoomem.h.
-
- The low-level input/output routines are in portable.c. In most cases
- these will not need to be modified.
-
- The zoo source code largely conforms to the requirements of Kernighan
- and Ritchie's book. Some exceptions are as follows.
-
- - Variables are unique in their initial 8 characters. Systems that
- distinguish fewer than 8 initial characters are currently not sup-
- ported.
-
- - Zoo code assumes that members of structures do not have global
- scope.
-
- - Long preprocessor symbols are occasionally used.
-
- TROUBLESHOOTING.
-
- The zoo code uses strchr and strrchr, which are present on System V,
- 4.3BSD, and Xenix, but may not be present on 4.2BSD. To get around this,
- add the C compiler switches "-Dstrchr=index" and "-Dstrrchr=rindex" to
- the make script or to the makefile.
-
- Optionally zoo can use the access() system call to check for file
- existence (see the definition for the symbol EXISTS in options.h).
- There is some question about the appropriatenes of this, because
- access() can give the wrong answer when used from a set-user-id program.
- If EXISTS is left undefined, zoo uses its own function to test for file
- existence by trying to open the file for read and also for write.
-
- Two common reasons for crashes when zoo is executed are the following.
-
- - On machines with older (Intel-style) architectures zoo requires the
- large memory model. Compiling with the small memory model will
- cause problems. Also, systems that are limited to 64 kilobytes of
- data and 64 kilobytes of code are not currently supported (but they
- will be in the future). Note that a small and memory-efficient
- extract-only program, described below, is separately available that
- should run on any system with a reasonable C compiler.
-
- - Generous amounts of stack space is needed. Depending on the sys-
- tem, this will vary from about 15 kilobytes to about 33 kilobytes.
- On systems that cannot expand the stack dynamically you will need
- to specify the size of the stack area at load time.
-
- SPECIAL VERSIONS. A version (currently 1.50) is available for MS-DOS
- that provides better performance due to assembly language routines and
- also includes some system-dependent features. Another version
- (currently 1.42b) has been ported by J. Brian Waters for the Amiga. It
- includes several AmigaDOS-dependent features such as preservation of
- file times and wildcard expansion.
-
- EXTRACT-ONLY VERSIONS. For a new system, your first concern should be
- the ability to extract and list zoo archives. For this purpose try com-
- piling booz (which stands for Barebones Ooz) (currently version 1.01),
- which can be compiled with three different options requiring different
- degrees of compiler sophistication and offering different levels of
- features. Unlike zoo, booz will work on systems with less than 64 kilo-
- bytes of total available memory. Also available, for VAX/VMS, is the
- extract-only program vooz 1.00. (Because of serious bugs in the VAX/VMS
- input/output routines, the full zoo archiver does not currently work
- under VAX/VMS. Unfortunately, DEC documents these bugs as features, so
- they are unlikely to be fixed soon. I hope to be eventually able to
- work around these bugs.)
-
- Machine-dependencies.
-
- - Currently the only systems supported are those that can read and
- write in 8-bit units. The file ``machine.h'' contains a typedef of
- BYTE, and it must be defined to be an 8-bit quantity.
-
- - It is not known whether zoo code as it stands will work on a 1's-
- complement machine.
-
- - The code assumes that type `int' is at least 16 bits long and type
- `long' is at least 32 bits long. (The code may work if type `long'
- is somewhat smaller than 32 bits but this has not been confirmed.)
- There may be some implicit assumptions that type `char' is exactly
- 8 bits; I am not sure if this is so. However, type `BYTE' must be
- exactly 8 bits long.
-
- - In accordance with K&R (p 126), zoo code assumes that sizeof(char)
- equals exactly 1.
-
- -- Rahul Dhesi 1987/07/12
-