Quick ?s
Cheat Sheets
Man Pages
The Lynx
Software
ZOO(1)									ZOO(1)



NAME
       zoo - manipulate archives of files in compressed form

SYNOPSIS
       zoo {acfDeghHlLPTuUvVx}[aAcCdEfghImMnNoOpPqSu1:/.@n+-=] archive [file]
       ...
       zoo -command archive [file] ...
       zoo h

DESCRIPTION
       Zoo is used to create and maintain collections of files in compressed
       form.  It uses a Lempel-Ziv compression algorithm that gives space sav
       ings in the range of 20% to 80% depending on the type of file data.
       Zoo can store and selectively extract multiple generations of the same
       file.  Data can be recovered from damaged archives by skipping the dam
       aged portion and locating undamaged data with the help of fiz(1).

       This documentation is for version 2.1.  Changes from previous versions
       are described in the section labelled CHANGES.

       The command zoo h gives a summary of commands.  Extended multiscreen
       help can be obtained with zoo H.

       Zoo will not add an archive to itself, nor add the archives backup
       (with .bak extension to the filename) to the archive.

       Zoo has two types of commands:  Expert commands, which consist of one
       command letter followed by zero or more modifier characters, and Novice
       commands, which consist of a hyphen (-) followed by a command word
       that may be abbreviated.  Expert commands are case-sensitive but Novice
       commands are not.

       When zoo adds a file to an existing archive, the default action is to
       maintain one generation of each file in an archive and to mark any
       older generation as deleted.  A limit on the number of generations to
       save can be specified by the user for an entire archive, or for each
       file individually, or both.  Zoo deletes a stored copy of an added file
       if necessary to prevent the number of stored generations from exceeding
       the user-specified limit.

       Deleted files may be later undeleted.  Archives may be packed to
       recover space occupied by deleted files.

       All commands assume that the archive name ends with the characters .zoo
       unless a different extension is supplied.

       Novice commands

       Novice commands may be abbreviated to a hyphen followed by at least one
       command character.  Each Novice command works in two stages.  First,
       the command does its intended work.  Then, if the result was that one
       or more files were deleted in the specified archive, the archive is
       packed.	If packing occurs, the original unpacked archive is always
       left behind with an extension of .bak.

       No Novice command ever stores the directory prefix of a file.

       The Novice commands are as follows.


       -add    Adds the specified files to the archive.


       -freshen
	      Adds a specified file to the archive if and only if an older
	      file by the same name already exists in the archive.


       -delete
	      Deletes the specified files from the archive.


       -update
	      Adds a specified file to the archive either:  if an older file
	      by the same name already exists in the archive or:  if a file by
	      the same name does not already exist in the archive.


       -extract
	      Extracts the specified files from the archive.  If no file is
	      specified all files are extracted.


       -move  Equivalent to -add except that source files are deleted after
	      addition.


       -print Equivalent to -extract except that extracted data are sent to
	      standard output.


       -list  Gives information about the specified archived files including
	      any attached comments.  If no files are specified all files are
	      listed.  Deleted files are not listed.


       -test  Equivalent to -extract except that the extracted data are not
	      saved but any errors encountered are reported.


       -comment
	      Allows the user to add or update comments attached to archived
	      files.  When prompted, the user may:  type a carriage return to
	      skip the file, leaving any current comment unchanged;  or type a
	      (possibly null) comment of up to 32,767 characters terminated by
	      /end (case-insensitive) on a separate line;  or type the end-of-
	      file character (normally control D) to skip all remaining files.


       -delete
	      Deletes the specified files.

       The correspondence between Novice and Expert commands is as follows.



       Novice					     Equivalent
       Command	  Description			     Expert Command
       -------------------------------------------------------------
       -add	  add files to archive		     aP:
       -extract   extract files from archive	     x
       -move	  move files to archive 	     aMP:
       -test	  test archive integrity	     xNd
       -print	  extract files to standard output   xp
       -delete	  delete files from archive	     DP
       -list	  list archive contents 	     VC
       -update	  add new or newer files	     aunP:

       -freshen   by add newer files		     auP:
       -comment   add comments to files 	     c


       Expert commands

       The general format of expert commands is:

       zoo {acfDeghHlLPTuUvVx}[aAcCdEfghImMnNoOpPqSu1:/.@n+-=] archive [file]
       ...

       The characters enclosed within {} are commands.	Choose any one of
       these.  The characters enclosed within [] just to the right of the {}
       are modifiers and zero or more of these may immediately follow the com
       mand character.	All combinations of command and modifier characters
       may not be valid.

       Files are added to an archive with the command:

       zoo {au}[cfhIMnPqu:+-] archive [file] ...

       Command characters are:


       a      Add each specified file to archive.  Any already-archived copy
	      of the file is deleted if this is necessary to avoid exceeding
	      the user-specified limit on the number of generations of the
	      file to maintain in the archive.


       u      Do an update of the archive.  A specified file is added to the
	      archive only if a copy of it is already in the archive and the
	      copy being added is newer than the copy already in the archive.

       The following modifiers are specific to these commands.


       M      Move files to archive.  This makes zoo delete (unlink) the orig
	      inal files after they have been added to the archive.  Files are
	      deleted after addition of all files to the archive is complete
	      and after any requested packing of the archive has been done,
	      and only if zoo detected no errors.


       n      Add new files only.  A specified file is added only if it isnt
	      already in the archive.


       h      Use the high performance compression algorithm. This option may
	      be used with either the add (a) or filter (f) commands to gain
	      extra compression at the expense of using somewhat more proces
	      sor time. Extracting files compressed with the method is usually
	      slightly faster than those saved with the default method.


       P      Pack archive after files have been added.


       u      Applied to the a command, this modifier makes it behave identi
	      cally to the u command.

	      The combination of the n modifier with the u modifier or u com
	      mand causes addition of a file to the archive either if the file
	      is not already in the archive, or if the file is already in the
	      archive but the archived copy is older than the copy being
	      added.


       :      Do not store directory names.  In the absence of this modifier
	      zoo stores the full pathname of each archived file.


       I      Read filenames to be archived from standard input.  Zoo will
	      read its standard input and assume that each line of text con
	      tains a filename.  Under AmigaDOS and the **IX family, the
	      entire line is used.  Under MS-DOS and VAX/VMS, zoo assumes that
	      the filename is terminated by a blank, tab, or newline; thus it
	      is permissible for the line of text to contain more than one
	      field separated by white space, and only the first field will be
	      used.

	      Under the **IX family of operating systems, zoo can be used as
	      follows in a pipeline:

		 find . -print | zoo aI sources



	    If the I modifier is specified, no filenames may be supplied on
	    the command line itself.


       +,-    These modifiers take effect only if the a command results in the
	      creation of a new archive.  + causes any newly-created archive
	      to have generations enabled.  - is provided for symmetry and
	      causes any newly-created archive to have generations disabled;
	      this is also the default if neither + nor - is specified.

       Files are extracted from an archive with the command:

       zoo {ex}[dNoOpqS./@] archive [file] ...

       The e and x commands are synonymous.  If no file was specified, all
       files are extracted from the archive.

       The following modifiers are specific to the e and x commands:


       N      Do not save extracted data but report any errors encountered.


       O      Overwrite files.	Normally, if a file being extracted would
	      overwrite an already-existing file of the same name, zoo asks
	      you if you really want to overwrite it.  You may answer the
	      question with y, which means yes, overwrite; or n, which
	      means no, dont overwrite; or a, which means assume the answer
	      is y for this and all subsequent files.  The O modifier makes
	      zoo assume that files may always be overwritten.	Neither
	      answering the question affirmatively nor using O alone will
	      cause read-only files to be overwritten.

	      On **IX systems, however, doubling this modifier as OO will
	      force zoo to unconditionally overwrite any read-protected files
	      with extracted files if it can do so.

	      The O, N, and p modifiers are mutually exclusive.


       S      Supersede newer files on disk with older extracted files.
	      Unless this modifier is used, zoo will not overwrite a newer
	      existing file with an older extracted file.


       o      This is equivalent to the O modifier if and only if it is given
	      at least twice.  It is otherwise ignored.


       p      Pipe extracted data to standard output.  Error messages are
	      piped to standard output as well.  However, if a bad CRC is
	      detected, an error message is sent both to standard error and to
	      standard output.


       /      Extract to original pathname.  Any needed directories must
	      already exist.  In the absence of this modifier all files are
	      extracted into the current directory.  If this modifier is dou
	      bled as //, required directories need not exist and are created
	      if necessary.

       The management of multiple generations of archived files is done with
       the commands:

       zoo gl[Aq]{+-=}number archive files ..
       zoo gc[q]{+-=}number archive files ..
       zoo gA[q]- archive
       zoo gA[q]+ archive

       The first form, gl, adjusts the generation limit of selected files by
       the specified value.  If the form =n is used, where n is a decimal num
       ber, this sets the generation limit to the specified value.  If + or -
       are used in placed of = the effect is to increment or decrement the
       generation limit by the specified value.  For example, the command

	    zoo gl=5 xyz :


       sets the generation limit of each file in the archive xyz.zoo to a
       value of 5.  The command

	    zoo gl-3 xyz :


       decrements the generation limit of each file in the archive to 3 less
       than it currently is.

       If the A modifier is used, the archive-wide generation limit is
       adjusted instead.

       The number of generations of a file maintained in an archive is limited
       by the file generation limit, or the archive generation limit,
       whichever is lower.  As a special case, a generation limit of 0 stands
       for no limit.  Thus the default file generation limit of 0 and archive
       generation limit of 3 limits the number of generations of each file in
       a newly-created archive to three.

       The generation limit specified should be in the range 0 through 15;
       any higher numbers are interpreted modulo 16.

       The second form of the command, using gc, adjusts the generation count
       of selected files.  Each file has a generation count of 1 when it is
       first added to an archive.  Each time a file by the same name is added
       again to an archive, it receives a generation count that is one higher
       than the highest generation count of the archived copy of the file.
       The permissible range of generation counts is 1 through 65535.  If
       repeated manipulations of an archive result in files having very high
       generation counts, they may be set back to lower numbers with the gc
       command.  The syntax of the command is analogous to the syntax of the
       gl command, except that the A modifier is not applicable to the gc
       command.

       The third form, gA-, disables generations in an archive.  Generations
       are off when an archive is first created, but may be enabled with the
       fourth form of the command, gA+.  When generations are disabled in an
       archive, zoo will not display generation numbers in archive listings or
       maintain multiple generations.  Generations can be re-enabled at any
       time, though manipulation of an archive with repeated interspersed gA-
       and gA+ commands may result in an archive whose behavior is not easily
       understandable.

       Archived files are listed with the command:

       zoo {lLvV}[aAcCdfgmqvV@/1+-] archive[.zoo] [file] ...


       l      Information presented includes the date and time of each file,
	      its original and current (compressed) sizes, and the percentage
	      size decrease due to compression (labelled CF or compression
	      factor).	If a file was added to the archive in a different
	      timezone, the difference between timezones is shown in hours as
	      a signed number.	As an example, if the difference is listed as
	      +3, this means that the file was added to the archive in a time
	      zone that is 3 hours west of the current timezone.  The file
	      time listed is, however, always the original timestamp of the
	      archived file, as observed by the user who archived the file,
	      expressed as that users local time.  (Timezone information is
	      stored and displayed only if the underlying operating system
	      knows about timezones.)

	      If no filename is supplied all files are listed except deleted
	      files.

	      Zoo selects which generation(s) of a file to list according to
	      the following algorithm.

	      If no filename is supplied, only the latest generation of each
	      file is listed.  If any filenames are specified, and a genera
	      tion is specified for an argument, only the requested generation
	      is listed.  If a filename is specified ending with the genera
	      tion character (: or ;), all generations of that file are
	      listed.  Thus a filename argument of the form zoo.c will cause
	      only the latest generation of zoo.c to be listed;  an argument
	      of the form zoo.c:4 will cause generation 4 of zoo.c to be
	      listed;  and an argument of the form zoo.c: or zoo.c:* will
	      cause all generations of zoo.c to be listed.


       L      This is similar to the l command except that all supplied argu
	      ments must be archives and all non-deleted generations of all
	      files in each archive appear in the listing.

	      On **IX systems, on which the shell expands arguments, if multi
	      ple archives are to be listed, the L command must be used.  On
	      other systems (VAX/VMS, AmigaDOS, MSDOS) on which wildcard
	      expansion is done internally by zoo, wildcards may be used in
	      the archive name, and a multiple archive listing obtained, using
	      the l command.


       v      This causes any comment attached to the archive to be listed in
	      addition to the other information.


       V      This causes any comment attached to the archive and also any
	      comment attached to each file to be listed.

	      Both the V and v command characters can also be used as modi
	      fiers to the l and L commands.

       In addition to the general modifiers described later, the following
       modifiers can be applied to the archive list commands.


       a      This gives a single-line format containing both each filename
	      and the name of the archive, sorted by archive name.  It is
	      especially useful with the L command, since the result can be
	      further sorted on any field to give a master listing of the
	      entire contents of a set of archives.


       A      This causes any comment attached to the archive to be listed.


       g      This modifier causes file generation information to be listed
	      about the archive.  For each file listed, the user-specified
	      generation limit, if any, is listed.  For example, 3g for a
	      file means that the user wants no more than three generations of
	      the file to be kept.  In archives created by older versions of
	      zoo, the listing will show -g, meaning that no generation
	      information is kept and multiple generations of the file are not
	      being maintained.

	      In addition to the generation information for each file, the
	      archive-wide generation limit, if any, is shown at the end of
	      the listing.  If generations have been disabled by the user,
	      this is so indicated, for example:

		 Archive generation limit is 3 (generations off).

	    For more information about generations see the description of the
	    g command.


       m      This modifier is currently applicable to **IX systems only.  It
	      causes the mode bits (file protection code) of each file to be
	      listed as a three-digit octal number.  Currently zoo preserves
	      only the lowest nine mode bits.  Their meanings are as described
	      in the **IX documentation for the chmod(1) command.


       C      This modifier causes the stored cyclic redundancy code (CRC) for
	      each archived file to be shown as a four-digit hexadecimal num
	      ber.


       1      This forces one filename to be listed per line.  It is most use
	      ful in combination with the f modifier.

       /      This forces any directory name to be always listed, even in fast
	      columnized listings that do not normally include any directory
	      names.


       +,-    The - modifier causes trailing generation numbers to be omitted
	      from filenames.  The + modifier causes the trailing generation
	      numbers to be shown, which is also the default if neither - nor
	      + is specified.

       Files may be deleted and undeleted from an archive with the following
       commands:

       zoo {DU}[Pq1] archive file ...

       The D command deletes the specified files and the U command undeletes
       the specified files.  The 1 modifier (the digit one, not the letter
       ell) forces deletion or undeletion of at most one file.	If multiple
       instances of the same file exist in an archive, use of the 1 modifier
       may allow selective extraction of one of these.

       Comments may be added to an archive with the command:

       zoo c[A] archive

       Without the modifier A, this behaves identically to the -comment com
       mand.  With the modifier A, the command serves to add or update the
       comment attached to the archive as a whole.  This comment may be listed
       with the lA, LA, v, and V commands.  Applying the cA command to an
       archive that was created with an older version of zoo will result in an
       error message requesting that the user first pack the archive with the
       P command.  This reorganizes the archive and creates space for the
       archive comment.

       The timestamp of an archive may be adjusted with the command:

       zoo T[q] archive

       Zoo normally attempts to maintain the timestamp of an archive to
       reflect the age of the newest file stored in it.  Should the timestamp
       ever be incorrect it can be fixed with the T command.

       An archive may be packed with the command:

       zoo P[EPq] archive

       If the backup copy of the archive already exists, zoo will refuse to
       pack the archive unless the P modifier is also given.  The E modifier
       causes zoo not to save a backup copy of the original archive after
       packing.  A unique temporary file in the current directory is used to
       initially hold the packed archive.  This file will be left behind if
       packing is interrupted or if for some reason this file cannot be
       renamed to the name of the original archive when packing is complete.

       Packing removes any garbage data appended to an archive because of Xmo
       dem file transfer and also recovers any wasted space remaining in an
       archive that has been frequently updated or in which comments were
       replaced.  Packing also updates the format of any archive that was cre
       ated by an older version of zoo so that newer features (e.g. archive-
       wide generation limit, archive comment) become fully available.

       Zoo can act as a pure compression or uncompression filter, reading from
       standard input and writing to standard output.  This is achieved with
       the command:

       zoo f{cu}[h]

       where c specifies compression, u specifies uncompression, and h used in
       addition requests the high-performance compression be used.  A CRC
       value is used to check the integrity of the data.  The compressed data
       stream has no internal archive structure and contains multiple files
       only if the input data stream was already structured, as might be
       obtained, for example, from tar or cpio.

	Modem transfers can be speeded up with these commands:

		 zoo fc < file | sz ...  rz | zoo fu > file




       General modifiers


       The following modifiers are applicable to several commands:


       c      Applied to the a and u commands, this causes the user to be
	      prompted for a comment for each file added to the archive.  If
	      the file being added has replaced, or is a newer generation of,
	      a file already in the archive, any comment attached to that file
	      is shown to the user and becomes attached to the newly-added
	      file unless the user changes it.	Possible user responses are as
	      described for the -comment command.  Applied to the archive list
	      command l, the c modifier causes the listing of any comments
	      attached to archived files.


	.     In conjunction with / or // this modifier causes any extracted
	      pathname beginning with / to be interpreted relative to the
	      current directory, resulting in the possible creation of a sub
	      tree rooted at the current directory.  In conjunction with the
	      command P the .  modifier causes the packed archive to be cre
	      ated in the current directory.  This is intended to allow users
	      with limited disk space but multiple disk drives to pack large
	      archives.


       d      Most commands that act on an archive act only on files that are
	      not deleted.  The d modifier makes commands act on both normal
	      and deleted files.  If doubled as dd, this modifier forces
	      selection only of deleted files.


       f      Applied to the a and u commands, the f modifier causes fast
	      archiving by adding files without compression.  Applied to l it
	      causes a fast listing of files in a multicolumn format.


       q      Be quiet.  Normally zoo lists the name of each file and what
	      action it is performing.	The q modifier suppresses this.  When
	      files are being extracted to standard output, the q modifier
	      suppresses the header preceding each file.  When archive con
	      tents are being listed, this modifier suppresses any header and
	      trailer.	When a fast columnized listing is being obtained, this
	      modifier causes all output to be combined into a single set of
	      filenames for all archives being listed.

	      When doubled as qq, this modifier suppresses WARNING messages,
	      and when tripled as qqq, ERROR messages are suppressed too.
	      FATAL error messages are never suppressed.


       Recovering data from damaged archives

       The @ modifier allows the user to specify the exact position in an
       archive where zoo should extract a file from, allowing damaged portions
       of an archive to be skipped.  This modifier must be immediately fol
       lowed by a decimal integer without intervening spaces, and possibly by
       a comma and another decimal integer, giving a command of the form l@m
       or l@m,n (to list archive contents) or x@m or x@m,n (to extract files
       from an archive).  Listing or extraction begin at position m in the
       archive.  The value of m must be the position within the archive of an
       undamaged directory entry.  This position is usually obtained from
       fiz(1) version 2.0 or later.

       If damage to the archive has shortened or lengthened it, all positions
       within the archive may be changed by some constant amount.  To compen
       sate for this, the value of n may be specified.	This value is also
       usually obtained from fiz(1).  It should be the position in the archive
       of the file data corresponding to the directory entry that has been
       specified with m.  Thus if the command x@456,575 is given, it will
       cause the first 456 bytes of the archive to be skipped and extraction
       to begin at offset 456;	in addition, zoo will attempt to extract the
       file data from position 575 in the archive instead of the value that is
       found in the directory entry read from the archive.  For example, here
       is some of the output of fiz when it acts on a damaged zoo archive:

       ****************
	   2526: DIR  [changes] ==>   95
	   2587: DATA
       ****************
	   3909: DIR  [copyright] ==> 1478
	   3970: DATA
	   4769: DATA
       ****************

       In such output, DIR indicates where fiz found a directory entry in the
       archive, and DATA indicates where fiz found file data in the archive.
       Filenames located by fiz are enclosed in square brackets, and the nota
       tion "==>   95" indicates that the directory entry found by fiz at
       position 2526 has a file data pointer to position 95.  (This is clearly
       wrong, since file data always occur in an archive after their directory
       entry.)	In actuality, fiz found file data at positions 2587, 3970, and
       4769.  Since fiz found only two directory entries, and each directory
       entry corresponds to one file, one of the file data positions is an
       artifact.


       In this case, commands to try giving to zoo might be x@2526,2587
       (extract beginning at position 2526, and get file data from position
       2587), x@3090,3970 (extract at 3090, get data from 3970) and
       x@3909,4769 (extract at 3909, get data from 4769).  Once a correctly-
       matched directory entry/file data pair is found, zoo will in most cases
       synchronize with and correctly extract all files subsequently found in
       the archive.  Trial and error should allow all undamaged files to be
       extracted.  Also note that self-extracting archives created using sez
       (the Self-Extracting Zoo utility for MS-DOS), which are normally exe
       cuted on an MS-DOS system for extraction, can be extracted on non-MSDOS
       systems using zoos damaged-archive recovery method using the @ modi
       fier.


       Wildcard handling

       Under the **IX family of operating systems, the shell normally expands
       wildcards to a list of matching files.  Wildcards that are meant to
       match files within an archive must therefore be escaped or quoted.
       When selecting files to be added to an archive, wildcard conventions
       are as defined for the shell.  When selecting files from within an
       archive, wildcard handling is done by zoo as described below.

       Under MS-DOS and AmigaDOS, quoting of wildcards is not needed.  All
       wildcard expansion of filenames is done by zoo, and wildcards inside
       directory names are expanded only when listing or extracting files but
       not when adding them.

       The wildcard syntax interpreted by zoo is limited to the following
       characters.


       *      Matches any sequence of zero or more characters.


       ?      Matches any single character.

	      Arbitrary combinations of * and ?  are allowed.


       /      If a supplied pattern contains a slash anywhere in it, then the
	      slash separating any directory prefix from the filename must be
	      matched explicitly.  If a supplied pattern contains no slashes,
	      the match is selective only on the filename.


       c-c    Two characters separated by a hyphen specify a character range.
	      All filenames beginning with those characters will match.  The
	      character range is meaningful only by itself or preceded by a
	      directory name.  It is not specially interpreted if it is part
	      of a filename.


       : and ;
	      These characters are used to separate a filename from a genera
	      tion number and are used when selecting specific generations of
	      archived files.  If no generation character is used, the file
	      name specified matches only the latest generation of the file.
	      If the generation character is specified, the filename and the
	      generation are matched independently by zoos wildcard mecha
	      nism.  If no generation is specified following the : or ; char
	      acter, all generations of that file will match.  As a special
	      case, a generation number of 0 matches only the latest genera
	      tion of a file, while ^0 matches all generations of a file
	      except the latest one.  If no filename is specified preceding
	      the generation character, all filenames will match.  As a corol
	      lary, the generation character by itself matches all generations
	      of all files.

       MS-DOS users should note that zoo does not treat the dot as a special
       character, and it does not ignore characters following an asterisk.
       Thus * matches all filenames; *.*  matches filenames containing a dot;
       *_* matches filenames containing an underscore;	and *z matches all
       filenames that end with the character z, whether or not they contain a
       dot.


       Usage hints

       The Novice command set in zoo is meant to provide an interface with
       functionality and format that will be familiar to users of other simi
       lar archive utilities.  In keeping with this objective, the Novice com
       mands do not maintain or use any subdirectory information or allow the
       use of zoos ability to maintain multiple generations of files.  For
       this reason, users should switch to exclusively using the Expert com
       mands as soon as possible.

       Although the Expert command set is quite large, it should be noted that
       in almost every case, all legal modifiers for a command are fully
       orthogonal.  This means that the user can select any combination of
       modifiers, and when they act together, they will have the intuitively
       obvious effect.	Thus the user need only memorize what each modifier
       does, and then can combine them as needed without much further thought.

       For example, consider the a command which is used to add files to an
       archive.  By itself, it simply adds the specified files.  To cause only
       already-archived files to be updated if their disk copies have been
       modified, it is only necessary to add the u modifier, making the com
       mand au.  To cause only new files (i.e., files not already in the
       archive) to be added, the n modifier is used to create the command an.
       To cause both already-archived files to be updated and new files to be
       added, the u and n modifiers can be used together, giving the command
       aun.  Since the order of modifiers is not significant, the command
       could also be anu.

       Further, the c modifier can be used to cause zoo to prompt the user for
       a comment to attach to each file added.	And the f modifier can cause
       fast addition (addition without compression).  It should be obvious
       then that the command auncf will cause zoo to update already-archived
       files, add new files, prompt the user for comments, and do the addition
       of files without any compression.  Furthermore, if the user wishes to
       move files to the archive, i.e., delete the disk copy of each file
       after it is added to the archive, it is only necessary to add the M
       modifier to the command, so it becomes auncfM.  And if the user also
       wishes to cause the archive to be packed as part of the command, thus
       recovering space from any files that are replaced, the command can be
       modified to auncfMP by adding the P modifier that causes packing.

       Similarly, the archive listing commands can be built up by combining
       modifiers.  The basic command to list the contents of an archive is l.
       If the user wants a fast columnized listing, the f modifier can be
       added to give the lf command.  Since this listing will have a header
       giving the archive name and a trailer summarizing interesting informa
       tion about the archive, such as the number of deleted files, the user
       may wish to "quieten" the listing by suppressing these;	the relevant
       modifier is q, which when added to the command gives lfq.  If the user
       wishes to see the **IX mode (file protection) bits, and also informa
       tion about multiple generations, the modifiers m (show mode bits) and g
       (show generation information) can be added, giving the command lfqmg.
       If the user also wishes to see an attached archive comment, the modi
       fier A (for archive) will serve.  Thus the command lfqmgA will give a
       fast columnized listing of the archive, suppressing any header and
       trailer, showing mode bits and generation information, and showing any
       comment attached to the archive as a whole.  If in addition individual
       comments attached to files are also needed, simply append the c modi
       fier to the command, making it lfqmgAc.	The above command will not
       show any deleted files, however;  to see them, use the d modifier, mak
       ing the command lfqmgAcd (or double it as in lfqmgAcdd if only the
       deleted files are to be listed).  And if the user also wishes to see
       the CRC value for each file being listed, the modifier C will do this,
       as in the command lfqmgAcdC, which gives a fast columnized listing of
       all files, including deleted files, showing any archive comment and
       file comments, and file protection codes and generation information, as
       well as the CRC value of each file.

       Note that the above command lfqmgAcdC could also be abbreviated to
       VfqmgdC because the command V is shorthand for lcA (archive listing
       with all comments shown).  Similarly the command v is shorthand for lA
       (archive listing with archive comment shown).  Both V and v can be used
       as modifiers to any of the other archive listing commands.


       Generations

       By default, zoo assumes that only the latest generation of a specified
       file is needed.	If generations other than the latest one need to be
       selected, this may be done by specifying them in the filename.  For
       example, the name stdio.h would normally refer to the latest generation
       of the file stdio.h stored in a zoo archive.  To get an archive listing
       showing all generations of stdio.h in the archive, the specification
       stdio.h:* could be used (enclosed in single quotes if necessary to pro
       tect the wildcard character * from the shell).  Also, stdio.h:0 selects
       only the latest generation of stdio.h, while stdio.h:^0 selects all
       generations except the latest one.  The : character here separates the
       filename from the generation number, and the character * is a wildcard
       that matches all possible generations.  For convenience, the generation
       itself may be left out, so that the name stdio.h: (with the : but with
       out a generation number or a wildcard) matches all generations exactly
       as stdio.h:* does.

       If a generation is specified but no filename is present, as in :5, :*,
       or just :, all filenames of the specified generation will be selected.
       Thus :5 selects generation 5 of each file, and :* and : select all gen
       erations of all files.

       It is important to note that zoos idea of the latest generation of a
       file is not based upon searching the entire archive.  Instead, whenever
       zoo adds a file to an archive, it is marked as being the latest genera
       tion.  Thus, if the latest generation of a file is deleted, then no
       generation of that file is considered the latest any more.  This can be
       surprising to the user.	For example, if an archive already contains
       the file stdio.h:5 and a new copy is added, appearing in the archive
       listing as stdio.h:6, and then stdio.h:6 is deleted, the remaining copy
       stdio.h:5 will no longer be considered to be the latest generation, and
       the file stdio.h:5, even if undeleted, will no longer appear in an
       archive listing unless generation 5 (or every generation) is specifi
       cally requested.  This behavior will likely be improved in future
       releases of zoo.

FILES
       xXXXXXX - temporary file used during packing
       archive_name.bak - backup of archive

SEE ALSO
       compress(1), fiz(1)

BUGS
       When files are being added to an archive on a non-MS-DOS system, it is
       possible for zoo to fail to detect a full disk and hence create an
       invalid archive.  This bug will be fixed in a future release.

       Files with generation counts that wrap around from 65535 to 1 are not
       currently handled correctly.  If a files generation count reaches a
       value close to 65535, it should be manually set back down to a low num
       ber.  This may be easily done with a command such as gc-65000, which
       subtracts 65000 from the generation count of each specified file.  This
       problem will be fixed in a future release.

       Although zoo on **IX systems preserves the lowest nine mode bits of
       regular files, it does not currently do the same for directories.

       Currently zoos handling of the characters : and ; in filenames is not
       robust, because it interprets these to separate a filename from a gen
       eration number.	A quoting mechanism will eventually be implemented.

       Standard input cannot be archived nor can a created archive be sent to
       standard output.  Spurious error messages may appear if the filename of
       an archive is too long.

       Since zoo never archives any file with the same name as the archive or
       its backup (regardless of any path prefixes), care should be taken to
       make sure that a file to be archived does not coincidentally have the
       same name as the archive it is being added to.  It usually suffices to
       make sure that no file being archived is itself a zoo archive.  (Previ
       ous versions of zoo sometimes tried to add an archive to itself. This
       bug now seems to be fixed.)

       Only regular files are archived; devices and empty directories are not.
       Support for archiving empty directories and for preserving directory
       attributes is planned for the near future.

       Early versions of MS-DOS have a bug that prevents "." from referring to
       the root directory;  this leads to anomalous results if the extraction
       of paths beginning with a dot is attempted.

       VAX/VMS destroys case information unless arguments are enclosed in
       double quotes.  For this reason if a command given to zoo on a VAX/VMS
       system includes any uppercase characters, it must be enclosed in double
       quotes.	Under VAX/VMS, zoo does not currently restore file timestamps;
       this will be fixed as soon as I figure out RMS extended attribute
       blocks, or DEC supplies a utime() function, whichever occurs first.
       Other VMS bugs, related to file structures, can often be overcome by
       using the program bilf.c that is supplied with zoo.

       It is not currently possible to create a zoo archive containing all zoo
       archives that do not contain themselves.

DIAGNOSTICS
       Error messages are intended to be self-explanatory and are divided into
       three categories.  WARNINGS are intended to inform the user of an
       unusual situation, such as a CRC error during extraction, or -freshen
       ing of an archive containing a file newer than one specified on the
       command line.  ERRORS are fatal to one file, but execution continues
       with the next file if any.  FATAL errors cause execution to be aborted.
       The occurrence of any of these causes an exit status of 1.  Normal ter
       mination without any errors gives an exit status of 0.  (Under VAX/VMS,
       however, to avoid an annoying message, zoo always exits with an error
       code of 1.)

COMPATIBILITY
       All versions of zoo on all systems are required to create archives that
       can be extracted and listed with all versions of zoo on all systems,
       regardless of filename and directory syntax or archive structure;  fur
       thermore, any version of zoo must be able to fully manipulate all
       archives created by all lower-numbered versions of zoo on all systems.
       So far as I can tell, this upward compatibility (all manipulations) and
       downward compatibility (ability to extract and list) is maintained by
       zoo versions up to 2.01.  Version 2.1 adds the incompatibility that if
       high-performance compression is used, earlier versions cannot extract
       files compressed with version 2.1.

CHANGES
       Here is a list of changes occurring from version 1.50 to version 2.01.
       In parentheses is given the version in which each change occurred.

       -      (1.71) New modifiers to the list commands permit optional sup
	      pression of header and trailer information, inclusion of direc
	      tory names in columnized listings, and fast one-column listings.

       -      (1.71) Timezones are handled.

       -      (1.71) A bug was fixed that had made it impossible to individu
	      ally update comments for a file whose name did not correspond to
	      MS-DOS format.

       -      (1.71) A change was made that now permits use of the shared
	      library on the **IX PC.

       -      (1.71) VAX/VMS is now supported reasonably well.

       -      (2.00) A comment may now be attached to the archive itself.

       -      (2.00) The OO option allows forced overwriting of read-only
	      files.

       -      (2.00) Zoo will no longer extract a file if a newer copy already
	      exists on disk;  the S option will override this.

       -      (2.00) File attributes are preserved for **IX systems.

       -      (2.00) Multiple generations of the same file are supported.

       -      (2.00) Zoo will now act as a compression or decompression filter
	      on a stream of data and will use a CRC value to check the
	      integrity of a data stream that is uncompressed.

       -      (2.00) A bug was fixed that caused removal of a directory link
	      if files were moved to an archive by the superuser on a **IX
	      system.

       -      (2.00) The data recovery modifier @ was greatly enhanced.  Self-
	      extracting archives created for MS-DOS systems can now be
	      extracted by zoo on any system with help from fiz(1).

       -      (2.01) A bug was fixed that had caused the first generation of a
	      file to sometimes unexpectedly show up in archive listings.

       -      (2.01) A bug was fixed that had caused the MS-DOS version to
	      silently skip files that could not be extracted because of
	      insufficient disk space.

       -      (2.01) A bug was fixed that had sometimes made it impossible to
	      selectively extract a file by specifying its name, even though
	      all files could be extracted from the archive by not specifying
	      any filenames.  This occurred when a file had been archived on a
	      longer-filename system (e.g. AmigaDOS) and extraction was
	      attempted on a shorter-filename system (e.g. MS-DOS).

       -      (2.01) A change was made that will make zoo preserve the mode
	      (file protection) of a zoo archive when it is packed.  This is
	      effective only if zoo is compiled to preserve and restore file
	      attributes.  Currently this is so only for **IX systems.

       -      (2.01) A bug was fixed that had caused an update of an archive
	      to not always add all newer files.

       -      (2.01) Blanks around equal signs in commands given to "make"
	      were removed from the mk* scripts for better compatibility with
	      more **IX implementations including Suns.

       -      (2.1) Compression is now greatly improved if the "h" option is
	      used.

       -      (2.1) The default behavior is to preserve full pathnames during
	      extraction.

       -      (2.1) On some systems, extraction of files using the older
	      (default) compression method is greatly speeded up.

       -      (2.1) Extended multiscreen help is available.

       -      (2.1) Memory allocation is improved, so that the MS-DOS version
	      will not prematurely abort when updating a large archive.

       -      (2.1) The VAX/VMS version preserves file timestamps during
	      extraction.

       -      (2.1) The default archive-wide generation limit, when genera
	      tions are enabled, is 3.

FUTURE DIRECTIONS
       A revised version of zoo is in the works that will be able to write
       newly-created archives to standard output and will support multivolume
       archives.  It will be upward and downward compatible with this version
       of zoo.

ACKNOWLEDGEMENTS
       The zoo archiver was initially developed using Microsoft C 3.0 on a PC
       clone manufactured by Toshiba of Japan and almost sold by Xerox.
       Availability of the following systems was helpful in achieving porta
       bility: Paul Homchicks Compaq running Microport System V/AT;  The
       Eskimo BBS somewhere in Oregon running Xenix/68000; Greg Laskins
       system gryphon which is an Intel 310 running Xenix/286;	Ball State
       Universitys AT&T 3B2/300, UNIX PC, and VAX-11/785 (4.3BSD and VAX/VMS)
       systems.  In addition J. Brian Waters provided feedback to help me make
       the code compilable on his Amiga using Manx/Aztec C.  The executable
       version 2.0 for MS-DOS is currently compiled with Borlands Turbo C++
       1.0.

       Thanks are due to the following people and many others too numerous to
       mention.

       J. Brian Waters , who has worked diligently to
       port zoo to AmigaDOS, created Amiga-specific code, and continues keep
       ing it updated.

       Paul Homchick , who provided numerous detailed
       reports about some nasty bugs.

       Bill Davidsen , who provided numerous
       improvements to this manual, contributed multiscreen help, and provided
       many useful bug reports, bug fixes, code improvements, and suggestions.

       Mark Alexander , who provided me with some bug
       fixes.

       Haruhiko Okumura, who wrote the ar archiver and some excellent compres
       sion code, which I adapted for use in zoo.

       Randal L. Barnes , who (with Randy Mag
       nuson) wrote the code to support the preservation of file timestamps
       under VAX/VMS.

       Raymond D. Gardner, who contributed replacement uncompression code that
       on some systems is twice as fast as the original.

       Greg Yachuk and Andre Van Dalen, who independently modified MS-DOS zoo
       to support multivolume archives.  (This support is not yet in this
       official release.)

AUTHOR
       Rahul Dhesi



7th Edition			 July 7, 1991				ZOO(1)




Yals.net is © 1999-2009 Crescendo Communications
Sharing tech info on the web for more than a decade!
This page was generated Thu Apr 30 17:05:23 2009