-
Notifications
You must be signed in to change notification settings - Fork 0
/
zoo.1
1672 lines (1672 loc) · 45.6 KB
/
zoo.1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
.\" derived from: @(#) zoo.1 2.44 88/08/25 16:05:30 */
.\" $Source: /usr/home/dhesi/zoo/RCS/zoo.1,v $
.\" $Id: zoo.1,v 1.4 91/07/09 02:25:41 dhesi Exp $
.\"
.\" For formatting with nroff:
.\" tbl zoo.1 | nroff -man | col
.\" It should be possible to use troff instead of nroff but I haven't
.\" confirmed this. R.D.
.\"
.na
.TH ZOO 1 "July 7, 1991"
.AT 3
.de sh
.br
.ne 5
.PP
\fB\\$1\fR
.PP
..
.SH NAME
zoo \- manipulate archives of files in compressed form
.SH SYNOPSIS
.B zoo
.RB { acfDeghHlLPTuUvVx }[ aAcCdEfghImMnNoOpPqSu1:/.@n+\-= ]
archive [file] ...
.sp 0
.B zoo \-command
archive [file] ...
.sp 0
.B zoo h
.SH DESCRIPTION
.I Zoo
is used to create and maintain collections of files in compressed form.
It uses a Lempel-Ziv compression algorithm that gives space savings
in the range of 20% to 80% depending on the type of file data.
.I Zoo
can store and selectively extract
multiple generations of the same file. Data can be recovered
from damaged archives by skipping the damaged portion
and locating undamaged data with the help of
.I fiz(1).
.PP
This documentation is for version 2.1. Changes from previous
versions are described in the section labelled
.BR CHANGES .
.PP
The command
.I zoo
.B h
gives a summary of commands. Extended multiscreen help can be obtained
with
.I zoo
.BR H .
.PP
.I Zoo
will not add an archive to itself, nor add the
archive's backup (with
.B .bak
extension to the filename) to the archive.
.PP
.I 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.
.PP
When
.I 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.
.I
Zoo
deletes a stored copy of an added file if necessary to prevent
the number of stored generations from exceeding the user-specified limit.
.PP
Deleted files may be later undeleted.
Archives may be packed to recover space occupied by deleted files.
.PP
All commands assume that the archive name ends with the characters
.B .zoo
unless a different extension is supplied.
.PP
.B Novice commands
.PP
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
.BR .bak .
.PP
No Novice command ever stores the directory prefix of a file.
.PP
The Novice commands are as follows.
.PP
.TP 8
.B \-add
Adds the specified files to the archive.
.PP
.TP
.B \-freshen
Adds a specified file to the archive if and only if an older file by
the same name already exists in the archive.
.PP
.TP
.B \-delete
Deletes the specified files from the archive.
.PP
.TP
.B \-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.
.PP
.TP
.B \-extract
Extracts the specified files from the archive. If no file is specified
all files are extracted.
.PP
.TP
.B \-move
Equivalent to
.B \-add
except that source files are deleted after addition.
.PP
.TP
.B \-print
Equivalent to
.B \-extract
except that extracted data are sent to standard output.
.PP
.TP
.B \-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.
.PP
.TP
.B \-test
Equivalent to
.B \-extract
except that the extracted data are not saved but any errors encountered
are reported.
.PP
.TP
.B \-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
.B /end
(case-insensitive) on
a separate line; or type the end-of-file character (normally control D)
to skip all remaining files.
.PP
.TP
.B \-delete
Deletes the specified files.
.PP
.ne 16
.nf
The correspondence between Novice and Expert commands is as follows.
.PP
.\" Table formatting for troff thanks to Bill Davidsen <uunet!crdos1!davidsen>
.sp
.TS H
tab(@);
l l l.
Novice@@Equivalent
Command@Description@Expert Command
_
\-add@add files to archive@ahP
\-extract@extract files from archive@x
\-move@move files to archive@ahMP
\-test@test archive integrity@xNd
\-print@extract files to standard output@xp
\-delete@delete files from archive@DP
\-list@list archive contents@Vm
\-update@add new or newer files@ahunP
\-freshen@by add newer files@ahuP
\-comment@add comments to files@c
.TE
.fi
.PD
.PP
.sh "Expert commands"
The general format of expert commands is:
.PP
.I zoo
.RB { acfDeghHlLPTuUvVx }[ aAcCdEfghImMnNoOpPqSu1:/.@n+\-= ]
archive [file] ...
.PP
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
command character. All combinations of command and modifier characters
may not be valid.
.PP
Files are added to an archive with the command:
.PP
.I zoo
.RB { au }[ cfhIMnPqu:+\- ]
archive [file] ...
.PP
Command characters are:
.PP
.TP
.B 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.
.PP
.TP
.B 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.
.PP
The following modifiers are specific to these commands.
.PP
.TP
.B M
Move files to archive. This makes
.I zoo
delete (unlink) the original 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
.I zoo
detected no errors.
.PP
.TP
.B n
Add new files only. A specified file is added only if it isn't
already in the archive.
.PP
.TP
.B 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 processor time. Extracting files
compressed with the method is usually slightly faster than those saved
with the default method.
.PP
.TP
.B P
Pack archive after files have been added.
.PP
.TP
.B u
Applied to the
.B a
command, this modifier makes it behave identically to the
.B u
command.
.sp 1
The combination of the
.B n
modifier with the
.B u
modifier or
.B u
command causes addition of a file to the archive either
if the file is not already in the archive,
.I or
if the file is already in the archive but the archived
copy is older than the copy being added.
.PP
.TP
.B :
Do not store directory names. In the absence of this modifier
.I zoo
stores the full pathname of each archived file.
.PP
.TP
.B I
Read filenames to be archived from standard input.
.I Zoo
will read
its standard input and assume that each line of text contains a
filename. Under AmigaDOS and the **IX family, the entire line is used.
Under MS-DOS and VAX/VMS,
.I 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.
.sp 1
Under the **IX family of operating systems,
.I zoo
can be used as follows in a pipeline:
.IP "" 10
find . \-print |
.I zoo
aI sources
.IP "" 5
.sp 1
If the
.B I
modifier is specified, no filenames may be supplied on the command
line itself.
.PP
.TP
.BR + , \-
These modifiers take effect only if the
.B a
command results in the creation of a new archive.
.B +
causes any newly-created archive to have
generations enabled.
.B \-
is provided for symmetry and causes any newly-created
archive to have generations disabled; this is also the
default if neither
.B +
nor
.B \-
is specified.
.PP
Files are extracted from an archive with the command:
.sp 1
.I zoo
.RB { ex }[ dNoOpqS./@ ]
archive [file] ...
.PP
The
.B e
and
.B x
commands are synonymous. If no file was specified, all files are
extracted from the archive.
.PP
The following modifiers are specific to the e and x commands:
.PP
.TP
.B N
Do not save extracted data but report any errors encountered.
.PP
.TP
.B O
Overwrite files. Normally, if a file being extracted would
overwrite an already-existing file of the same name,
.I 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, don't
overwrite; or `a', which means assume the answer is `y' for this
and all subsequent files. The
.B O
modifier makes
.I zoo
assume that files may always be overwritten. Neither
answering the question affirmatively nor using
.B O
alone will cause read-only files to be overwritten.
.sp 1
On **IX systems, however, doubling this modifier as
.B OO
will force
.I zoo
to unconditionally overwrite any read-protected files
with extracted files if it can do so.
.sp 1
The
.B O, N,
and
.B p
modifiers are mutually exclusive.
.PP
.TP
.B S
Supersede newer files on disk with older extracted
files.
Unless this modifier is used,
.I zoo
will not overwrite a newer existing file with an
older extracted file.
.PP
.TP
.B o
This is equivalent to the
.B O
modifier if and only if it
is given at least twice. It is otherwise ignored.
.PP
.TP
.B 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.
.PP
.TP
.B /
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 doubled as
.BR // ,
required directories need not exist and are created if necessary.
.PP
The management of multiple generations of archived files
is done with the commands:
.sp 1
.B zoo
\fBgl\fR[\fR\fBAq\fR]{\fR\fB+\-=\fR}\fR\fBnumber
.B archive files ..
.sp 0
.B zoo
\fBgc\fR[\fR\fBq\fR]{\fR\fB+\-=\fR}\fR\fBnumber
.B archive files ..
.sp 0
.B zoo
.BR gA [ q ] "\- archive"
.sp 0
.B zoo
.BR gA [ q ] "+ archive"
.sp 1
The first form,
.BR gl ,
adjusts the generation limit of selected files by the specified
value. If the form
.B "=n"
is used, where n is a decimal number, this sets the generation
limit to the
specified value. If
.B +
or
.B \-
are used in placed of
.B =
the effect is to increment or decrement the generation limit
by the specified value. For example, the command
.IP "" 5
.B "zoo gl=5 xyz :"
.IP "" 0
sets the generation limit of each file in the archive
.B xyz.zoo
to a value of 5. The command
.IP "" 5
.B "zoo gl\-3 xyz :"
.IP "" 0
decrements the generation limit of each file in the archive
to 3 less than it currently is.
.sp 1
If the
.B A
modifier is used, the archive-wide generation limit is
adjusted instead.
.sp 1
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.
.sp 1
The generation limit specified should be in the range
0 through 15; any higher numbers are interpreted modulo
16.
.PP
The second form of the command, using
.BR 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
.B gc
command. The syntax of the command is analogous to
the syntax of the
.B gl
command, except that the
.B A
modifier is not applicable to the
.B gc
command.
.PP
The third form,
.BR "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,
.BR "gA+" .
When generations are disabled in an archive,
.I 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
.B "gA\-"
and
.B "gA+"
commands may result in an archive whose
behavior is not easily understandable.
.PP
Archived files are listed with the command:
.sp 1
.I zoo
.RB { lLvV }[ aAcCdfgmqvV@/1+\- ]
.RB archive[ .zoo ]
[file] ...
.PP
.TP
.B 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 timezone
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 user's local time. (Timezone information
is stored and displayed only if the underlying operating
system knows about timezones.)
.sp 1
If no filename is supplied all files are listed except deleted files.
.sp 1
.I Zoo
selects which generation(s) of a file to list according to
the following algorithm.
.sp 1
If no filename is supplied, only the latest generation of
each file is listed. If any filenames are specified,
and a generation is specified for an argument, only
the requested generation is listed. If a filename
is specified ending with the generation character
(`:' or `;'), all generations of that file
are listed. Thus a filename argument of the form
.B zoo.c
will cause only the latest generation of
.I zoo.c
to be listed; an argument of the form
.B "zoo.c:4"
will cause generation 4 of
.I zoo.c
to be listed; and an argument of the form
.B "zoo.c:"
or
.B "zoo.c:*"
will cause all generations of
.I zoo.c
to be listed.
.PP
.TP
.B L
This is similar to the
.B l
command except that all supplied arguments must be archives and all
non-deleted generations of all files in each archive appear in
the listing.
.sp 1
On **IX systems, on which the shell expands arguments, if multiple
archives are to be listed, the
.B L
command must be used. On other systems (VAX/VMS, AmigaDOS,
MSDOS) on which wildcard expansion is done internally by
.I zoo,
wildcards may be used in the archive name, and a multiple
archive listing obtained, using the
.B l
command.
.PP
.TP
.B v
This causes any comment attached to the archive to
be listed in addition to the other information.
.PP
.TP
.B V
This causes any comment attached to the archive and also any
comment attached to each file to be listed.
.sp 1
Both the
.B V
and
.B v
command characters can also be used as modifiers to
the
.B l
and
.B L
commands.
.PP
In addition to the general modifiers described later, the following
modifiers can be applied to the archive list commands.
.PP
.TP
.B 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
.B 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.
.PP
.TP
.B A
This causes any comment attached to the archive to be listed.
.PP
.TP
.B 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
.I zoo,
the listing will show `\-g',
meaning that no generation information is kept and multiple
generations of the file are not being maintained.
.sp 1
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:
.IP "" 10
Archive generation limit is 3 (generations off).
.IP "" 5
For more information about generations see the
description of the
.B g
command.
.PP
.TP
.B 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
.I zoo
preserves only the lowest nine mode bits. Their meanings
are as described in the **IX documentation for the
.I chmod(1)
command.
.PP
.TP
.B C
This modifier causes the stored cyclic redundancy code (CRC)
for each archived file to be shown as a four-digit hexadecimal
number.
.PP
.TP
.B 1
This forces one filename to be listed per line. It is most useful
in combination with the
.B f
modifier.
.TP
.B /
This forces any directory name to be always listed, even in
fast columnized listings that do not normally include any
directory names.
.PP
.TP
.BR + , \-
The
.B \-
modifier causes trailing generation numbers to be
omitted from filenames.
The
.B +
modifier causes the trailing generation numbers to be
shown, which is also the default if neither
.B \-
nor
.B +
is specified.
.PP
Files may be deleted and undeleted from an archive with the following
commands:
.sp 1
.I zoo
.RB { DU }[ Pq1 ]
archive file ...
.PP
The
.B D
command deletes the specified files and the
.B U
command undeletes the specified files. The
.B 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
.B 1
modifier may allow selective extraction of one of these.
.PP
Comments may be added to an archive with the command:
.sp 1
.I zoo
.BR c [ A ]
archive
.PP
Without the modifier
.BR A ,
this behaves identically to the
.B \-comment
command. With the modifier
.BR A ,
the command serves to add or update the comment attached
to the archive as a whole. This comment may be listed with
the
.B lA, LA, v, and V
commands. Applying the
.B cA
command to an archive that was created with an older version
of
.I zoo
will result in an error message requesting that the user
first pack the archive with the
.B P
command. This reorganizes the archive and creates space
for the archive comment.
.PP
The timestamp of an archive may be adjusted with the command:
.sp 1
.I zoo
.BR T [ q ]
archive
.PP
.I 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
.B T
command.
.PP
An archive may be packed with the command:
.sp 1
.I zoo
.BR P [ EPq ]
archive
.PP
If the backup copy of the archive already exists,
.I zoo
will refuse to
pack the archive unless the
.B P
modifier is also given. The
.B E
modifier causes
.I 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.
.PP
Packing removes any garbage data appended to an archive because of
Xmodem 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 created by an older
version of
.I zoo
so that newer features (e.g. archive-wide generation limit,
archive comment) become fully available.
.PP
.I 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:
.sp 1
.I zoo
.BR f { cu } [ h ]
.PP
where
.B c
specifies compression,
.B u
specifies uncompression, and
.B 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
.I tar
or
.I cpio.
.PP
Modem transfers can be speeded up with these commands:
.IP "" 10
.I zoo
.B fc
< file |
.I sz ...
.I rz |
.I zoo
.B fu
> file
.IP "" 5
.PP
.sh "General modifiers"
.PP
The following modifiers are applicable to several commands:
.PP
.TP
.B c
Applied to the
.B a
and
.B 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
.B \-comment
command. Applied to the archive list command
.BR l ,
the
.B c
modifier causes the listing of any comments attached to archived files.
.PP
.TP
.BR \ .
In conjunction with
.B /
or
.B //
this modifier causes any extracted pathname beginning with `/' to be
interpreted relative to the current directory, resulting in
the possible creation of a subtree rooted at the current directory.
In conjunction with the command
.B P
the
.B .
modifier causes the packed archive to be created in the current
directory. This is intended to allow users with limited disk
space but multiple disk drives to pack large archives.
.PP
.TP
.B d
Most commands that act on an archive act only on files that are
not deleted. The
.B d
modifier makes commands act on both normal and deleted files. If
doubled as
.BR dd ,
this modifier forces selection only of deleted files.
.PP
.TP
.B f
Applied to the
.B a
and
.B u
commands, the
.B f
modifier causes fast archiving by adding files without compression.
Applied to
.B l
it causes a fast listing of files in a multicolumn format.
.PP
.TP
.B q
Be quiet. Normally
.I zoo
lists the name of each file and what action it is performing. The
.B q
modifier suppresses this. When files are being extracted to standard
output, the
.B q
modifier suppresses the header preceding each file. When archive
contents 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.
.sp 1
When doubled as
.BR qq ,
this modifier suppresses WARNING messages, and when tripled as
.BR qqq ,
ERROR messages are suppressed too. FATAL error messages
are never suppressed.
.PP
.sh "Recovering data from damaged archives"
The
.B @
modifier allows the user to specify the exact position in
an archive where
.I zoo
should extract a file from, allowing damaged portions
of an archive to be skipped.
This modifier must be immediately followed by a decimal
integer without intervening spaces, and possibly by
a comma and another decimal integer, giving a command of
the form
.B l@m
or
.B l@m,n
(to list archive contents)
or
.B x@m
or
.B x@m,n
(to extract files from an archive). Listing or extraction
begin at position
.B m
in the archive.
The value of
.B m
must be the position within the archive of an
undamaged directory entry. This position is usually obtained from
.I fiz(1)
version 2.0 or later.
.sp 1
If damage to the archive has shortened or lengthened it, all
positions within the archive may be changed by some constant amount.
To compensate for this, the value of
.B n
may be specified. This value is also usually obtained from
.I fiz(1).
It should be the position in the archive of the file data
corresponding to the directory entry that has been specified
with
.BR m .
Thus if the command
.B 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,
.I 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
.I fiz
when it acts on a damaged
.I zoo
archive:
.sp 1
.nf
****************
2526: DIR [changes] ==> 95
2587: DATA
****************
3909: DIR [copyright] ==> 1478
3970: DATA
4769: DATA
****************
.fi
.sp 1
In such output,
.B DIR
indicates where
.I fiz
found a directory entry in the archive, and
.B DATA
indicates where
.I fiz
found file data in the archive. Filenames located by
.I fiz
are enclosed in square brackets, and the notation
"==> 95" indicates that the directory entry found by
.I fiz
at position 2526 has a file data pointer to
position 95. (This is clearly wrong,
since file data always occur in an archive
.I after
their directory entry.) In actuality,
.I fiz
found file data at positions 2587, 3970, and
4769. Since
.I fiz
found only two directory entries, and each directory entry
corresponds to one
file, one of the file data positions is an artifact.
.PP
.sp 1
In this case, commands to try giving to
.I zoo
might be
.B x@2526,2587
(extract beginning at position 2526, and get file data
from position 2587),
.B x@3090,3970
(extract at 3090, get data from 3970)
and
.B x@3909,4769