home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume11 / zoo / part01 / Install < prev   
Encoding:
Text File  |  1987-08-16  |  7.1 KB  |  148 lines

  1.  
  2.                               INSTALLATION
  3.  
  4.  
  5. This document explains how to compile and install the zoo archiver.
  6.  
  7. Generally, you will not build zoo by directly invoking the supplied
  8. makefile.  Instead, you will execute one of the supplied scripts, or
  9. create a suitable script.  Each supplied script has a name beginning
  10. with the characters "mk" and is executed with the command
  11. "sh scriptname" or "csh scriptname".  All the scripts listed below
  12. worked correctly with version 1.50 of zoo, which was given only limited
  13. distribution.  The current version 1.51 differs from 1.50 only in the
  14. files bsd.c, sysv.c, and version.c, so I expect the scripts to still
  15. work, with one exception that is noted.  The following scripts are sup-
  16. plied.
  17.  
  18. mksysv    This is for any system running System V Release 2 or something
  19.           reasonably compatible.  It is known to work on the *T&T **IX
  20.           PC (also known as the 3B1 or the *T&T 7300) running software
  21.           revision 3.0.  It will also work on more recent versions of
  22.           Xenix.  On older machine architectures this script may need to
  23.           be revised to add a `-Ml' switch or equivalent to cause the
  24.           large memory model to be used.  For Microport System V/AT and
  25.           Xenix see also descriptions for mkuport, mkx86, and mkx68.
  26.  
  27. mkbsd     This is for 4.3BSD.  It is known to work on a VAX-11/785 run-
  28.           ning 4.3BSD straight from Berkeley.
  29.  
  30. mkuport   For Microport System V/AT.  This script includes the -Ml
  31.           switch so that the large memory model is used.
  32.  
  33. mksysvsh  This script first calls mksysv to build zoo, then it deletes
  34.           the executable program and re-loads it using the shareable
  35.           libraries available on the *T&T **IX PC.  It used to work but
  36.           I'm given to understand that it was broken by a reference to a
  37.           timezone-related variable that is absent from the shared
  38.           library.
  39.  
  40. mkx68     This script is for Xenix/68000.  It is known to work on a
  41.           Radio Shack Model 16 running Xenix version 3.01.01.  It takes
  42.           care of problems in the C compiler and in the include files
  43.           related to incorrect handling of the `void' data type.  How-
  44.           ever, since this version of Xenix does not have the memset()
  45.           library function, the line "#define MEMSET" must first be com-
  46.           mented out from the group of symbol definitions for SYS_V in
  47.           the file ``options.h''.
  48.  
  49. mkx86     This script is for Xenix for 80286 systems.  It is known to
  50.           work on an Intel 310/286 running Xenix 3.4 and an AT running
  51.           SCO Xenix 2.2.  It causes the large memory model to be used
  52.           and sufficient stack space to be allocated at load time.
  53.  
  54. The file ``options.h'' defines preprocessor symbols for the various sys-
  55. tems.  In most cases, given a reasonably powerful C compiler and
  56. library, you will be able to find a combination of options that will
  57. work.
  58.  
  59. Other machine-dependent code and definitions are in machine.h,
  60. machine.c, and portable.h.  Also, the amount of memory used for various
  61. arrays can be customized by defining symbols that are described and used
  62. in zoomem.h.
  63.  
  64. The low-level input/output routines are in portable.c.  In most cases
  65. these will not need to be modified.
  66.  
  67. The zoo source code largely conforms to the requirements of Kernighan
  68. and Ritchie's book.  Some exceptions are as follows.
  69.  
  70.    - Variables are unique in their initial 8 characters.  Systems that
  71.      distinguish fewer than 8 initial characters are currently not sup-
  72.      ported.
  73.  
  74.    - Zoo code assumes that members of structures do not have global
  75.      scope.
  76.  
  77.    - Long preprocessor symbols are occasionally used.
  78.  
  79. TROUBLESHOOTING.
  80.  
  81. The zoo code uses strchr and strrchr, which are present on System V,
  82. 4.3BSD, and Xenix, but may not be present on 4.2BSD. To get around this,
  83. add the C compiler switches "-Dstrchr=index" and "-Dstrrchr=rindex" to
  84. the make script or to the makefile.
  85.  
  86. Optionally zoo can use the access() system call to check for file
  87. existence (see the definition for the symbol EXISTS in options.h).
  88. There is some question about the appropriatenes of this, because
  89. access() can give the wrong answer when used from a set-user-id program.
  90. If EXISTS is left undefined, zoo uses its own function to test for file
  91. existence by trying to open the file for read and also for write.
  92.  
  93. Two common reasons for crashes when zoo is executed are the following.
  94.  
  95.    - On machines with older (Intel-style) architectures zoo requires the
  96.      large memory model.  Compiling with the small memory model will
  97.      cause problems.  Also, systems that are limited to 64 kilobytes of
  98.      data and 64 kilobytes of code are not currently supported (but they
  99.      will be in the future).  Note that a small and memory-efficient
  100.      extract-only program, described below, is separately available that
  101.      should run on any system with a reasonable C compiler.
  102.  
  103.    - Generous amounts of stack space is needed.  Depending on the sys-
  104.      tem, this will vary from about 15 kilobytes to about 33 kilobytes.
  105.      On systems that cannot expand the stack dynamically you will need
  106.      to specify the size of the stack area at load time.
  107.  
  108. SPECIAL VERSIONS.  A version (currently 1.50) is available for MS-DOS
  109. that provides better performance due to assembly language routines and
  110. also includes some system-dependent features.  Another version
  111. (currently 1.42b) has been ported by J. Brian Waters for the Amiga.  It
  112. includes several AmigaDOS-dependent features such as preservation of
  113. file times and wildcard expansion.
  114.  
  115. EXTRACT-ONLY VERSIONS.  For a new system, your first concern should be
  116. the ability to extract and list zoo archives.  For this purpose try com-
  117. piling booz (which stands for Barebones Ooz) (currently version 1.01),
  118. which can be compiled with three different options requiring different
  119. degrees of compiler sophistication and offering different levels of
  120. features.  Unlike zoo, booz will work on systems with less than 64 kilo-
  121. bytes of total available memory.  Also available, for VAX/VMS, is the
  122. extract-only program vooz 1.00.  (Because of serious bugs in the VAX/VMS
  123. input/output routines, the full zoo archiver does not currently work
  124. under VAX/VMS.  Unfortunately, DEC documents these bugs as features, so
  125. they are unlikely to be fixed soon.  I hope to be eventually able to
  126. work around these bugs.)
  127.  
  128. Machine-dependencies.
  129.  
  130.    - Currently the only systems supported are those that can read and
  131.      write in 8-bit units.  The file ``machine.h'' contains a typedef of
  132.      BYTE, and it must be defined to be an 8-bit quantity.
  133.  
  134.    - It is not known whether zoo code as it stands will work on a 1's-
  135.      complement machine.
  136.  
  137.    - The code assumes that type `int' is at least 16 bits long and type
  138.      `long' is at least 32 bits long.  (The code may work if type `long'
  139.      is somewhat smaller than 32 bits but this has not been confirmed.)
  140.      There may be some implicit assumptions that type `char' is exactly
  141.      8 bits;  I am not sure if this is so.  However, type `BYTE' must be
  142.      exactly 8 bits long.
  143.  
  144.    - In accordance with K&R (p 126), zoo code assumes that sizeof(char)
  145.      equals exactly 1.
  146.  
  147.                                      -- Rahul Dhesi 1987/07/12
  148.