Provided by: zoo_2.10-24_amd64 bug


       fiz - analyze damaged zoo archive for data recovery


       fiz archive[.zoo]


       Fiz  is used to analyze damaged zoo archives and locate directory entries and file data in
       them.  The current version of fiz is 2.0 and it is meant to be used  in  conjunction  with
       zoo  version  2.0.   Fiz makes no assumptions about archive structure.  Instead, it simply
       searches the entire subject archive for tag values that mark the  locations  of  directory
       entries  and  file data.  In a zoo archive, a directory entry contains information about a
       stored file such as its name, whether compressed or not, and its timestamp.  The file data
       are  the  actual  data  for the archived file, and may be either the original data, or the
       result of compressing the file.

       For each directory entry found, fiz prints  where  in  the  archive  it  is  located,  the
       directory  path  and  filename(s)  found  in it, whether the directory entry appears to be
       corrupted (indicated by [*CRC Error*]), and the value of the pointer to the file data that
       is  found  in  the directory entry.  For each block of file data found in the archive, fiz
       prints where in the archive the block begins.  In the case of an  undamaged  archive,  the
       pointer  to  file  data  found  in a directory entry will correspond to where fiz actually
       locates the data.  Here is some sample output from fiz:

           2526: DIR  [changes] ==>   95
           2587: DATA
           3909: DIR  [copyrite] ==> 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 notation "==>   95" indicates that the directory  entry  found
       by  fiz  at position 2526 has a file data pointer to position 95.  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

       Once the locations of directory entries and file data are found, the @ modifier  to  zoo's
       archive  list and extract commands can be used and the archive contents selectively listed
       or  extracted,  skipping  the  damaged  portion.   This  is  further  described   in   the
       documentation for zoo(1).

       In  the  above 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
       executed on an MS-DOS system for extraction, can be extracted on non-MSDOS  systems  in  a
       similar way.




       Random  byte  patterns  can  occasionally  be  incorrectly recognized as tag values.  This
       occurs very rarely, however, and trial and error will usually permit all undamaged data to
       be extracted.


       Fiz always exits with a status code of 0.


       Automation  of  data  recovery from a damaged archive is potentially achievable.  However,
       since damaged archives occur only rarely, fiz as it currently stands is unlikely to change
       much in the near future.


       Rahul Dhesi

                                           Jan 31, 1988                                    FIZ(1)