home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 3 / 3617 < prev    next >
Text File  |  1991-07-10  |  52KB  |  1,129 lines

  1. Newsgroups: alt.sources
  2. Subject: zoo 2.1 source part 12/15
  3. Message-ID: <12779@bsu-cs.bsu.edu>
  4. From: dhesi@bsu-cs.bsu.edu (Rahul Dhesi)
  5. Date: 10 Jul 91 11:20:09 GMT
  6.  
  7. Checksum: 2763753897 (verify with "brik -cv")
  8. Submitted-by: dhesi@bsu-cs.bsu.edu
  9. Archive-name: zoo210/part12
  10.  
  11. ---- Cut Here and feed the following to sh ----
  12. #!/bin/sh
  13. # This is part 12 of zoo210
  14. # ============= zoo.man ==============
  15. if test -f 'zoo.man' -a X"$1" != X"-c"; then
  16.     echo 'x - skipping zoo.man (File already exists)'
  17. else
  18. echo 'x - extracting zoo.man (Text)'
  19. sed 's/^X//' << 'SHAR_EOF' > 'zoo.man' &&
  20. X
  21. ZOO(1)                  REFERENCE MANUAL                   ZOO(1)
  22. X
  23. NAME
  24. X     zoo - manipulate archives of files in compressed form
  25. X
  26. SYNOPSIS
  27. X     zoo {acfDeghHlLPTuUvVx}[aAcCdEfghImMnNoOpPqSu1:/.@n+-=]
  28. X     archive [file] ...
  29. X     zoo -command archive [file] ...
  30. X     zoo h
  31. X
  32. DESCRIPTION
  33. X     Zoo is used to create and maintain collections of files in
  34. X     compressed form.  It uses a Lempel-Ziv compression algorithm
  35. X     that gives space savings in the range of 20% to 80% depend-
  36. X     ing on the type of file data.  Zoo can store and selectively
  37. X     extract multiple generations of the same file.  Data can be
  38. X     recovered from damaged archives by skipping the damaged por-
  39. X     tion and locating undamaged data with the help of fiz(1).
  40. X
  41. X     This documentation is for version 2.1.  Changes from previ-
  42. X     ous versions are described in the section labelled CHANGES.
  43. X
  44. X     The command zoo h gives a summary of commands.  Extended
  45. X     multiscreen help can be obtained with zoo H.
  46. X
  47. X     Zoo will not add an archive to itself, nor add the archive's
  48. X     backup (with .bak extension to the filename) to the archive.
  49. X
  50. X     Zoo has two types of commands:  Expert commands, which con-
  51. X     sist of one command letter followed by zero or more modifier
  52. X     characters, and Novice commands, which consist of a hyphen
  53. X     (`-') followed by a command word that may be abbreviated.
  54. X     Expert commands are case-sensitive but Novice commands are
  55. X     not.
  56. X
  57. X     When zoo adds a file to an existing archive, the default
  58. X     action is to maintain one generation of each file in an
  59. X     archive and to mark any older generation as deleted.  A
  60. X     limit on the number of generations to save can be specified
  61. X     by the user for an entire archive, or for each file indivi-
  62. X     dually, or both.  Zoo deletes a stored copy of an added file
  63. X     if necessary to prevent the number of stored generations
  64. X     from exceeding the user-specified limit.
  65. X
  66. X     Deleted files may be later undeleted.  Archives may be
  67. X     packed to recover space occupied by deleted files.
  68. X
  69. X     All commands assume that the archive name ends with the
  70. X     characters .zoo unless a different extension is supplied.
  71. X
  72. X     Novice commands
  73. X
  74. X     Novice commands may be abbreviated to a hyphen followed by
  75. X     at least one command character.  Each Novice command works
  76. X     in two stages. First, the command does its intended work.
  77. X     Then, if the result was that one or more files were deleted
  78. X     in the specified archive, the archive is packed.  If packing
  79. X     occurs, the original unpacked archive is always left behind
  80. X     with an extension of .bak.
  81. X
  82. X     No Novice command ever stores the directory prefix of a
  83. X     file.
  84. X
  85. X     The Novice commands are as follows.
  86. X
  87. X     -add    Adds the specified files to the archive.
  88. X
  89. X     -freshen
  90. X          Adds a specified file to the archive if and only if an
  91. X          older file by the same name already exists in the
  92. X          archive.
  93. X
  94. X     -delete
  95. X          Deletes the specified files from the archive.
  96. X
  97. X     -update
  98. X          Adds a specified file to the archive either:  if an
  99. X          older file by the same name already exists in the
  100. X          archive or:  if a file by the same name does not
  101. X          already exist in the archive.
  102. X
  103. X     -extract
  104. X          Extracts the specified files from the archive.  If no
  105. X          file is specified all files are extracted.
  106. X
  107. X     -move
  108. X          Equivalent to -add except that source files are deleted
  109. X          after addition.
  110. X
  111. X     -print
  112. X          Equivalent to -extract except that extracted data are
  113. X          sent to standard output.
  114. X
  115. X     -list
  116. X          Gives information about the specified archived files
  117. X          including any attached comments.  If no files are
  118. X          specified all files are listed.  Deleted files are not
  119. X          listed.
  120. X
  121. X     -test
  122. X          Equivalent to -extract except that the extracted data
  123. X          are not saved but any errors encountered are reported.
  124. X
  125. X     -comment
  126. X          Allows the user to add or update comments attached to
  127. X          archived files.  When prompted, the user may:  type a
  128. X          carriage return to skip the file, leaving any current
  129. X          comment unchanged;  or type a (possibly null) comment
  130. X          of up to 32,767 characters terminated by /end (case-
  131. X          insensitive) on a separate line;  or type the end-of-
  132. X          file character (normally control D) to skip all remain-
  133. X          ing files.
  134. X
  135. X     -delete
  136. X          Deletes the specified files.
  137. X
  138. X     The correspondence between Novice and Expert commands is as follows.
  139. X
  140. X     Novice                                        Equivalent
  141. X     Command    Description                        Expert Command
  142. X     ____________________________________________________________
  143. X     -add       add files to archive               aP:
  144. X     -extract   extract files from archive         x
  145. X     -move      move files to archive              aMP:
  146. X     -test      test archive integrity             xNd
  147. X     -print     extract files to standard output   xp
  148. X     -delete    delete files from archive          DP
  149. X     -list      list archive contents              VC
  150. X     -update    add new or newer files             aunP:
  151. X     -freshen   by add newer files                 auP:
  152. X     -comment   add comments to files              c
  153. X
  154. X     Expert commands
  155. X
  156. X     The general format of expert commands is:
  157. X
  158. X     zoo {acfDeghHlLPTuUvVx}[aAcCdEfghImMnNoOpPqSu1:/.@n+-=]
  159. X     archive [file] ...
  160. X
  161. X     The characters enclosed within {} are commands.  Choose any
  162. X     one of these.  The characters enclosed within [] just to the
  163. X     right of the {} are modifiers and zero or more of these may
  164. X     immediately follow the command character.  All combinations
  165. X     of command and modifier characters may not be valid.
  166. X
  167. X     Files are added to an archive with the command:
  168. X
  169. X     zoo {au}[cfhIMnPqu:+-] archive [file] ...
  170. X
  171. X     Command characters are:
  172. X
  173. X     a    Add each specified file to archive.  Any already-
  174. X          archived copy of the file is deleted if this is neces-
  175. X          sary to avoid exceeding the user-specified limit on the
  176. X          number of generations of the file to maintain in the
  177. X          archive.
  178. X
  179. X     u    Do an update of the archive.  A specified file is added
  180. X          to the archive only if a copy of it is already in the
  181. X          archive and the copy being added is newer than the copy
  182. X          already in the archive.
  183. X
  184. X     The following modifiers are specific to these commands.
  185. X
  186. X     M    Move files to archive.  This makes zoo delete (unlink)
  187. X          the original files after they have been added to the
  188. X          archive.  Files are deleted after addition of all files
  189. X          to the archive is complete and after any requested
  190. X          packing of the archive has been done, and only if zoo
  191. X          detected no errors.
  192. X
  193. X     n    Add new files only.  A specified file is added only if
  194. X          it isn't already in the archive.
  195. X
  196. X     h    Use the high performance compression algorithm. This
  197. X          option may be used with either the add (a) or filter
  198. X          (f) commands to gain extra compression at the expense
  199. X          of using somewhat more processor time. Extracting files
  200. X          compressed with the method is usually slightly faster
  201. X          than those saved with the default method.
  202. X
  203. X     P    Pack archive after files have been added.
  204. X
  205. X     u    Applied to the a command, this modifier makes it behave
  206. X          identically to the u command.
  207. X
  208. X          The combination of the n modifier with the u modifier
  209. X          or u command causes addition of a file to the archive
  210. X          either if the file is not already in the archive, or if
  211. X          the file is already in the archive but the archived
  212. X          copy is older than the copy being added.
  213. X
  214. X     :    Do not store directory names.  In the absence of this
  215. X          modifier zoo stores the full pathname of each archived
  216. X          file.
  217. X
  218. X     I    Read filenames to be archived from standard input. Zoo
  219. X          will read its standard input and assume that each line
  220. X          of text contains a filename.  Under AmigaDOS and the
  221. X          **IX family, the entire line is used.  Under MS-DOS and
  222. X          VAX/VMS, zoo assumes that the filename is terminated by
  223. X          a blank, tab, or newline; thus it is permissible for
  224. X          the line of text to contain more than one field
  225. X          separated by white space, and only the first field will
  226. X          be used.
  227. X
  228. X          Under the **IX family of operating systems, zoo can be
  229. X          used as follows in a pipeline:
  230. X
  231. X               find . -print | zoo aI sources
  232. X
  233. X          If the I modifier is specified, no filenames may be
  234. X          supplied on the command line itself.
  235. X
  236. X     +,-  These modifiers take effect only if the a command
  237. X          results in the creation of a new archive.  + causes any
  238. X          newly-created archive to have generations enabled.  -
  239. X          is provided for symmetry and causes any newly-created
  240. X          archive to have generations disabled;  this is also the
  241. X          default if neither + nor - is specified.
  242. X
  243. X     Files are extracted from an archive with the command:
  244. X
  245. X     zoo {ex}[dNoOpqS./@] archive [file] ...
  246. X
  247. X     The e and x commands are synonymous.  If no file was speci-
  248. X     fied, all files are extracted from the archive.
  249. X
  250. X     The following modifiers are specific to the e and x com-
  251. X     mands:
  252. X
  253. X     N    Do not save extracted data but report any errors
  254. X          encountered.
  255. X
  256. X     O    Overwrite files.  Normally, if a file being extracted
  257. X          would overwrite an already-existing file of the same
  258. X          name, zoo asks you if you really want to overwrite it.
  259. X          You may answer the question with `y', which means yes,
  260. X          overwrite; or `n', which means no, don't overwrite; or
  261. X          `a', which means assume the answer is `y' for this and
  262. X          all subsequent files.  The O modifier makes zoo assume
  263. X          that files may always be overwritten.  Neither answer-
  264. X          ing the question affirmatively nor using O alone will
  265. X          cause read-only files to be overwritten.
  266. X
  267. X          On **IX systems, however, doubling this modifier as OO
  268. X          will force zoo to unconditionally overwrite any read-
  269. X          protected files with extracted files if it can do so.
  270. X
  271. X          The O, N, and p modifiers are mutually exclusive.
  272. X
  273. X     S    Supersede newer files on disk with older extracted
  274. X          files.  Unless this modifier is used, zoo will not
  275. X          overwrite a newer existing file with an older extracted
  276. X          file.
  277. X
  278. X     o    This is equivalent to the O modifier if and only if it
  279. X          is given at least twice.  It is otherwise ignored.
  280. X
  281. X     p    Pipe extracted data to standard output.  Error messages
  282. X          are piped to standard output as well.  However, if a
  283. X          bad CRC is detected, an error message is sent both to
  284. X          standard error and to standard output.
  285. X
  286. X     /    Extract to original pathname.  Any needed directories
  287. X          must already exist.  In the absence of this modifier
  288. X          all files are extracted into the current directory.  If
  289. X          this modifier is doubled as //, required directories
  290. X          need not exist and are created if necessary.
  291. X
  292. X     The management of multiple generations of archived files is
  293. X     done with the commands:
  294. X
  295. X     zoo gl[Aq]{+-=}number archive files ..
  296. X     zoo gc[q]{+-=}number archive files ..
  297. X     zoo gA[q]- archive
  298. X     zoo gA[q]+ archive
  299. X
  300. X     The first form, gl, adjusts the generation limit of selected
  301. X     files by the specified value.  If the form =n is used, where
  302. X     n is a decimal number, this sets the generation limit to the
  303. X     specified value.  If + or - are used in placed of = the
  304. X     effect is to increment or decrement the generation limit by
  305. X     the specified value.  For example, the command
  306. X
  307. X          zoo gl=5 xyz :
  308. X
  309. X
  310. X     sets the generation limit of each file in the archive
  311. X     xyz.zoo to a value of 5.  The command
  312. X
  313. X          zoo gl-3 xyz :
  314. X
  315. X
  316. X     decrements the generation limit of each file in the archive
  317. X     to 3 less than it currently is.
  318. X
  319. X     If the A modifier is used, the archive-wide generation limit
  320. X     is adjusted instead.
  321. X
  322. X     The number of generations of a file maintained in an archive
  323. X     is limited by the file generation limit, or the archive gen-
  324. X     eration limit, whichever is lower.  As a special case, a
  325. X     generation limit of 0 stands for no limit.  Thus the default
  326. X     file generation limit of 0 and archive generation limit of 3
  327. X     limits the number of generations of each file in a newly-
  328. X     created archive to three.
  329. X
  330. X     The generation limit specified should be in the range 0
  331. X     through 15;  any higher numbers are interpreted modulo 16.
  332. X
  333. X     The second form of the command, using gc, adjusts the gen-
  334. X     eration count of selected files.  Each file has a generation
  335. X     count of 1 when it is first added to an archive.  Each time
  336. X     a file by the same name is added again to an archive, it
  337. X     receives a generation count that is one higher than the
  338. X     highest generation count of the archived copy of the file.
  339. X     The permissible range of generation counts is 1 through
  340. X     65535.  If repeated manipulations of an archive result in
  341. X     files having very high generation counts, they may be set
  342. X     back to lower numbers with the gc command.  The syntax of
  343. X     the command is analogous to the syntax of the gl command,
  344. X     except that the A modifier is not applicable to the gc com-
  345. X     mand.
  346. X
  347. X     The third form, gA-, disables generations in an archive.
  348. X     Generations are off when an archive is first created, but
  349. X     may be enabled with the fourth form of the command, gA+.
  350. X     When generations are disabled in an archive, zoo will not
  351. X     display generation numbers in archive listings or maintain
  352. X     multiple generations.  Generations can be re-enabled at any
  353. X     time, though manipulation of an archive with repeated inter-
  354. X     spersed gA- and gA+ commands may result in an archive whose
  355. X     behavior is not easily understandable.
  356. X
  357. X     Archived files are listed with the command:
  358. X
  359. X     zoo {lLvV}[aAcCdfgmqvV@/1+-] archive[.zoo] [file] ...
  360. X
  361. X     l    Information presented includes the date and time of
  362. X          each file, its original and current (compressed) sizes,
  363. X          and the percentage size decrease due to compression
  364. X          (labelled CF or compression factor).  If a file was
  365. X          added to the archive in a different timezone, the
  366. X          difference between timezones is shown in hours as a
  367. X          signed number.  As an example, if the difference is
  368. X          listed as +3, this means that the file was added to the
  369. X          archive in a timezone that is 3 hours west of the
  370. X          current timezone.  The file time listed is, however,
  371. X          always the original timestamp of the archived file, as
  372. X          observed by the user who archived the file, expressed
  373. X          as that user's local time.  (Timezone information is
  374. X          stored and displayed only if the underlying operating
  375. X          system knows about timezones.)
  376. X
  377. X          If no filename is supplied all files are listed except
  378. X          deleted files.
  379. X
  380. X          Zoo selects which generation(s) of a file to list
  381. X          according to the following algorithm.
  382. X
  383. X          If no filename is supplied, only the latest generation
  384. X          of each file is listed.  If any filenames are
  385. X          specified, and a generation is specified for an argu-
  386. X          ment, only the requested generation is listed.  If a
  387. X          filename is specified ending with the generation char-
  388. X          acter (`:' or `;'), all generations of that file are
  389. X          listed.  Thus a filename argument of the form zoo.c
  390. X          will cause only the latest generation of zoo.c to be
  391. X          listed;  an argument of the form zoo.c:4 will cause
  392. X          generation 4 of zoo.c to be listed;  and an argument of
  393. X          the form zoo.c: or zoo.c:* will cause all generations
  394. X          of zoo.c to be listed.
  395. X
  396. X     L    This is similar to the l command except that all sup-
  397. X          plied arguments must be archives and all non-deleted
  398. X          generations of all files in each archive appear in the
  399. X          listing.
  400. X
  401. X          On **IX systems, on which the shell expands arguments,
  402. X          if multiple archives are to be listed, the L command
  403. X          must be used.  On other systems (VAX/VMS, AmigaDOS,
  404. X          MSDOS) on which wildcard expansion is done internally
  405. X          by zoo, wildcards may be used in the archive name, and
  406. X          a multiple archive listing obtained, using the l com-
  407. X          mand.
  408. X
  409. X     v    This causes any comment attached to the archive to be
  410. X          listed in addition to the other information.
  411. X
  412. X     V    This causes any comment attached to the archive and
  413. X          also any comment attached to each file to be listed.
  414. X
  415. X          Both the V and v command characters can also be used as
  416. X          modifiers to the l and L commands.
  417. X
  418. X     In addition to the general modifiers described later, the
  419. X     following modifiers can be applied to the archive list com-
  420. X     mands.
  421. X
  422. X     a    This gives a single-line format containing both each
  423. X          filename and the name of the archive, sorted by archive
  424. X          name.  It is especially useful with the L command,
  425. X          since the result can be further sorted on any field to
  426. X          give a master listing of the entire contents of a set
  427. X          of archives.
  428. X
  429. X     A    This causes any comment attached to the archive to be
  430. X          listed.
  431. X
  432. X     g    This modifier causes file generation information to be
  433. X          listed about the archive.  For each file listed, the
  434. X          user-specified generation limit, if any, is listed.
  435. X          For example, `3g' for a file means that the user wants
  436. X          no more than three generations of the file to be kept.
  437. X          In archives created by older versions of zoo, the list-
  438. X          ing will show `-g', meaning that no generation informa-
  439. X          tion is kept and multiple generations of the file are
  440. X          not being maintained.
  441. X
  442. X          In addition to the generation information for each
  443. X          file, the archive-wide generation limit, if any, is
  444. X          shown at the end of the listing.  If generations have
  445. X          been disabled by the user, this is so indicated, for
  446. X          example:
  447. X
  448. X               Archive generation limit is 3 (generations off).
  449. X
  450. X          For more information about generations see the descrip-
  451. X          tion of the g command.
  452. X
  453. X     m    This modifier is currently applicable to **IX systems
  454. X          only.  It causes the mode bits (file protection code)
  455. X          of each file to be listed as a three-digit octal
  456. X          number.  Currently zoo preserves only the lowest nine
  457. X          mode bits.  Their meanings are as described in the **IX
  458. X          documentation for the chmod(1) command.
  459. X
  460. X     C    This modifier causes the stored cyclic redundancy code
  461. X          (CRC) for each archived file to be shown as a four-
  462. X          digit hexadecimal number.
  463. X
  464. X     1    This forces one filename to be listed per line.  It is
  465. X          most useful in combination with the f modifier.
  466. X
  467. X     /    This forces any directory name to be always listed,
  468. X          even in fast columnized listings that do not normally
  469. X          include any directory names.
  470. X
  471. X     +,-  The - modifier causes trailing generation numbers to be
  472. X          omitted from filenames.  The + modifier causes the
  473. X          trailing generation numbers to be shown, which is also
  474. X          the default if neither - nor + is specified.
  475. X
  476. X     Files may be deleted and undeleted from an archive with the
  477. X     following commands:
  478. X
  479. X     zoo {DU}[Pq1] archive file ...
  480. X
  481. X     The D command deletes the specified files and the U command
  482. X     undeletes the specified files.  The 1 modifier (the digit
  483. X     one, not the letter ell) forces deletion or undeletion of at
  484. X     most one file.  If multiple instances of the same file exist
  485. X     in an archive, use of the 1 modifier may allow selective
  486. X     extraction of one of these.
  487. X
  488. X     Comments may be added to an archive with the command:
  489. X
  490. X     zoo c[A] archive
  491. X
  492. X     Without the modifier A, this behaves identically to the
  493. X     -comment command.  With the modifier A, the command serves
  494. X     to add or update the comment attached to the archive as a
  495. X     whole.  This comment may be listed with the lA, LA, v, and V
  496. X     commands.  Applying the cA command to an archive that was
  497. X     created with an older version of zoo will result in an error
  498. X     message requesting that the user first pack the archive with
  499. X     the P command.  This reorganizes the archive and creates
  500. X     space for the archive comment.
  501. X
  502. X     The timestamp of an archive may be adjusted with the com-
  503. X     mand:
  504. X
  505. X     zoo T[q] archive
  506. X
  507. X     Zoo normally attempts to maintain the timestamp of an
  508. X     archive to reflect the age of the newest file stored in it.
  509. X     Should the timestamp ever be incorrect it can be fixed with
  510. X     the T command.
  511. X
  512. X     An archive may be packed with the command:
  513. X
  514. X     zoo P[EPq] archive
  515. X
  516. X     If the backup copy of the archive already exists, zoo will
  517. X     refuse to pack the archive unless the P modifier is also
  518. X     given.  The E modifier causes zoo not to save a backup copy
  519. X     of the original archive after packing.  A unique temporary
  520. X     file in the current directory is used to initially hold the
  521. X     packed archive.  This file will be left behind if packing is
  522. X     interrupted or if for some reason this file cannot be
  523. X     renamed to the name of the original archive when packing is
  524. X     complete.
  525. X
  526. X     Packing removes any garbage data appended to an archive
  527. X     because of Xmodem file transfer and also recovers any wasted
  528. X     space remaining in an archive that has been frequently
  529. X     updated or in which comments were replaced.  Packing also
  530. X     updates the format of any archive that was created by an
  531. X     older version of zoo so that newer features (e.g. archive-
  532. X     wide generation limit, archive comment) become fully avail-
  533. X     able.
  534. X
  535. X     Zoo can act as a pure compression or uncompression filter,
  536. X     reading from standard input and writing to standard output.
  537. X     This is achieved with the command:
  538. X
  539. X     zoo f{cu}[h
  540. X
  541. X     where c specifies compression, u specifies uncompression,
  542. X     and h used in addition requests the high-performance
  543. X     compression be used.  A CRC value is used to check the
  544. X     integrity of the data.  The compressed data stream has no
  545. X     internal archive structure and contains multiple files only
  546. X     if the input data stream was already structured, as might be
  547. X     obtained, for example, from tar or cpio.
  548. X
  549. X      Modem transfers can be speeded up with these commands:
  550. X
  551. X               zoo fc < file | sz ... rz | zoo fu > file
  552. X
  553. X
  554. X     General modifiers
  555. X
  556. X     The following modifiers are applicable to several commands:
  557. X
  558. X     c    Applied to the a and u commands, this causes the user
  559. X          to be prompted for a comment for each file added to the
  560. X          archive.  If the file being added has replaced, or is a
  561. X          newer generation of, a file already in the archive, any
  562. X          comment attached to that file is shown to the user and
  563. X          becomes attached to the newly-added file unless the
  564. X          user changes it.  Possible user responses are as
  565. X          described for the -comment command.  Applied to the
  566. X          archive list command l, the c modifier causes the list-
  567. X          ing of any comments attached to archived files.
  568. X
  569. X      .   In conjunction with / or // this modifier causes any
  570. X          extracted pathname beginning with `/' to be interpreted
  571. X          relative to the current directory, resulting in the
  572. X          possible creation of a subtree rooted at the current
  573. X          directory.  In conjunction with the command P the .
  574. X          modifier causes the packed archive to be created in the
  575. X          current directory.  This is intended to allow users
  576. X          with limited disk space but multiple disk drives to
  577. X          pack large archives.
  578. X
  579. X     d    Most commands that act on an archive act only on files
  580. X          that are not deleted.  The d modifier makes commands
  581. X          act on both normal and deleted files.  If doubled as
  582. X          dd, this modifier forces selection only of deleted
  583. X          files.
  584. X
  585. X     f    Applied to the a and u commands, the f modifier causes
  586. X          fast archiving by adding files without compression.
  587. X          Applied to l it causes a fast listing of files in a
  588. X          multicolumn format.
  589. X
  590. X     q    Be quiet.  Normally zoo lists the name of each file and
  591. X          what action it is performing.  The q modifier
  592. X          suppresses this.  When files are being extracted to
  593. X          standard output, the q modifier suppresses the header
  594. X          preceding each file.  When archive contents are being
  595. X          listed, this modifier suppresses any header and
  596. X          trailer.  When a fast columnized listing is being
  597. X          obtained, this modifier causes all output to be com-
  598. X          bined into a single set of filenames for all archives
  599. X          being listed.
  600. X
  601. X          When doubled as qq, this modifier suppresses WARNING
  602. X          messages, and when tripled as qqq, ERROR messages are
  603. X          suppressed too.  FATAL error messages are never
  604. X          suppressed.
  605. X
  606. X     Recovering data from damaged archives
  607. X
  608. X     The @ modifier allows the user to specify the exact position
  609. X     in an archive where zoo should extract a file from, allowing
  610. X     damaged portions of an archive to be skipped.  This modifier
  611. X     must be immediately followed by a decimal integer without
  612. X     intervening spaces, and possibly by a comma and another
  613. X     decimal integer, giving a command of the form l@m or l@m,n
  614. X     (to list archive contents) or x@m or x@m,n (to extract files
  615. X     from an archive).  Listing or extraction begin at position m
  616. X     in the archive.  The value of m must be the position within
  617. X     the archive of an undamaged directory entry.  This position
  618. X     is usually obtained from fiz(1) version 2.0 or later.
  619. X
  620. X     If damage to the archive has shortened or lengthened it, all
  621. X     positions within the archive may be changed by some constant
  622. X     amount.  To compensate for this, the value of n may be
  623. X     specified.  This value is also usually obtained from fiz(1).
  624. X     It should be the position in the archive of the file data
  625. X     corresponding to the directory entry that has been specified
  626. X     with m.  Thus if the command x@456,575 is given, it will
  627. X     cause the first 456 bytes of the archive to be skipped and
  628. X     extraction to begin at offset 456;  in addition, zoo will
  629. X     attempt to extract the file data from position 575 in the
  630. X     archive instead of the value that is found in the directory
  631. X     entry read from the archive.  For example, here is some of
  632. X     the output of fiz when it acts on a damaged zoo archive:
  633. X
  634. X     ****************
  635. X         2526: DIR  [changes] ==>   95
  636. X         2587: DATA
  637. X     ****************
  638. X         3909: DIR  [copyrite] ==> 1478
  639. X         3970: DATA
  640. X         4769: DATA
  641. X     ****************
  642. X
  643. X     In such output, DIR indicates where fiz found a directory
  644. X     entry in the archive, and DATA indicates where fiz found
  645. X     file data in the archive.  Filenames located by fiz are
  646. X     enclosed in square brackets, and the notation "==>   95"
  647. X     indicates that the directory entry found by fiz at position
  648. X     2526 has a file data pointer to position 95.  (This is
  649. X     clearly wrong, since file data always occur in an archive
  650. X     after their directory entry.)  In actuality, fiz found file
  651. X     data at positions 2587, 3970, and 4769.  Since fiz found
  652. X     only two directory entries, and each directory entry
  653. X     corresponds to one file, one of the file data positions is
  654. X     an artifact.
  655. X
  656. X     In this case, commands to try giving to zoo might be
  657. X     x@2526,2587 (extract beginning at position 2526, and get
  658. X     file data from position 2587), x@3090,3970 (extract at 3090,
  659. X     get data from 3970) and x@3909,4769 (extract at 3909, get
  660. X     data from 4769).  Once a correctly-matched directory
  661. X     entry/file data pair is found, zoo will in most cases syn-
  662. X     chronize with and correctly extract all files subsequently
  663. X     found in the archive.  Trial and error should allow all
  664. X     undamaged files to be extracted.  Also note that self-
  665. X     extracting archives created using sez (the Self-Extracting
  666. X     Zoo utility for MS-DOS), which are normally executed on an
  667. X     MS-DOS system for extraction, can be extracted on non-MSDOS
  668. X     systems using zoo's damaged-archive recovery method using
  669. X     the @ modifier.
  670. X
  671. X     Wildcard handling
  672. X
  673. X     Under the **IX family of operating systems, the shell nor-
  674. X     mally expands wildcards to a list of matching files.  Wild-
  675. X     cards that are meant to match files within an archive must
  676. X     therefore be escaped or quoted.  When selecting files to be
  677. X     added to an archive, wildcard conventions are as defined for
  678. X     the shell.  When selecting files from within an archive,
  679. X     wildcard handling is done by zoo as described below.
  680. X
  681. X     Under MS-DOS and AmigaDOS, quoting of wildcards is not
  682. X     needed.  All wildcard expansion of filenames is done by zoo,
  683. X     and wildcards inside directory names are expanded only when
  684. X     listing or extracting files but not when adding them.
  685. X
  686. X     The wildcard syntax interpreted by zoo is limited to the
  687. X     following characters.
  688. X
  689. X     *    Matches any sequence of zero or more characters.
  690. X
  691. X     ?    Matches any single character.
  692. X
  693. X          Arbitrary combinations of * and ? are allowed.
  694. X
  695. X     /    If a supplied pattern contains a slash anywhere in it,
  696. X          then the slash separating any directory prefix from the
  697. X          filename must be matched explicitly.  If a supplied
  698. X          pattern contains no slashes, the match is selective
  699. X          only on the filename.
  700. X
  701. X     c-c  Two characters separated by a hyphen specify a charac-
  702. X          ter range.  All filenames beginning with those charac-
  703. X          ters will match.  The character range is meaningful
  704. X          only by itself or preceded by a directory name.  It is
  705. X          not specially interpreted if it is part of a filename.
  706. X
  707. X     : and ;
  708. X          These characters are used to separate a filename from a
  709. X          generation number and are used when selecting specific
  710. X          generations of archived files.  If no generation char-
  711. X          acter is used, the filename specified matches only the
  712. X          latest generation of the file.  If the generation char-
  713. X          acter is specified, the filename and the generation are
  714. X          matched independently by zoo's wildcard mechanism.  If
  715. X          no generation is specified following the : or ; charac-
  716. X          ter, all generations of that file will match.  As a
  717. X          special case, a generation number of 0 matches only the
  718. X          latest generation of a file, while ^0 matches all gen-
  719. X          erations of a file except the latest one.  If no
  720. X          filename is specified preceding the generation charac-
  721. X          ter, all filenames will match.  As a corollary, the
  722. X          generation character by itself matches all generations
  723. X          of all files.
  724. X
  725. X     MS-DOS users should note that zoo does not treat the dot as
  726. X     a special character, and it does not ignore characters fol-
  727. X     lowing an asterisk.  Thus * matches all filenames; *.*
  728. X     matches filenames containing a dot; *_* matches filenames
  729. X     containing an underscore;  and *z matches all filenames that
  730. X     end with the character z, whether or not they contain a dot.
  731. X
  732. X     Usage hints
  733. X
  734. X     The Novice command set in zoo is meant to provide an inter-
  735. X     face with functionality and format that will be familiar to
  736. X     users of other similar archive utilities.  In keeping with
  737. X     this objective, the Novice commands do not maintain or use
  738. X     any subdirectory information or allow the use of zoo's abil-
  739. X     ity to maintain multiple generations of files.  For this
  740. X     reason, users should switch to exclusively using the Expert
  741. X     commands as soon as possible.
  742. X
  743. X     Although the Expert command set is quite large, it should be
  744. X     noted that in almost every case, all legal modifiers for a
  745. X     command are fully orthogonal.  This means that the user can
  746. X     select any combination of modifiers, and when they act
  747. X     together, they will have the intuitively obvious effect.
  748. X     Thus the user need only memorize what each modifier does,
  749. X     and then can combine them as needed without much further
  750. X     thought.
  751. X
  752. X     For example, consider the a command which is used to add
  753. X     files to an archive.  By itself, it simply adds the speci-
  754. X     fied files.  To cause only already-archived files to be
  755. X     updated if their disk copies have been modified, it is only
  756. X     necessary to add the u modifier, making the command au.  To
  757. X     cause only new files (i.e., files not already in the
  758. X     archive) to be added, the n modifier is used to create the
  759. X     command an.  To cause both already-archived files to be
  760. X     updated and new files to be added, the u and n modifiers can
  761. X     be used together, giving the command aun.  Since the order
  762. X     of modifiers is not significant, the command could also be
  763. X     anu.
  764. X
  765. X     Further, the c modifier can be used to cause zoo to prompt
  766. X     the user for a comment to attach to each file added.  And
  767. X     the f modifier can cause fast addition (addition without
  768. X     compression).  It should be obvious then that the command
  769. X     auncf will cause zoo to update already-archived files, add
  770. X     new files, prompt the user for comments, and do the addition
  771. X     of files without any compression.  Furthermore, if the user
  772. X     wishes to move files to the archive, i.e., delete the disk
  773. X     copy of each file after it is added to the archive, it is
  774. X     only necessary to add the M modifier to the command, so it
  775. X     becomes auncfM.  And if the user also wishes to cause the
  776. X     archive to be packed as part of the command, thus recovering
  777. X     space from any files that are replaced, the command can be
  778. X     modified to auncfMP by adding the P modifier that causes
  779. X     packing.
  780. X
  781. X     Similarly, the archive listing commands can be built up by
  782. X     combining modifiers.  The basic command to list the contents
  783. X     of an archive is l.  If the user wants a fast columnized
  784. X     listing, the f modifier can be added to give the lf command.
  785. X     Since this listing will have a header giving the archive
  786. X     name and a trailer summarizing interesting information about
  787. X     the archive, such as the number of deleted files, the user
  788. X     may wish to "quieten" the listing by suppressing these;  the
  789. X     relevant modifier is q, which when added to the command
  790. X     gives lfq.  If the user wishes to see the **IX mode (file
  791. X     protection) bits, and also information about multiple gen-
  792. X     erations, the modifiers m (show mode bits) and g (show gen-
  793. X     eration information) can be added, giving the command lfqmg.
  794. X     If the user also wishes to see an attached archive comment,
  795. X     the modifier A (for archive) will serve.  Thus the command
  796. X     lfqmgA will give a fast columnized listing of the archive,
  797. X     suppressing any header and trailer, showing mode bits and
  798. X     generation information, and showing any comment attached to
  799. X     the archive as a whole.  If in addition individual comments
  800. X     attached to files are also needed, simply append the c
  801. X     modifier to the command, making it lfqmgAc.  The above com-
  802. X     mand will not show any deleted files, however;  to see them,
  803. X     use the d modifier, making the command lfqmgAcd (or double
  804. X     it as in lfqmgAcdd if only the deleted files are to be
  805. X     listed).  And if the user also wishes to see the CRC value
  806. X     for each file being listed, the modifier C will do this, as
  807. X     in the command lfqmgAcdC, which gives a fast columnized
  808. X     listing of all files, including deleted files, showing any
  809. X     archive comment and file comments, and file protection codes
  810. X     and generation information, as well as the CRC value of each
  811. X     file.
  812. X
  813. X     Note that the above command lfqmgAcdC could also be abbrevi-
  814. X     ated to VfqmgdC because the command V is shorthand for lcA
  815. X     (archive listing with all comments shown).  Similarly the
  816. X     command v is shorthand for lA (archive listing with archive
  817. X     comment shown).  Both V and v can be used as modifiers to
  818. X     any of the other archive listing commands.
  819. X
  820. X     Generations
  821. X
  822. X     By default, zoo assumes that only the latest generation of a
  823. X     specified file is needed.  If generations other than the
  824. X     latest one need to be selected, this may be done by specify-
  825. X     ing them in the filename.  For example, the name stdio.h
  826. X     would normally refer to the latest generation of the file
  827. X     stdio.h stored in a zoo archive.  To get an archive listing
  828. X     showing all generations of stdio.h in the archive, the
  829. X     specification stdio.h:* could be used (enclosed in single
  830. X     quotes if necessary to protect the wildcard character * from
  831. X     the shell).  Also, stdio.h:0 selects only the latest genera-
  832. X     tion of stdio.h, while stdio.h:^0 selects all generations
  833. X     except the latest one.  The : character here separates the
  834. X     filename from the generation number, and the character * is
  835. X     a wildcard that matches all possible generations.  For con-
  836. X     venience, the generation itself may be left out, so that the
  837. X     name stdio.h: (with the : but without a generation number or
  838. X     a wildcard) matches all generations exactly as stdio.h:*
  839. X     does.
  840. X
  841. X     If a generation is specified but no filename is present, as
  842. X     in :5, :*, or just :, all filenames of the specified genera-
  843. X     tion will be selected.  Thus :5 selects generation 5 of each
  844. X     file, and :* and : select all generations of all files.
  845. X
  846. X     It is important to note that zoo's idea of the latest gen-
  847. X     eration of a file is not based upon searching the entire
  848. X     archive.  Instead, whenever zoo adds a file to an archive,
  849. X     it is marked as being the latest generation.  Thus, if the
  850. X     latest generation of a file is deleted, then no generation
  851. X     of that file is considered the latest any more.  This can be
  852. X     surprising to the user.  For example, if an archive already
  853. X     contains the file stdio.h:5 and a new copy is added, appear-
  854. X     ing in the archive listing as stdio.h:6, and then stdio.h:6
  855. X     is deleted, the remaining copy stdio.h:5 will no longer be
  856. X     considered to be the latest generation, and the file
  857. X     stdio.h:5, even if undeleted, will no longer appear in an
  858. X     archive listing unless generation 5 (or every generation) is
  859. X     specifically requested.  This behavior will likely be
  860. X     improved in future releases of zoo.
  861. X
  862. FILES
  863. X     xXXXXXX - temporary file used during packing
  864. X     archive_name.bak - backup of archive
  865. X
  866. SEE ALSO
  867. X     compress(1), fiz(1)
  868. X
  869. BUGS
  870. X     When files are being added to an archive on a non-MS-DOS
  871. X     system, it is possible for zoo to fail to detect a full disk
  872. X     and hence create an invalid archive.  This bug will be fixed
  873. X     in a future release.
  874. X
  875. X     Files with generation counts that wrap around from 65535 to
  876. X     1 are not currently handled correctly.  If a file's genera-
  877. X     tion count reaches a value close to 65535, it should be
  878. X     manually set back down to a low number.  This may be easily
  879. X     done with a command such as gc-65000, which subtracts 65000
  880. X     from the generation count of each specified file.  This
  881. X     problem will be fixed in a future release.
  882. X
  883. X     Although zoo on **IX systems preserves the lowest nine mode
  884. X     bits of regular files, it does not currently do the same for
  885. X     directories.
  886. X
  887. X     Currently zoo's handling of the characters : and ; in
  888. X     filenames is not robust, because it interprets these to
  889. X     separate a filename from a generation number.  A quoting
  890. X     mechanism will eventually be implemented.
  891. X
  892. X     Standard input cannot be archived nor can a created archive
  893. X     be sent to standard output.  Spurious error messages may
  894. X     appear if the filename of an archive is too long.
  895. X
  896. X     Since zoo never archives any file with the same name as the
  897. X     archive or its backup (regardless of any path prefixes),
  898. X     care should be taken to make sure that a file to be archived
  899. X     does not coincidentally have the same name as the archive it
  900. X     is being added to.  It usually suffices to make sure that no
  901. X     file being archived is itself a zoo archive.  (Previous ver-
  902. X     sions of zoo sometimes tried to add an archive to itself.
  903. X     This bug now seems to be fixed.)
  904. X
  905. X     Only regular files are archived; devices and empty direc-
  906. X     tories are not.  Support for archiving empty directories and
  907. X     for preserving directory attributes is planned for the near
  908. X     future.
  909. X
  910. X     Early versions of MS-DOS have a bug that prevents "." from
  911. X     referring to the root directory;  this leads to anomalous
  912. X     results if the extraction of paths beginning with a dot is
  913. X     attempted.
  914. X
  915. X     VAX/VMS destroys case information unless arguments are
  916. X     enclosed in double quotes.  For this reason if a command
  917. X     given to zoo on a VAX/VMS system includes any uppercase
  918. X     characters, it must be enclosed in double quotes.  Under
  919. X     VAX/VMS, zoo does not currently restore file timestamps;
  920. X     this will be fixed as soon as I figure out RMS extended
  921. X     attribute blocks, or DEC supplies a utime() function, which-
  922. X     ever occurs first.  Other VMS bugs, related to file struc-
  923. X     tures, can often be overcome by using the program bilf.c
  924. X     that is supplied with zoo.
  925. X
  926. X     It is not currently possible to create a zoo archive con-
  927. X     taining all zoo archives that do not contain themselves.
  928. X
  929. DIAGNOSTICS
  930. X     Error messages are intended to be self-explanatory and are
  931. X     divided into three categories.  WARNINGS are intended to
  932. X     inform the user of an unusual situation, such as a CRC error
  933. X     during extraction, or -freshening of an archive containing a
  934. X     file newer than one specified on the command line.  ERRORS
  935. X     are fatal to one file, but execution continues with the next
  936. X     file if any.  FATAL errors cause execution to be aborted.
  937. X     The occurrence of any of these causes an exit status of 1.
  938. X     Normal termination without any errors gives an exit status
  939. X     of 0.  (Under VAX/VMS, however, to avoid an annoying mes-
  940. X     sage, zoo always exits with an error code of 1.)
  941. X
  942. COMPATIBILITY
  943. X     All versions of zoo on all systems are required to create
  944. X     archives that can be extracted and listed with all versions
  945. X     of zoo on all systems, regardless of filename and directory
  946. X     syntax or archive structure;  furthermore, any version of
  947. X     zoo must be able to fully manipulate all archives created by
  948. X     all lower-numbered versions of zoo on all systems.  So far
  949. X     as I can tell, this upward compatibility (all manipulations)
  950. X     and downward compatiblity (ability to extract and list) is
  951. X     maintained by zoo versions up to 2.01.  Version 2.1 adds the
  952. X     incompatibility that if high-performance compression is
  953. X     used, earlier versions cannot extract files compressed with
  954. X     version 2.1.  This is the only incompatibility that is
  955. X     permissible.  You are forbidden, with the force of copyright
  956. X     law, to create from the zoo source code any derivative work
  957. X     that violates this compatibility goal, whether knowingly or
  958. X     through negligence.  If any violation of this compatibility
  959. X     goal is observed, this should be considered a serious prob-
  960. X     lem and reported to me.
  961. X
  962. CHANGES
  963. X     Here is a list of changes occurring from version 1.50 to
  964. X     version 2.01.  In parentheses is given the version in which
  965. X     each change occurred.
  966. X
  967. X     -    (1.71) New modifiers to the list commands permit
  968. X          optional suppression of header and trailer information,
  969. X          inclusion of directory names in columnized listings,
  970. X          and fast one-column listings.
  971. X
  972. X     -    (1.71) Timezones are handled.
  973. X
  974. X     -    (1.71) A bug was fixed that had made it impossible to
  975. X          individually update comments for a file whose name did
  976. X          not correspond to MS-DOS format.
  977. X
  978. X     -    (1.71) A change was made that now permits use of the
  979. X          shared library on the **IX PC.
  980. X
  981. X     -    (1.71) VAX/VMS is now supported reasonably well.
  982. X
  983. X     -    (2.00) A comment may now be attached to the archive
  984. X          itself.
  985. X
  986. X     -    (2.00) The OO option allows forced overwriting of
  987. X          read-only files.
  988. X
  989. X     -    (2.00) Zoo will no longer extract a file if a newer
  990. X          copy already exists on disk;  the S option will over-
  991. X          ride this.
  992. X
  993. X     -    (2.00) File attributes are preserved for **IX systems.
  994. X
  995. X     -    (2.00) Multiple generations of the same file are sup-
  996. X          ported.
  997. X
  998. X     -    (2.00) Zoo will now act as a compression or decompres-
  999. X          sion filter on a stream of data and will use a CRC
  1000. X          value to check the integrity of a data stream that is
  1001. X          uncompressed.
  1002. X
  1003. X     -    (2.00) A bug was fixed that caused removal of a direc-
  1004. X          tory link if files were moved to an archive by the
  1005. X          superuser on a **IX system.
  1006. X
  1007. X     -    (2.00) The data recovery modifier @ was greatly
  1008. X          enhanced.  Self-extracting archives created for MS-DOS
  1009. X          systems can now be extracted by zoo on any system with
  1010. X          help from fiz(1).
  1011. X
  1012. X     -    (2.01) A bug was fixed that had caused the first gen-
  1013. X          eration of a file to sometimes unexpectedly show up in
  1014. X          archive listings.
  1015. X
  1016. X     -    (2.01) A bug was fixed that had caused the MS-DOS ver-
  1017. X          sion to silently skip files that could not be extracted
  1018. X          because of insufficient disk space.
  1019. X
  1020. X     -    (2.01) A bug was fixed that had sometimes made it
  1021. X          impossible to selectively extract a file by specifying
  1022. X          its name, even though all files could be extracted from
  1023. X          the archive by not specifying any filenames.  This
  1024. X          occurred when a file had been archived on a longer-
  1025. X          filename system (e.g. AmigaDOS) and extraction was
  1026. X          attempted on a shorter-filename system (e.g. MS-DOS).
  1027. X
  1028. X     -    (2.01) A change was made that will make zoo preserve
  1029. X          the mode (file protection) of a zoo archive when it is
  1030. X          packed.  This is effective only if zoo is compiled to
  1031. X          preserve and restore file attributes.  Currently this
  1032. X          is so only for **IX systems.
  1033. X
  1034. X     -    (2.01) A bug was fixed that had caused an update of an
  1035. X          archive to not always add all newer files.
  1036. X
  1037. X     -    (2.01) Blanks around equal signs in commands given to
  1038. X          "make" were removed from the mk* scripts for better
  1039. X          compatiblity with more **IX implementations including
  1040. X          Sun's.
  1041. X
  1042. X     -    (2.1) Compression is now greatly improved if the "h"
  1043. X          option is used.
  1044. X
  1045. X     -    (2.1) The default behavior is to preserve full path-
  1046. X          names during extraction.
  1047. X
  1048. X     -    (2.1) On some systems, extraction of files using the
  1049. X          older (default) compression method is greatly speeded
  1050. X          up.
  1051. X
  1052. X     -    (2.1) Extended multiscreen help is available.
  1053. X
  1054. X     -    (2.1) Memory allocation is improved, so that the MS-DOS
  1055. X          version will not prematurely abort when updating a
  1056. X          large archive.
  1057. X
  1058. X     -    (2.1) The VAX/VMS version preserves file timestamps
  1059. X          during extraction.
  1060. X
  1061. X     -    (2.1) The default archive-wide generation limit, when
  1062. X          generations are enabled, is 3.
  1063. X
  1064. FUTURE DIRECTIONS
  1065. X     A revised version of zoo is in the works that will be able
  1066. X     to write newly-created archives to standard output and will
  1067. X     support multivolume archives.  It will be upward and down-
  1068. X     ward compatible with this version of zoo.
  1069. X
  1070. ACKNOWLEDGEMENTS
  1071. X     The zoo archiver was initially developed using Microsoft C
  1072. X     3.0 on a PC clone manufactured by Toshiba of Japan and
  1073. X     almost sold by Xerox.  Availability of the following systems
  1074. X     was helpful in achieving portability: Paul Homchick's Compaq
  1075. X     running Microport System V/AT;  The Eskimo BBS somewhere in
  1076. X     Oregon running Xenix/68000; Greg Laskin's system 'gryphon'
  1077. X     which is an Intel 310 running Xenix/286;  Ball State
  1078. X     University's AT&T 3B2/300, UNIX PC, and VAX-11/785 (4.3BSD
  1079. X     and VAX/VMS) systems.  In addition J. Brian Waters provided
  1080. X     feedback to help me make the code compilable on his Amiga
  1081. X     using Manx/Aztec C.  The executable version 2.0 for MS-DOS
  1082. X     is currently compiled with Borland's Turbo C++ 1.0.
  1083. X
  1084. X     Thanks are due to the following people and many others too
  1085. X     numerous to mention.
  1086. X
  1087. X     J. Brian Waters <jbwaters@bsu-cs.bsu.edu>, who has worked
  1088. X     diligently to port zoo to AmigaDOS, created Amiga-specific
  1089. X     code, and continues keeping it updated.
  1090. X
  1091. X     Paul Homchick <rutgers!cgh!paul>, who provided numerous
  1092. X     detailed reports about some nasty bugs.
  1093. X
  1094. X     Bill Davidsen <davidsen@crdos1.crd.ge.com>, who provided
  1095. X     numerous improvements to this manual, contributed mul-
  1096. X     tiscreen help, and provided many useful bug reports, bug
  1097. X     fixes, code improvements, and suggestions.
  1098. X
  1099. X     Mark Alexander <amdahl!drivax!alexande>, who provided me
  1100. X     with some bug fixes.
  1101. X
  1102. X     Haruhiko Okumura, who wrote the ar archiver and some excel-
  1103. X     lent compression code, which I adapted for use in zoo.
  1104. X
  1105. X     Randal L. Barnes <rlb@skyler.mavd.honeywell.com>, who (with
  1106. X     Randy Magnuson) wrote the code to support the preservation
  1107. X     of file timestamps under VAX/VMS.
  1108. X
  1109. X     Raymond D. Gardner, who contributed replacement uncompres-
  1110. X     sion code that on some systems is twice as fast as the
  1111. X     original.
  1112. X
  1113. X     Greg Yachuk and Andre Van Dalen, who independently modified
  1114. X     MS-DOS zoo to support multivolume archives.  (This support
  1115. X     is not yet in this official release.)
  1116. X
  1117. AUTHOR
  1118. X     Rahul Dhesi
  1119. SHAR_EOF
  1120. chmod 0644 zoo.man ||
  1121. echo 'restore of zoo.man failed'
  1122. Wc_c="`wc -c < 'zoo.man'`"
  1123. test 50054 -eq "$Wc_c" ||
  1124.     echo 'zoo.man: original size 50054, current size' "$Wc_c"
  1125. fi
  1126. true || echo 'restore of zooadd.c failed'
  1127. echo End of part 12, continue with part 13
  1128. exit 0
  1129.