home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 9 Archive / 09-Archive.zip / ZOODOC.ZIP / ZOO.TXT < prev   
Text File  |  1987-01-14  |  41KB  |  857 lines

  1. Note to the reader:  This document gives a rationale for the Zoo project.
  2. It also answers recent criticism.  To help provide a balanced picture to
  3. users, please upload this file to your local BBSs.  Please give it a name of
  4. the form ZOOPLAN1.* to help users identify is as the first file in a series
  5. of possibly more than one.  A suggested upload description is, "Zoo author
  6. answers critics."  Thank-you. -- R.D.
  7.  
  8. The entire contents of this document are (C) Copyright 1986 Rahul Dhesi.
  9. Permission is granted to reproduce it in any form, for any purpose, on any
  10. medium, whether for commercial or noncommercial use, provided only that it
  11. is not modified.
  12.  
  13.                               A Zoo Manifesto
  14.  
  15.                                      by
  16.  
  17.                                 Rahul Dhesi
  18.                               1 November 1986
  19.  
  20.  
  21. INTRODUCTION.  The Zoo archiver has raised a controversy.   Vociferous
  22. criticism has appeared and users are being advised to "forget it".
  23.  
  24. For Zoo to have been ignored and to have come and gone in complete obscurity
  25. would have been a punch in my face.  Instead, Zoo's critics have felt it
  26. worthy of their attention.
  27.  
  28. But much of the criticism of Zoo is short-sighted.  Some important facts may
  29. be omitted.  This document gives you my perspective.
  30.  
  31.  
  32.                           ARCHIVE/LIBRARY FORMATS
  33.  
  34. First, we must understand archive formats.  The traditional LBR format file
  35. (often called a "library") has the following structure:
  36.  
  37.              [dir. entry]------               LBR format
  38.              [dir. entry]----- | ---
  39.              [dir. entry]----- | -- | ---
  40.                   .            |    |    |
  41.                   .            |    |    |
  42.                   .            |    |    |
  43.              [file  data] <----     |    |
  44.              [file  data] <---------     |
  45.              [file  data] <--------------
  46.                   .
  47.                   .
  48.  
  49.  
  50. Each "directory entry" contains information about the file, such as its
  51. name, size, and its position within the library, and optionally the time-
  52. stamp of the file.  All the directory entries are at the beginning of the
  53. library.
  54.  
  55. The ARC format, by contrast, does not reserve a separate area for directory
  56. entries.  Each file is stored as a directory entry for that file immediately
  57. followed by the file data.
  58.  
  59.  
  60.              [dir. entry]                     ARC format
  61.              [file  date]
  62.              [dir. entry]
  63.              [file  data]
  64.              [dir. entry]
  65.              [file  data]
  66.                   .
  67.                   .
  68.  
  69. Both formats have their advantages and disadvantages.  The LBR format,
  70. having all the directory entries clustered together at the beginning, allows
  71. very fast listing of names of files in the library.  The ARC format utili-
  72. ties must go through the archive step by step to read and list all the
  73. filenames.  A disadvantage of the LBR format is that space may be wasted
  74. maintaining empty directory slots to allow addition of new files.  Other-
  75. wise, when a new file is added, the entire library must be reorganized to
  76. create additional space for the directory entry.  The ARC format allows new
  77. files, and their directory entries, to be simply appended to the archive.
  78.  
  79. Another disadvantage of the LBR format is that it remembers the size of a
  80. stored file rounded up to the nearest 128 bytes.  Both ARC and Zoo store the
  81. exact size of files.
  82.  
  83. Now, let's look at the Zoo archive format.
  84.  
  85.              [dir. entry]---                  Zoo format (current)
  86.                             |
  87.              [file  data] <-
  88.  
  89.              [dir. entry]---
  90.                             |
  91.              [file  data] <-
  92.  
  93.              [dir. entry]---
  94.                             |
  95.              [file  data] <-
  96.  
  97. All currently existing Zoo archives have the format shown above.  Like ARC
  98. archives, they contain the directory entry for each file followed by its
  99. data.  In the Zoo format, however, each directory contains a pointer to the
  100. file data, which can be anywhere.  This makes it possible to reorganize a
  101. Zoo archive to look like this:
  102.  
  103.              [dir. entry]---                  Zoo format (alternative
  104.              [dir. entry]-- | --              format -- fast directory
  105.              [dir. entry]-- | -- | ---        listings)
  106.                   .         |    |    |
  107.                   .         |    |    |
  108.              [file  data] <-     |    |
  109.              [file  data] <------     |
  110.              [file  data] <-----------
  111.  
  112. This reorganized format makes fast directory listings possible.  All exis-
  113. ting versions of Zoo will understand the reorganized format.  A separate
  114. utility, or a new option in Zoo itself, will allow the user to reorganize
  115. Zoo archives.
  116.  
  117. Despite the LBR-like organization here, though, files can still be easily
  118. added to the archive.  This is because each directory entry contains another
  119. pointer, which points to the next directory entry.  If we added another file
  120. to the archive represented above, it would become:
  121.  
  122.              [dir. entry]---                  Zoo format (reorganized,
  123.              [dir. entry]-- | --              then another file added)
  124.              [dir. entry]-- | -- | ---
  125.                   .         |    |    |
  126.                   .         |    |    |
  127.              [file  data] <-     |    |
  128.              [file  data] <------     |
  129.              [file  data] <-----------
  130.              [dir. entry]---
  131.                             |
  132.              [file  data] <-
  133.  
  134.  
  135. The Zoo format thus attempts to provide the advantages of both the LBR and
  136. ARC formats without the disadvantages of either.
  137.  
  138. Since the file data can be anywhere in the archive, improved versions of Zoo
  139. can include additional information in an archive without affecting extrac-
  140. tion by prior versions of Zoo.  For example, Zoo version 1.10 introduced the
  141. ability to attach comments to archived files.  Versions earlier than 1.10 do
  142. not understand or interpret comments, yet all versions of Zoo will extract
  143. files from all existing Zoo archives.  Adding comments only meant adding a
  144. new pointer to the directory entry that points to the comment.  Adding
  145. comments to two of the files of the example above gives the following
  146. archive structure:
  147.  
  148.          ----[dir. entry]---                  Zoo format (after
  149.         |                   |                 adding comments to
  150.         |    [file  data] <-                  two files)
  151.         |
  152.     --- | ---[dir. entry]---
  153.    |    |                   |
  154.    |    |    [file  data] <-
  155.    |    |
  156.    |    |    [dir. entry]---
  157.    |    |                   |
  158.    |    |    [file  data] <-
  159.    |    |
  160.    |     --> [comment   ]
  161.     -------> [comment   ]
  162.  
  163. Since Zoo doesn't care exactly where the file data and comments go, we need
  164. only append all new data to the archive and update a pointer in the direc-
  165. tory entry.  Older versions of Zoo ignore the additional data.  Older ver-
  166. sions still recognize that a newer format is being used and they will refuse
  167. to manipulate the archive in a way that could cause loss of information.
  168.  
  169. Now, with an understanding of the various archive/library formats, we can
  170. discuss some of the strengths of the Zoo format.
  171.  
  172.  
  173.                         ADVANTAGES OF THE ZOO FORMAT
  174.  
  175. The key issue here is one of extendability.  One of the features planned for
  176. Zoo is the ability to store long filenames and pathnames.  The MS-DOS file-
  177. name standard of 8+dot+3 characters is restrictive.  Other systems offer
  178. longer filenames, and allow more special characters to be part of filenames.
  179. For example, Berkeley UNIX allows filenames to be up to 255 characters long,
  180. and they may contain any printable or unprintable 7-bit character except
  181. slash ("/") and null (0x00).  Other implementations of the UNIX system also
  182. allow 8-bit character codes in filenames.  The Macintosh allows filenames
  183. to contain spaces.  A truly standard archive format should not arbitrarily
  184. restrict filename size or syntax.  Yet it should be possible to extract
  185. every file from every archive on every system.
  186.  
  187. Another desirable feature is the ability to store the full pathname of a
  188. file.  This is especially useful if one makes backups of files in compressed
  189. form and then wishes to restore each file to its original directory.
  190.  
  191. A truly standard archiving format should also allow text files to be cor-
  192. rectly interpreted on all systems.  Under CP/M and MS-DOS, a carriage ret-
  193. urn/line feed pair terminates each line of text.  On the Macintosh, the
  194. terminator is a carriage return.  On the Amiga and under all versions of
  195. UNIX, the terminator is a linefeed.  User convenience requires that the
  196. archiver store text files in a canonical format that will be converted to
  197. the appropriate host system format at extraction time.
  198.  
  199. When one of these features is added to the archive format, all existing
  200. implementations of the archive software should still be able to extract
  201. files from the new archive format.  It was the goal of the Zoo archiver
  202. project to create such a truly extendable and portable format.
  203.  
  204. Another desirable characteristic of a good archive utility is the ability to
  205. hold multiple versions of the same file.  Some mainframe systems automati-
  206. cally maintain a version number for each file.  Users of other systems,
  207. which do not do so, would benefit if this feature were provided by an
  208. archive utility.  This would be especially useful to programmers who would
  209. like to conveniently save multiple versions of source files without having
  210. to give them different names.
  211.  
  212. Finally, security of data is an often-neglected issue.  A bad telephone
  213. connection, or a bad sector on a floppy disk, can cause file corruption.
  214. This should not make an entire archive unusable.  It should be possible for
  215. a repair utility to search for files within the archive and extract those
  216. that are not corrupted.  The ARC scheme has a potential advantage over the
  217. LBR format, since corruption of a part of the archive seldom affects more
  218. than one file.  If an LBR format file is corrupted near the beginning, all
  219. directory entries can be lost.  However, existing ARC utilities do not allow
  220. recovery of files from a corrupted archive beyond the point of damage.  This
  221. is because there is no way of arbitrarily recognizing where a file begins.
  222.  
  223. The Zoo format includes enough redundancy that it is usually possible to
  224. locate individual directory entries and individual file data areas in a
  225. corrupted archive.  A planned repair utility will allow recovery of un-
  226. damaged portions of a Zoo archive.  This is an impossibility with existing
  227. library/archive formats because they contain no redundant information.
  228.  
  229. None of these features can be easily added to the ARC format.  One important
  230. reason for this is the fact that extending the directory structure of an ARC
  231. archive makes all existing ARC utilities unable to understand the improved
  232. archive structure.  If an ARC format utility adds additional information to
  233. an archive in a transparent way, then this information is likely to be lost
  234. if any other utility manipulates the archive.
  235.  
  236. For example, the PKARC utility can add brief comments to archived files.  It
  237. does so by appending comments to the end of the archive.  However, other ARC
  238. format utilities will silently strip all comments from the archive when they
  239. manipulate it.  The result can be a nasty surprise for the user.
  240.  
  241. To summarize, then, here is a list of specific features planned for Zoo:
  242.  
  243. o    Long filenames.  Each file will be optionally stored with the original
  244.      filename, regardless of its length.  When extraction is performed, a
  245.      shorter name will used if necessary.  Any unacceptable special charac-
  246.      ters will be converted to acceptable characters.
  247.  
  248. o    Pathnames.  The original directory name will be optionally stored.
  249.      During extraction, the archive program will optionally restore files to
  250.      their original directories.  If the original pathname uses a syntax
  251.      different from that of the current system, the file will be restored to
  252.      the current (default) directory.
  253.  
  254. o    Text files.  These will be stored in a canonical format.  At extraction
  255.      time the archive program will convert the canonical format to the
  256.      format used by the host system.
  257.  
  258. o    Multiple versions.  Optionally, when a file is added to an archive, the
  259.      added file and already-archived file(s) with the same name will be
  260.      assigned version numbers.  It will be possible to selectively extract a
  261.      specific version of a file from an archive.
  262.  
  263. o    Archive repair.  A utility will allow extraction of undamaged data from
  264.      a damaged archive.
  265.  
  266. o    Fast directory listings.  It will be possible to reorganize archives to
  267.      bring all directory entries to the beginning.  This will allow instan-
  268.      taneous directory listings sorted by name, extension, size, and date.
  269.  
  270. o    Portable code.  A truly standard archiver should be easily implementa-
  271.      ble on a new machine.  The portable implementation of Zoo is discussed
  272.      later in this document.
  273.  
  274.  
  275.                               CURRENT FEATURES
  276.  
  277. Since the purpose of this document is partly to defend Zoo against its
  278. critics, I describe here some of the features of Zoo that distinguish is
  279. from the competition.  Version 1.31 of Zoo for MS-DOS is discussed.  In some
  280. cases samples of captured screen output are given to give you a feel for the
  281. software.  It is my hope that you, the reader, will try Zoo out for
  282. yourself.
  283.  
  284. The following special features of Zoo are discussed.
  285.  
  286. Comments:  A comment may be attached to any file and optionally listed in a
  287. directory listing.
  288.  
  289. Enhanced wildcards:  The "*" character can be used anywhere in a filename.
  290. Character ranges are accepted (e.g. "a-d").
  291.  
  292. Convenient cataloging:  An entire directory or disk may be catalogued with
  293. a single command.
  294.  
  295. Two-step deletion:  Accidental replacement of a precious archived file is
  296. prevented.
  297.  
  298. Batch operation:  Unattended batch operation is possible.
  299.  
  300. User interrupts:  Control C is quickly and gracefully handled.
  301.  
  302. Z format files:  This format allows convenient reorganization of archives.
  303. It also lets BBS users selectively download files without losing the benefit
  304. of compression.
  305.  
  306.  
  307.                              FEATURES IN DETAIL
  308.  
  309.  
  310. COMMENTS.  The user may optionally attach a comment of up to 65,535 charac-
  311. ters to one or more archived files.  Comments may be optionally shown in a
  312. directory listing.
  313.  
  314. Here is an example:
  315.  
  316.      C:/scr>zoo v tvx_exe
  317.  
  318.      Archive TVX_EXE.ZOO:
  319.      Name          Length    CF   Size Now  Date      Time
  320.      ------------  --------  ---  --------  --------- --------
  321.      readme.doc         272  16%       228  29 Jul 86 11:17:08
  322.      tv.exe           40100  33%     26948  29 Jul 86 10:05:22 C
  323.       |The original tvx.
  324.      tv0.exe          39502  32%     26695  29 Jul 86 10:21:26 C
  325.       |The modeless tvx.
  326.      tv0_cfg.exe      17905  28%     12838  29 Jul 86 10:22:46 C
  327.       |Run this to create key configuration file for tv0.exe.
  328.      tv0_ptch.exe     13830  27%     10147  29 Jul 86 10:23:56 C
  329.       |Run this to patch tv0.exe with permanent key definitions.
  330.      tv_cfg.exe       17905  28%     12838  29 Jul 86 10:06:42 C
  331.       |Run this to create key configuration file for tv.exe.
  332.      tv_ptch.exe      13830  27%     10150  29 Jul 86 10:07:50 C
  333.       |Run this to patch tv.exe with permanent key definitions.
  334.      tvm.exe          40190  33%     27100  29 Jul 86 10:34:16 C
  335.       |The Emacs emulator tvx.
  336.      tvm_ptch.exe     13803  27%     10113  29 Jul 86 10:35:56 C
  337.       |Run this to patch tvm.exe with permanent key definitions.
  338.      tvv.exe          40622  32%     27631  29 Jul 86 11:00:32 C
  339.       |The vi emulator tvx.
  340.      tvv_ptch.exe     13830  26%     10175  29 Jul 86 11:02:14 C
  341.       |Run this to patch tvv.exe with permanent key definitions.
  342.      ------------  --------  ---  --------  --------- --------
  343.      TOTAL   11      251789  31%    174863
  344.      ------------
  345.  
  346. Attached comments are meant to be pointers to help the user decide which
  347. files to extract.  Users can ease the busy Sysop's workload by adding brief
  348. but meaningful comments to files before uploading a Zoo archive.  Comments
  349. also allow the addition of brief editorial information without in any way
  350. changing the package of archived files.  This avoids offending authors of
  351. shareware.
  352.  
  353. The presence of comments does not preclude an uncommented directory listing:
  354.  
  355.      C:/scr>zoo l tvx_exe
  356.  
  357.      Archive TVX_EXE.ZOO:
  358.      Name          Length    CF   Size Now  Date      Time
  359.      ------------  --------  ---  --------  --------- --------
  360.      readme.doc         272  16%       228  29 Jul 86 11:17:08
  361.      tv.exe           40100  33%     26948  29 Jul 86 10:05:22 C
  362.      tv0.exe          39502  32%     26695  29 Jul 86 10:21:26 C
  363.      tv0_cfg.exe      17905  28%     12838  29 Jul 86 10:22:46 C
  364.      tv0_ptch.exe     13830  27%     10147  29 Jul 86 10:23:56 C
  365.      tv_cfg.exe       17905  28%     12838  29 Jul 86 10:06:42 C
  366.      tv_ptch.exe      13830  27%     10150  29 Jul 86 10:07:50 C
  367.      tvm.exe          40190  33%     27100  29 Jul 86 10:34:16 C
  368.      tvm_ptch.exe     13803  27%     10113  29 Jul 86 10:35:56 C
  369.      tvv.exe          40622  32%     27631  29 Jul 86 11:00:32 C
  370.      tvv_ptch.exe     13830  26%     10175  29 Jul 86 11:02:14 C
  371.      ------------  --------  ---  --------  --------- --------
  372.      TOTAL   11      251789  31%    174863
  373.      ------------
  374.      C: file has attached comment.
  375.  
  376. Zoo still gently reminds you that comments exist should you wish to read
  377. them.
  378.  
  379. Comments are preserved when an updated file replaces an older version with
  380. the same name.  The user may update, add, or delete comments at any time,
  381. either when the archive is initially created, or later.
  382.  
  383.  
  384. ENHANCED WILDCARDS.  The character "*" may be used anywhere within a file-
  385. name.  A character range of the form "a-d" may be used to select all files
  386. beginning with letters "a" through "d".  Thus, to add selected files to an
  387. archive, one could proceed as follows:
  388.  
  389.      C:/scr>zoo a sample /bin/g-i /bin/x-z
  390.      Zoo:  hdchek.exe   --  (23%) added
  391.      Zoo:  hdtest.exe   --  (23%) added
  392.      Zoo:  ibu.com      --  (19%) added
  393.      Zoo:  indent.com   --  ( 1%) added
  394.      Zoo:  xpc.com      --  (44%) added
  395.      Zoo:  ye.exe       --  (17%) added
  396.      Zoo:  yhp.exe      --  (15%) added
  397.      Zoo:  zoo.exe      --  (20%) added
  398.  
  399. This example showed how one could add to an archive all files in the c:/bin
  400. directory that begin with letters "g" through "i" and "x" through "z".
  401.  
  402. A selective directory listing using wildcards shows all files containing a
  403. "t" before the dot:
  404.  
  405.      C:/scr>zoo l sample *t.*
  406.  
  407.      Archive SAMPLE.ZOO:
  408.      Name          Length    CF   Size Now  Date      Time
  409.      ------------  --------  ---  --------  --------- --------
  410.      hdtest.exe       32546  23%     25091  28 Aug 86 19:44:14
  411.      indent.com         458   1%       453   1 Jun 85 00:00:00
  412.      ------------  --------  ---  --------  --------- --------
  413.      TOTAL    2       33004  23%     25544
  414.  
  415. The wildcards accepted by Zoo are intended to make it easier to reorganize
  416. large numbers of archives.  They give the user more powerful selection
  417. options than have been traditional on microcmputer systems.
  418.  
  419. Zoo will also select groups of archives for directory listings.  Here's a
  420. directory listing of all archives with names beginning with "z":
  421.  
  422.      C:/new>zoo l z*.zoo
  423.  
  424.      Archive ZCOMMDOC.ZOO:
  425.      Name          Length    CF   Size Now  Date      Time
  426.      ------------  --------  ---  --------  --------- --------
  427.      zcomm.bug         1387  42%       798   4 Oct 86 12:34:18
  428.      zcomman.aa      149915  62%     57692   4 Oct 86 05:15:14
  429.      zcomman.ab      186384  64%     66581   4 Oct 86 05:24:08
  430.      zcomman.ac      148480  63%     55538   4 Oct 86 05:30:44
  431.      zcomman.ad        2910  68%       942   4 Oct 86 05:30:46
  432.      zcomman.ai       14823  55%      6686   4 Oct 86 05:36:04
  433.      ------------  --------  ---  --------  --------- --------
  434.      TOTAL    6      503899  63%    188237
  435.  
  436.      Archive ZCOMMEXE.ZOO:
  437.      Name          Length    CF   Size Now  Date      Time
  438.      ------------  --------  ---  --------  --------- --------
  439.      cdemo             7785  46%      4178  27 Mar 86 15:42:42
  440.      cisnodes.lst     11436  44%      6382  27 Mar 86 15:30:22
  441.      phodir.t         13223  45%      7250  14 Oct 86 02:16:10
  442.      revv               708  33%       476  17 Aug 86 15:28:48
  443.      zcomm.exe       122510  30%     85895  13 Oct 86 14:24:22
  444.      ------------  --------  ---  --------  --------- --------
  445.      TOTAL    5      155662  33%    104181
  446.  
  447.  
  448. CONVENIENT CATALOGING.  Any number of archives may be cataloged with a
  449. single command.
  450.  
  451.      C:/scr>zoo la *
  452.  
  453.      hdchek.exe       25456  23%     19644  28 Aug 86 19:40:42    SAMPLE.ZOO
  454.      hdtest.exe       32546  23%     25091  28 Aug 86 19:44:14    SAMPLE.ZOO
  455.      ibu.com           9216  19%      7420  18 May 85 15:48:34    SAMPLE.ZOO
  456.      indent.com         458   1%       453   1 Jun 85 00:00:00    SAMPLE.ZOO
  457.      xpc.com          40562  44%     22754  18 Jun 86 08:42:22    SAMPLE.ZOO
  458.      ye.exe           11396  17%      9504  11 Aug 86 19:26:02    SAMPLE.ZOO
  459.      yhp.exe          14936  15%     12694   8 Jan 86 22:20:24    SAMPLE.ZOO
  460.      zoo.exe          31168  20%     24799  18 Oct 86 21:46:50    SAMPLE.ZOO
  461.      readme.doc         272  16%       228  29 Jul 86 11:17:08    TVX_EXE.ZOO
  462.      tv.exe           40100  33%     26948  29 Jul 86 10:05:22 C  TVX_EXE.ZOO
  463.      tv0.exe          39502  32%     26695  29 Jul 86 10:21:26 C  TVX_EXE.ZOO
  464.      tv0_cfg.exe      17905  28%     12838  29 Jul 86 10:22:46 C  TVX_EXE.ZOO
  465.      tv0_ptch.exe     13830  27%     10147  29 Jul 86 10:23:56 C  TVX_EXE.ZOO
  466.      tv_cfg.exe       17905  28%     12838  29 Jul 86 10:06:42 C  TVX_EXE.ZOO
  467.      tv_ptch.exe      13830  27%     10150  29 Jul 86 10:07:50 C  TVX_EXE.ZOO
  468.      tvm.exe          40190  33%     27100  29 Jul 86 10:34:16 C  TVX_EXE.ZOO
  469.      tvm_ptch.exe     13803  27%     10113  29 Jul 86 10:35:56 C  TVX_EXE.ZOO
  470.      tvv.exe          40622  32%     27631  29 Jul 86 11:00:32 C  TVX_EXE.ZOO
  471.      tvv_ptch.exe     13830  26%     10175  29 Jul 86 11:02:14 C  TVX_EXE.ZOO
  472.      ------------  --------  ---  --------  --------- --------
  473.      TOTAL   19      417527  29%    297222
  474.  
  475. The output from the "la" command contains all selected files in all selected
  476. archives, sorted by archive name.  Each file is listed on a line that
  477. includes the archive name.  Running this output through any sort utility
  478. will yield a list of all archived files sorted by filename.
  479.  
  480. We could also choose the multicolumn format, which lets over a hundred
  481. filenames fit on the screen:
  482.  
  483.      C:/scr>zoo lf *
  484.  
  485.      Archive SAMPLE.ZOO:
  486.      hdchek.exe    hdtest.exe    ibu.com       indent.com    xpc.com
  487.      ye.exe        yhp.exe       zoo.exe
  488.  
  489.      Archive TVX_EXE.ZOO:
  490.      readme.doc    tv.exe        tv0.exe       tv0_cfg.exe   tv0_ptch.exe
  491.      tv_cfg.exe    tv_ptch.exe   tvm.exe       tvm_ptch.exe  tvv.exe
  492.      tvv_ptch.exe
  493.  
  494.  
  495. TWO-STEP DELETION.  When a file is added to an archive, any existing ar-
  496. chived file with the same name is replaced.  However, Zoo does not erase the
  497. replaced file's data until explicitly asked to do so.  Inadvertent deletion
  498. of the replaced file is avoided.  For example, we create an archive:
  499.  
  500.      C:/scr>zoo a sample2 /*.bat
  501.      Zoo:  auto2.bat    --  (13%) added
  502.      Zoo:  autoexec.bat --  (30%) added
  503.      Zoo:  single.bat   --  (16%) added
  504.  
  505. We add the same files again, replacing the previous ones:
  506.  
  507.      C:/scr>zoo a sample2 /*.bat
  508.      Zoo:  auto2.bat    --  (13%) replaced
  509.      Zoo:  autoexec.bat --  (30%) replaced
  510.      Zoo:  single.bat   --  (16%) replaced
  511.  
  512. Here's a directory listing:
  513.  
  514.      C:/scr>zoo l sample2
  515.  
  516.      Archive SAMPLE2.ZOO:
  517.      Name          Length    CF   Size Now  Date      Time
  518.      ------------  --------  ---  --------  --------- --------
  519.      auto2.bat          225  13%       196  10 Jul 86 12:45:22
  520.      autoexec.bat      1210  30%       851  22 Oct 86 16:08:08
  521.      single.bat         287  16%       242   6 Jul 86 19:00:42
  522.      ------------  --------  ---  --------  --------- --------
  523.      TOTAL    3        1722  25%      1289
  524.      ------------
  525.      There are 3 deleted files.
  526.  
  527. The replaced files are still there and can be made them visible:
  528.  
  529.      C:/scr>zoo ld sample2
  530.  
  531.      Archive SAMPLE2.ZOO:
  532.      Name          Length    CF   Size Now  Date      Time
  533.      ------------  --------  ---  --------  --------- --------
  534.      auto2.bat          225  13%       196  10 Jul 86 12:45:22  D
  535.      autoexec.bat      1210  30%       851  22 Oct 86 16:08:08  D
  536.      single.bat         287  16%       242   6 Jul 86 19:00:42  D
  537.      auto2.bat          225  13%       196  10 Jul 86 12:45:22
  538.      autoexec.bat      1210  30%       851  22 Oct 86 16:08:08
  539.      single.bat         287  16%       242   6 Jul 86 19:00:42
  540.      ------------  --------  ---  --------  --------- --------
  541.      TOTAL    6        3444  25%      2578
  542.      ------------
  543.      D: deleted file.
  544.  
  545. The deleted files may still be extracted with the appropriate command.  The
  546. archive may be packed when the user is sure the deleted files are no longer
  547. needed.  (The Novice commands simulate the behaviour of other archive utili-
  548. ties and automatically pack the archive when a file gets replaced.  However,
  549. a backup copy of the original archive remains so replaced files can still be
  550. recovered.)
  551.  
  552.  
  553. BATCH OPERATION.  The "Overwrite?" question may be suppressed while extrac-
  554. tion is being done so that a batch file never has to pause for input.  When
  555. Zoo terminates, it returns an error code if any errors occurred.  The error
  556. code may be tested by the MS-DOS "if errorlevel..." command.
  557.  
  558.  
  559. USER INTERRUPTS.  Zoo may be interrupted at any time.  The interrupt is
  560. recognized within a few seconds, even if extraction or addition of a long
  561. file was in progress.  No garbage files are left behind and archive integ-
  562. rity is not harmed.
  563.  
  564.  
  565. Z FORMAT FILES.  Like the traditional squeezed format, each Z format files
  566. contains one compressed file.  Files may be extracted from any Zoo archive
  567. into Z format:
  568.  
  569.      C:/scr>zoo xz sample
  570.      Zoo:  hdchek.exe   ==> hdchek.eze   -- extracted
  571.      Zoo:  hdtest.exe   ==> hdtest.eze   -- extracted
  572.      Zoo:  ibu.com      ==> ibu.czm      -- extracted
  573.      Zoo:  indent.com   ==> indent.czm   -- extracted
  574.      Zoo:  xpc.com      ==> xpc.czm      -- extracted
  575.      Zoo:  ye.exe       ==> ye.eze       -- extracted
  576.      Zoo:  yhp.exe      ==> yhp.eze      -- extracted
  577.      Zoo:  zoo.exe      ==> zoo.eze      -- extracted
  578.  
  579. Each selected file is extracted into a Z format file with a name of the form
  580. *.?Z?.  Since no uncompression is done, the extraction is extremely fast.
  581. All file attributes (date, time, length, compression factor, and any
  582. attached comments) are preserved.  Z format files may now be selectively
  583. added to other archives:
  584.  
  585.      C:/scr>zoo az new h*.?z? *t.?z?
  586.      Zoo:  hdchek.exe   <== hdchek.eze   -- added
  587.      Zoo:  hdtest.exe   <== hdtest.eze   -- added
  588.      Zoo:  indent.com   <== indent.czm   -- added
  589.  
  590. This has created a new archive with only three files in it.  A directory
  591. listing shows this:
  592.  
  593.      C:/scr>zoo l new
  594.  
  595.      Archive NEW.ZOO:
  596.      Name          Length    CF   Size Now  Date      Time
  597.      ------------  --------  ---  --------  --------- --------
  598.      hdchek.exe       25456  23%     19644  28 Aug 86 19:40:42
  599.      hdtest.exe       32546  23%     25091  28 Aug 86 19:44:14
  600.      indent.com         458   1%       453   1 Jun 85 00:00:00
  601.      ------------  --------  ---  --------  --------- --------
  602.      TOTAL    3       58460  23%     45188
  603.  
  604.  
  605. Since all file attributes are retained in Z format, reorganization of
  606. archives via this format does not risk changing a file's timestamp or losing
  607. any attached comment.
  608.  
  609. The real beneficiary of the Z format is likely to be the bulletin board user
  610. who wishes to avoid downloading a huge archive solely to get selected files
  611. from it.  Bulletin board systems allowing online execution of programs can
  612. let users selectively extract archived files into Z format without giving up
  613. the advantage of compression.
  614.  
  615. Because of the availability of a version of Zoo written entirely in portable
  616. C, authors of bulletin board software can integrate Zoo extraction code into
  617. their own.  This makes it unnecessary to go to awkward extremes to allow
  618. online execution in a safe manner.
  619.  
  620.  
  621.                               THE PORTABLE ZOO
  622.  
  623. Zoo is written in portable C.  The MS-DOS version uses some assembly
  624. language modules and some compiler-specific code for speed and convenience.
  625.  
  626. The portable Zoo as it currently exists includes all features of the MS-DOS
  627. version except the following:  addition of files to an archive, preservation
  628. of file timestamps, and Z format files.  Porting of these remaining features
  629. is in progress.  The target date for the availability of the full portable
  630. Zoo archiver is December 31, 1986.
  631.  
  632. The code for the current portable version is completely independent of
  633. machine architecture, byte ordering, and the way the compiler packs struc-
  634. tures.  It currently compiles and runs on three systems:  (a) MS-DOS using
  635. the Microsoft C compiler version 3.0;  (b) An Intel 310 system with an 80286
  636. CPU running Xenix release 3.0;  and (c) An AT&T 3B2 system running System V
  637. Release 2.1.
  638.  
  639. The eventual objective is to create a portable version that will compile and
  640. execute on a variety of systems with no changes other than in a separate
  641. machine-dependent header file.
  642.  
  643.  
  644.                            COMMON USER QUESTIONS
  645.  
  646. Here are my responses to commonly-raised questions.
  647.  
  648. Q.   Why can't Zoo be compatible with ARC?
  649.  
  650. A.   Compatibility with the ARC format would make most of Zoo's major goals
  651.      impossible to achieve.  The ARC format is not extensible.  Any change
  652.      in the directory structure of an ARC archive makes it immediately
  653.      unreadable by all existing ARC format utilities.
  654.  
  655.      ARC extractors are available on several systems.  Invariably, each
  656.      implementation was an independent effort.  Any change in the ARC format
  657.      would therefore make it necessary for all those independent implemen-
  658.      tors to separately rewrite their code.
  659.  
  660.      Using the ARC format in modified form would only confuse and frustrate
  661.      uses who would expect their current utilities to work with any file
  662.      with an extension of ".ARC".
  663.  
  664.  
  665. Q.   Why can't you at least make Zoo read and extract ARC files?
  666.  
  667. A.   ARC extractors already exist.  It would just make Zoo a little more
  668.      complicated.
  669.  
  670.  
  671. Q.   What is the overworked Sysop going to do?  It's bad enough having both
  672.      LBR and ARC formats to deal with, without making things worse by adding
  673.      a third.
  674.  
  675. A.   Some busy Sysops have already solved the problem by banning all Zoo-
  676.      related files from their systems.  It's not an approach I encourage,
  677.      but it's effective.
  678.  
  679.      Another approach is to recognize that it's possible for several archive
  680.      formats to co-exist while the user population decides what the right
  681.      balance is.  You will still see LBR and LQR files on many systems, and
  682.      users do manage quite well.
  683.  
  684.      It's also possible for a Sysop to simply convert to the Zoo format.
  685.  
  686.  
  687. Q.   I remember when Sysops converted from LBR to ARC.  It was a mess.  It
  688.      took ages to perform the conversion and it was confusing keeping track
  689.      of which file belonged in which archive.
  690.  
  691. A.   It certainly was, but not any more.  The Atoz utility allows conversion
  692.      of a large number of files in LBR or ARC format to Zoo format
  693.      relatively easily.
  694.  
  695.      For each selected archive, Atoz executes an external extraction program
  696.      of your choice.  Then it runs Zoo to create a Zoo archive from the
  697.      extracted files.  Atoz will ask permission before creating each new Zoo
  698.      archive.  Optionally, it will convert an entire batch of LBR or ARC
  699.      files to Zoo archives without user attention.
  700.  
  701.      On a 4.77 MHz MS-DOS system, with a hard disk, conversion speed is
  702.      roughly 3 megabytes per hour, or most of a 10 megabyte collection in 3
  703.      hours.  This does not include time for any disk swapping needed.
  704.  
  705.  
  706. Q.   This is all very well for experienced users, but what about the poor
  707.      novice users?
  708.  
  709. A.   They will learn more easily than you might suspect.  The world of
  710.      public domain software has always depended on the more experienced
  711.      users helping out the less experienced ones.  Zoo isn't going to change
  712.      that.
  713.  
  714.  
  715. Q.   I hate to see Sysops spending more time than they have explaining
  716.      another archiving technique.  Even if it takes very little time to
  717.      explain it to each user, it begins to add up.
  718.  
  719. A.   True, and that's why most Sysops have a bulletin describing the various
  720.      file formats such as LBR, LQR, and ARC.  Individual Sysops have dif-
  721.      ferent policies about users who won't read bulletins.  Some Sysops
  722.      ignore such users;  others gently point out which bulletin answers the
  723.      question.
  724.  
  725.      Most Sysops run a bulletin boards as a hobby and a public service.  If
  726.      they can save their users download time by making Z format extraction
  727.      available, that can only enhance the operation of the bulletin board.
  728.      Many BBSs cater to several computer systems.  The availability of a
  729.      truly universal standard will help.
  730.  
  731.  
  732. Q.   Why do I care about whether or not a Macintosh or a UNIX System V
  733.      machine can extract archvies?  I only use MS-DOS and that's good enough
  734.      for me.
  735.  
  736. A.   You don't have to care, but users of those machines do.  Perhaps they
  737.      would like to download some text files from an IBM-oriented BBS, or
  738.      perhaps they have some thoughts they would like to share with you by
  739.      uploading a file or two.  There are enough text files that are of use
  740.      to users of many different machines to make a universal standard very
  741.      appealing.  In particular, programs written in high-level languages can
  742.      be adapted to run on a variety of machines.  Making such exchange
  743.      possible without sacrificing the advantages of data compression will
  744.      help extend the dwindling supply of public domain software in source
  745.      form.
  746.  
  747.      Users of specific computer systems have frequently expressed disdain
  748.      for users of other computer systems.  First it used to be the TRS-80
  749.      versus the Apple.  Then, for a while, it was CP/M versus MS-DOS.  Now
  750.      it's often the Atari versus the Amiga.  And sometimes, it's IBM
  751.      compatibles versus everything else.  On the entire landscape of tech-
  752.      nological development, however, none of these is more than a speck.
  753.  
  754.      Historically, few computer systems have survived much longer than about
  755.      five years.  Some lasted a little longer.  Others were fading away even
  756.      as they were introduced.  The Zoo format is designed to grow as the
  757.      needs of users grow.  It goes far beyond any one machine or any one
  758.      operating system.
  759.  
  760.      Individual users will have to decide how narrow or how wide they want
  761.      their horizons to be.
  762.  
  763.  
  764. Q.   Talking about software in source form...what about the source code for
  765.      Zoo?
  766.  
  767. A.   The full source for Zoo will be distributed when the portable version
  768.      is ready.  In the meantime, C programmers who would like to port Zoo to
  769.      a system of interest are invited to join in the effort.  Required is
  770.      the ability to exchange data with IBM format diskettes, and the availa-
  771.      bility of a full C compiler.  The file addition part of Zoo still
  772.      remains to be re-coded in portable C and it should be ready in a few
  773.      weeks as I write this.  The current Zoo documentation tells you how to
  774.      contact the author.
  775.  
  776.  
  777.                                 PERFORMANCE
  778.  
  779. Bundled with Zoo version 1.20 was a file called ZOOBENCH.TXT, which gave the
  780. results of my own tests.  I tested Zoo 1.20 against ARCA 1.18, ARCE 1.18,
  781. PKARC 1.0, and PKXARC 2.5.  I used three sets of files:  (a) binary files
  782. only;  (b) text files only;  and (c) a "typical" mix.  My conclusion was
  783. that Zoo 1.20 produced smaller archives than the other programs, and did it
  784. faster.
  785.  
  786. The competition apparently has not stood still.  In a file called
  787. ZOOBAD.TXT, Bob Mahoney, Sysop of the Exec-PC BBS, says that Zoo gives only
  788. a 1% compression improvement and is much slower.
  789.  
  790. A couple of days after I came across ZOOBAD.TXT, I decided to confirm Bob
  791. Mahoney's results for myself.  At about 0350 EST on the morning of Octo-
  792. ber 31, I called the Exec-PC BBS.  From the files area that is accessible
  793. for download to all callers, I downloaded the file PKX32A11.COM.  As best as
  794. I can remember, it was entitled:  "The best, fastest, file archiver".
  795.  
  796. The benchmarks quoted by Bob Mahoney are for PKARC 1.2 and PKXARC 3.3.  When
  797. I executed the self-extracting file PKX32A11, what came out from it was
  798. PKARC version 1.1 (not 1.2) and PKXARC version 3.2 (not 3.3).  That concerns
  799. me.  Sysop Mahoney is quoting figures for versions of these programs that as
  800. far as I can tell aren't listed on his BBS.  I cannot confirm or disprove
  801. the claimed results.
  802.  
  803. Here's a test using the versions that I could download.  I used my IBM PC,
  804. which has a 10 megabyte hard disk.  I also included the ARCA utility in the
  805. test.  I used the contents of file ZCOMMDOC.ARC downloaded from GEnie's IBM
  806. PC RoundTable (it's file number 2134 in software library 6).  The files in
  807. this archive were (in Zoo listing form):
  808.  
  809.      Archive ZCOMMDOC.ZOO:
  810.      Name          Length    CF   Size Now  Date      Time
  811.      ------------  --------  ---  --------  --------- --------
  812.      zcomm.bug         1387  42%       798   4 Oct 86 12:34:18
  813.      zcomman.aa      149915  62%     57692   4 Oct 86 05:15:14
  814.      zcomman.ab      186384  64%     66581   4 Oct 86 05:24:08
  815.      zcomman.ac      148480  63%     55538   4 Oct 86 05:30:44
  816.      zcomman.ad        2910  68%       942   4 Oct 86 05:30:46
  817.      zcomman.ai       14823  55%      6686   4 Oct 86 05:36:04
  818.      ------------  --------  ---  --------  --------- --------
  819.      TOTAL    6      503899  63%    188237
  820.  
  821. Here are my results:
  822.  
  823.      program     archiving time    final size of archive   extraction time
  824.      -------     --------- ----    ----- ---- -- -------   ---------- ----
  825.      Zoo 1.31       2 min 44 s         188,665 bytes         2 min  0 s
  826.      PKARC 1.1      2 min 20 s         198,086 bytes
  827.      PKXARC 3.2                                              1 min 18 s
  828.      ARCA 1.22      2 min 38 s         199,438 bytes
  829.  
  830. The PK utilities are clearly fast.  ARCA is faster than Zoo too.  But notice
  831. the size of each archive.
  832.  
  833. I make this suggestion to you:  Be very careful when you evaluate claims of
  834. performance, whether from me or from anybody else.  It will be a tragedy if
  835. users decide against using Zoo without ever themselves trying it out.  Re-
  836. member, Zoo is currently public domain and it costs you nothing save perhaps
  837. a phone call or some connect time charges to get a copy for yourself.  Try
  838. it out, get a feel for it, experience its power.
  839.  
  840. And then, Gentle Reader, before you make your decision, be sure you have
  841. understood the philosophy behind the Zoo project.  Remember too that other
  842. archivers have reached their current state after a long period of develop-
  843. ment.  They can go little further without violating the standard they are
  844. trying to adhere to.
  845.  
  846. This is just the beginning for Zoo.
  847.  
  848. As my online acquaintance Tom Herman says:  Let ZOO go at its own pace, and
  849. see if all the promised features appear.  If you set out to kill it through
  850. defamation, we may never see what it could grow to be.
  851.  
  852. Thanks, Tom.  And I thank you, the reader, for reading this far.
  853.  
  854.                                   -- Rahul Dhesi 1986/11/01
  855.  
  856.                             ====End of File====
  857.