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. All of them except mkx68 and
- mkx86 are also known to work correctly for versions 1.71, 2.00, and
- 2.01.
-
- 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 should 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.
-
- mkx68 This script is for Xenix/68000. It is known to work with zoo
- version 1.50 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. However, since this version of Xenix does not have
- the memset() library function, the line "#define MEMSET" may
- first need to be commented out from the group of symbol defin-
- itions for SYS_V in the file ``options.h''. You may also need
- to add the switch "-F 6000" (or some other reasonable value
- instead of 6000) to the loader to make it allocate a bigger
- stack.
-
- mkx86 This script is for Xenix for 80286 systems. It is known to
- work (for zoo version 1.50) 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 allo-
- cated at load time.
-
- descrip.mms This is a makefile suitable for use on VAX/VMS systems with
- DEC's version of make, called MMS. It is believed to work on
- versions 4.5 through 4.7 of VAX/VMS. The target zoo.exe
- directs the linker to use the file options.opt so that the
- shareable library is used. The target zoobig.exe is identical
- except that the shareable library is not used, making the exe-
- cutable program about twice as big.
-
- Special techniques are needed to work around numerous pecu-
- liarities in VAX/VMS. These are described separately in the
- file ``vmsbugs.doc''. In particular, the VAX/VMS version of
- zoo must be used in conjunction with the "bilf.exe" utility,
- which performs needed file conversions. The source program
- bilf.c is included in the current source distribution for zoo.
-
- 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. Documentation for these options is in the file ``options.doc''.
-
- 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 believed to be unique in their initial 8 characters.
- Systems that distinguish fewer than 8 initial characters are
- currently not supported.
-
- - Zoo code assumes that members of structures do not have global
- scope.
-
- - Long preprocessor symbols are occasionally used.
-
- - The special value -1 is cast to a pointer of type (FILE *) to pro-
- vide a distinguished file pointer that is used to signify output to
- a null file. This should work on most systems that support the
- system call sbrk. Any suitable value may be supplied in place of
- -1 in zooio.h.
-
- TROUBLESHOOTING.
-
- As currently configured for **IX variants, zoo uses 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).
-
- - A generous amount 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 2.01) is available for MS-DOS
- that provides better performance due to assembly language routines and
- also includes some system-dependent features. Another version
- (currently 2.00) 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. However, unlike zoo, booz uses low-
- level unbuffered file descriptors in **IX style. This program is not a
- part of the standard zoo distribution, because nobody has ever shown any
- interest in it.
-
- 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. 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 1988/08/25
-