home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / compress / zoosrc20.zoo / install < prev    next >
Text File  |  1989-07-25  |  8KB  |  155 lines

  1.  
  2.  
  3.                               INSTALLATION
  4.  
  5.  
  6. This document explains how to compile and install the zoo archiver.
  7.  
  8. Generally, you will not build zoo by directly invoking the supplied
  9. makefile.  Instead, you will execute one of the supplied scripts, or
  10. create a suitable script.  Each supplied script has a name beginning
  11. with the characters "mk" and is executed with the command
  12. "sh scriptname" or "csh scriptname".  All the scripts listed below
  13. worked correctly with version 1.50 of zoo.  All of them except mkx68 and
  14. mkx86 are also known to work correctly for versions 1.71, 2.00, and
  15. 2.01.
  16.  
  17. mksysv    This is for any system running System V Release 2 or something
  18.           reasonably compatible.  It is known to work on the *T&T **IX
  19.           PC (also known as the 3B1 or the *T&T 7300) running software
  20.           revision 3.0.  It should also work on more recent versions of
  21.           Xenix.  On older machine architectures this script may need to
  22.           be revised to add a `-Ml' switch or equivalent to cause the
  23.           large memory model to be used.  For Microport System V/AT and
  24.           Xenix see also descriptions for mkuport, mkx86, and mkx68.
  25.  
  26. mkbsd     This is for 4.3BSD.  It is known to work on a VAX-11/785 run-
  27.           ning 4.3BSD straight from Berkeley.
  28.  
  29. mkuport   For Microport System V/AT.  This script includes the -Ml
  30.           switch so that the large memory model is used.
  31.  
  32. mkx68     This script is for Xenix/68000.  It is known to work with zoo
  33.           version 1.50 on a Radio Shack Model 16 running Xenix version
  34.           3.01.01.  It takes care of problems in the C compiler and in
  35.           the include files related to incorrect handling of the `void'
  36.           data type.  However, since this version of Xenix does not have
  37.           the memset() library function, the line "#define MEMSET" may
  38.           first need to be commented out from the group of symbol defin-
  39.           itions for SYS_V in the file ``options.h''.  You may also need
  40.           to add the switch "-F 6000" (or some other reasonable value
  41.           instead of 6000) to the loader to make it allocate a bigger
  42.           stack.
  43.  
  44. mkx86     This script is for Xenix for 80286 systems.  It is known to
  45.           work (for zoo version 1.50) on an Intel 310/286 running Xenix
  46.           3.4 and an AT running SCO Xenix 2.2.  It causes the large
  47.           memory model to be used and sufficient stack space to be allo-
  48.           cated at load time.
  49.  
  50. descrip.mms This is a makefile suitable for use on VAX/VMS systems with
  51.           DEC's version of make, called MMS.  It is believed to work on
  52.           versions 4.5 through 4.7 of VAX/VMS.  The target zoo.exe
  53.           directs the linker to use the file options.opt so that the
  54.           shareable library is used.  The target zoobig.exe is identical
  55.           except that the shareable library is not used, making the exe-
  56.           cutable program about twice as big.
  57.  
  58.           Special techniques are needed to work around numerous pecu-
  59.           liarities in VAX/VMS.  These are described separately in the
  60.           file ``vmsbugs.doc''.  In particular, the VAX/VMS version of
  61.           zoo must be used in conjunction with the "bilf.exe" utility,
  62.           which performs needed file conversions.  The source program
  63.           bilf.c is included in the current source distribution for zoo.
  64.  
  65. The file ``options.h'' defines preprocessor symbols for the various sys-
  66. tems.  In most cases, given a reasonably powerful C compiler and
  67. library, you will be able to find a combination of options that will
  68. work.  Documentation for these options is in the file ``options.doc''.
  69.  
  70. Other machine-dependent code and definitions are in machine.h,
  71. machine.c, and portable.h.  Also, the amount of memory used for various
  72. arrays can be customized by defining symbols that are described and used
  73. in zoomem.h.
  74.  
  75. The low-level input/output routines are in portable.c.  In most cases
  76. these will not need to be modified.
  77.  
  78. The zoo source code largely conforms to the requirements of Kernighan
  79. and Ritchie's book.  Some exceptions are as follows.
  80.  
  81.    - Variables are believed to be unique in their initial 8 characters.
  82.      Systems that distinguish fewer than 8 initial characters are
  83.      currently not supported.
  84.  
  85.    - Zoo code assumes that members of structures do not have global
  86.      scope.
  87.  
  88.    - Long preprocessor symbols are occasionally used.
  89.  
  90.    - The special value -1 is cast to a pointer of type (FILE *) to pro-
  91.      vide a distinguished file pointer that is used to signify output to
  92.      a null file.  This should work on most systems that support the
  93.      system call sbrk.  Any suitable value may be supplied in place of
  94.      -1 in zooio.h.
  95.  
  96. TROUBLESHOOTING.
  97.  
  98. As currently configured for **IX variants, zoo uses the access() system
  99. call to check for file existence (see the definition for the symbol
  100. EXISTS in options.h).  There is some question about the appropriatenes
  101. of this, because access() can give the wrong answer when used from a
  102. set-user-id program.  If EXISTS is left undefined, zoo uses its own
  103. function to test for file existence by trying to open the file for read
  104. and also for write.
  105.  
  106. Two common reasons for crashes when zoo is executed are the following.
  107.  
  108.    - On machines with older (Intel-style) architectures zoo requires the
  109.      large memory model.  Compiling with the small memory model will
  110.      cause problems.  Also, systems that are limited to 64 kilobytes of
  111.      data and 64 kilobytes of code are not currently supported (but they
  112.      will be in the future).
  113.  
  114.    - A generous amount of stack space is needed.  Depending on the sys-
  115.      tem, this will vary from about 15 kilobytes to about 33 kilobytes.
  116.      On systems that cannot expand the stack dynamically you will need
  117.      to specify the size of the stack area at load time.
  118.  
  119. SPECIAL VERSIONS.  A version (currently 2.01) is available for MS-DOS
  120. that provides better performance due to assembly language routines and
  121. also includes some system-dependent features.  Another version
  122. (currently 2.00) has been ported by J. Brian Waters for the Amiga.  It
  123. includes several AmigaDOS-dependent features such as preservation of
  124. file times and wildcard expansion.
  125.  
  126. EXTRACT-ONLY VERSIONS.  For a new system, your first concern should be
  127. the ability to extract and list zoo archives.  For this purpose try com-
  128. piling booz (which stands for Barebones Ooz) (currently version 1.01),
  129. which can be compiled with three different options requiring different
  130. degrees of compiler sophistication and offering different levels of
  131. features.  Unlike zoo, booz will work on systems with less than 64 kilo-
  132. bytes of total available memory.  However, unlike zoo, booz uses low-
  133. level unbuffered file descriptors in **IX style.  This program is not a
  134. part of the standard zoo distribution, because nobody has ever shown any
  135. interest in it.
  136.  
  137. Machine-dependencies.
  138.  
  139.    - Currently the only systems supported are those that can read and
  140.      write in 8-bit units.  The file ``machine.h'' contains a typedef of
  141.      BYTE, and it must be defined to be an 8-bit quantity.
  142.  
  143.    - It is not known whether zoo code as it stands will work on a 1's-
  144.      complement machine.
  145.  
  146.    - The code assumes that type `int' is at least 16 bits long and type
  147.      `long' is at least 32 bits long.  There may be some implicit
  148.      assumptions that type `char' is exactly 8 bits;  I am not sure if
  149.      this is so.  However, type `BYTE' must be exactly 8 bits long.
  150.  
  151.    - In accordance with K&R (p 126), zoo code assumes that sizeof(char)
  152.      equals exactly 1.
  153.  
  154.                                      -- Rahul Dhesi 1988/08/25
  155.