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
|
--- star/star.c.orig Fri Nov 15 19:39:13 2002
+++ star/star.c Tue Nov 26 03:03:34 2002
@@ -500,14 +500,16 @@
susage(ret)
int ret;
{
- error("Usage:\t%s cmd [options] file1 ... filen\n", get_progname());
- error("\nUse\t%s -help\n", get_progname());
- error("and\t%s -xhelp\n", get_progname());
- error("to get a list of valid cmds and options.\n");
- error("\nUse\t%s H=help\n", get_progname());
- error("to get a list of valid archive header formats.\n");
- error("\nUse\t%s diffopts=help\n", get_progname());
- error("to get a list of valid diff options.\n");
+ FILE *fp = ret ? stderr : stdout;
+
+ fprintf(fp, "Usage:\t%s cmd [options] file1 ... filen\n", get_progname());
+ fprintf(fp, "\nUse\t%s -help\n", get_progname());
+ fprintf(fp, "and\t%s -xhelp\n", get_progname());
+ fprintf(fp, "to get a list of valid cmds and options.\n");
+ fprintf(fp, "\nUse\t%s H=help\n", get_progname());
+ fprintf(fp, "to get a list of valid archive header formats.\n");
+ fprintf(fp, "\nUse\t%s diffopts=help\n", get_progname());
+ fprintf(fp, "to get a list of valid diff options.\n");
exit(ret);
/* NOTREACHED */
}
@@ -516,48 +518,50 @@
usage(ret)
int ret;
{
- error("Usage:\t%s cmd [options] file1 ... filen\n", get_progname());
- error("Cmd:\n");
- error("\t-c/-u/-r\tcreate/update/replace named files to tape\n");
- error("\t-x/-t/-n\textract/list/trace named files from tape\n");
- error("\t-diff\t\tdiff archive against file system (see -xhelp)\n");
- error("Options:\n");
- error("\t-help\t\tprint this help\n");
- error("\t-xhelp\t\tprint extended help\n");
- error("\t-version\tprint version information and exit\n");
- error("\tblocks=#,b=#\tset blocking factor to #x512 Bytes (default 20)\n");
- error("\tfile=nm,f=nm\tuse 'nm' as tape instead of stdin/stdout\n");
- error("\t-T\t\tuse $TAPE as tape instead of stdin/stdout\n");
+ FILE *fp = ret ? stderr : stdout;
+
+ fprintf(fp, "Usage:\t%s cmd [options] file1 ... filen\n", get_progname());
+ fprintf(fp, "Cmd:\n");
+ fprintf(fp, "\t-c/-u/-r\tcreate/update/replace named files to tape\n");
+ fprintf(fp, "\t-x/-t/-n\textract/list/trace named files from tape\n");
+ fprintf(fp, "\t-diff\t\tdiff archive against file system (see -xhelp)\n");
+ fprintf(fp, "Options:\n");
+ fprintf(fp, "\t-help\t\tprint this help\n");
+ fprintf(fp, "\t-xhelp\t\tprint extended help\n");
+ fprintf(fp, "\t-version\tprint version information and exit\n");
+ fprintf(fp, "\tblocks=#,b=#\tset blocking factor to #x512 Bytes (default 20)\n");
+ fprintf(fp, "\tfile=nm,f=nm\tuse 'nm' as tape instead of stdin/stdout\n");
+ fprintf(fp, "\t-T\t\tuse $TAPE as tape instead of stdin/stdout\n");
#ifdef FIFO
- error("\t-fifo/-no-fifo\tuse/don't use a fifo to optimize data flow from/to tape\n");
+ fprintf(fp, "\t-fifo/-no-fifo\tuse/don't use a fifo to optimize data flow from/to tape\n");
#if defined(USE_MMAP) && defined(USE_USGSHM)
- error("\t-shm\t\tuse SysV shared memory for fifo\n");
+ fprintf(fp, "\t-shm\t\tuse SysV shared memory for fifo\n");
#endif
#endif
- error("\t-v\t\tincrement verbose level\n");
- error("\t-block-number\tprint the block numbers where the TAR headers start\n");
- error("\t-tpath\t\tuse with -t to list path names only\n");
- error("\tH=header\tgenerate 'header' type archive (see H=help)\n");
- error("\tC=dir\t\tperform a chdir to 'dir' before storing next file\n");
- error("\t-z\t\tpipe input/output through gzip, does not work on tapes\n");
- error("\t-bz\t\tpipe input/output through bzip2, does not work on tapes\n");
- error("\t-B\t\tperform multiple reads (needed on pipes)\n");
- error("\t-i\t\tignore checksum errors\n");
- error("\t-d\t\tdo not store/create directories\n");
- error("\t-m\t\tdo not restore access and modification time\n");
- error("\t-o,-nochown\tdo not restore owner and group\n");
- error("\t-a,-atime\treset access time after storing file\n");
- error("\t-p\t\trestore filemodes of directories\n");
- error("\t-l\t\tdo not print a message if not all links are dumped\n");
- error("\t-h,-L\t\tfollow symbolic links as if they were files\n");
- error("\t-D\t\tdo not descend directories\n");
- error("\t-M\t\tdo not descend mounting points\n");
- error("\t-I,-w\t\tdo interactive creation/extraction/renaming\n");
- error("\t-O\t\tbe compatible to old tar (except for checksum bug)\n");
- error("\t-P\t\tlast record may be partial (useful on cartridge tapes)\n");
- error("\t-S\t\tdo not store/create special files\n");
- error("\t-F,-FF,-FFF,...\tdo not store/create SCCS/RCS, core and object files\n");
- error("\t-U\t\trestore files unconditionally\n");
+ fprintf(fp, "\t-v\t\tincrement verbose level\n");
+ fprintf(fp, "\t-block-number\tprint the block numbers where the TAR headers start\n");
+ fprintf(fp, "\t-tpath\t\tuse with -t to list path names only\n");
+ fprintf(fp, "\tH=header\tgenerate 'header' type archive (see H=help)\n");
+ fprintf(fp, "\tC=dir\t\tperform a chdir to 'dir' before storing next file\n");
+ fprintf(fp, "\t-z\t\tpipe input/output through gzip, does not work on tapes\n");
+ fprintf(fp, "\t-bz\t\tpipe input/output through bzip2, does not work on tapes\n");
+ fprintf(fp, "\t-B\t\tperform multiple reads (needed on pipes)\n");
+ fprintf(fp, "\t-i\t\tignore checksum errors\n");
+ fprintf(fp, "\t-d\t\tdo not store/create directories\n");
+ fprintf(fp, "\t-m\t\tdo not restore access and modification time\n");
+ fprintf(fp, "\t-o,-nochown\tdo not restore owner and group\n");
+ fprintf(fp, "\t-a,-atime\treset access time after storing file\n");
+ fprintf(fp, "\t-p\t\trestore filemodes of directories\n");
+ fprintf(fp, "\t-l\t\tdo not print a message if not all links are dumped\n");
+ fprintf(fp, "\t-h,-L\t\tfollow symbolic links as if they were files\n");
+ fprintf(fp, "\t-D\t\tdo not descend directories\n");
+ fprintf(fp, "\t-M\t\tdo not descend mounting points\n");
+ fprintf(fp, "\t-I,-w\t\tdo interactive creation/extraction/renaming\n");
+ fprintf(fp, "\t-O\t\tbe compatible to old tar (except for checksum bug)\n");
+ fprintf(fp, "\t-P\t\tlast record may be partial (useful on cartridge tapes)\n");
+ fprintf(fp, "\t-S\t\tdo not store/create special files\n");
+ fprintf(fp, "\t-F,-FF,-FFF,...\tdo not store/create SCCS/RCS, core and object files\n");
+ fprintf(fp, "\t-U\t\trestore files unconditionally\n");
exit(ret);
/* NOTREACHED */
}
@@ -566,69 +570,71 @@
xusage(ret)
int ret;
{
- error("Usage:\t%s cmd [options] file1 ... filen\n", get_progname());
- error("Extended options:\n");
- error("\tdiffopts=optlst\tcomma separated list of diffopts (see diffopts=help)\n");
- error("\t-debug\t\tprint additional debug messages\n");
- error("\t-silent\t\tno not print informational messages\n");
- error("\t-not,-V\t\tuse those files which do not match pattern\n");
- error("\tVOLHDR=name\tuse name to generate a volume header\n");
- error("\t-xdir\t\textract dir even if the current is never\n");
- error("\t-dirmode\t\twrite directories after the files they contain\n");
- error("\t-link-dirs\tlook for hard linked directories in create mode\n");
- error("\t-dump\t\texperimental option for incremental dumps (more ino metadata)\n");
- error("\t-meta\t\texperimental option to use inode metadata only\n");
- error("\t-keep-old-files,-k\tkeep existing files\n");
- error("\t-refresh-old-files\trefresh existing files, don't create new files\n");
- error("\t-refresh\trefresh existing files, don't create new files\n");
- error("\t-/\t\tdon't strip leading '/'s from file names\n");
- error("\tlist=name\tread filenames from named file\n");
- error("\t-dodesc\t\tdo descend directories found in a list= file\n");
- error("\tpattern=p,pat=p\tset matching pattern\n");
- error("\tmaxsize=#\tdo not store file if bigger than # (default mult is kB)\n");
- error("\tnewer=name\tstore only files which are newer than 'name'\n");
- error("\tnew-volume-script=script\tcall 'scipt' at end of each volume\n");
- error("\t-ctime\t\tuse ctime for newer= option\n");
- error("\t-nodump\t\tdo not dump files that have the nodump flag set\n");
- error("\t-acl\t\thandle access control lists\n");
- error("\t-xfflags\t\thandle extended file flags\n");
- error("\tbs=#\t\tset (output) block size to #\n");
+ FILE *fp = ret ? stderr : stdout;
+
+ fprintf(fp, "Usage:\t%s cmd [options] file1 ... filen\n", get_progname());
+ fprintf(fp, "Extended options:\n");
+ fprintf(fp, "\tdiffopts=optlst\tcomma separated list of diffopts (see diffopts=help)\n");
+ fprintf(fp, "\t-debug\t\tprint additional debug messages\n");
+ fprintf(fp, "\t-silent\t\tno not print informational messages\n");
+ fprintf(fp, "\t-not,-V\t\tuse those files which do not match pattern\n");
+ fprintf(fp, "\tVOLHDR=name\tuse name to generate a volume header\n");
+ fprintf(fp, "\t-xdir\t\textract dir even if the current is never\n");
+ fprintf(fp, "\t-dirmode\t\twrite directories after the files they contain\n");
+ fprintf(fp, "\t-link-dirs\tlook for hard linked directories in create mode\n");
+ fprintf(fp, "\t-dump\t\texperimental option for incremental dumps (more ino metadata)\n");
+ fprintf(fp, "\t-meta\t\texperimental option to use inode metadata only\n");
+ fprintf(fp, "\t-keep-old-files,-k\tkeep existing files\n");
+ fprintf(fp, "\t-refresh-old-files\trefresh existing files, don't create new files\n");
+ fprintf(fp, "\t-refresh\trefresh existing files, don't create new files\n");
+ fprintf(fp, "\t-/\t\tdon't strip leading '/'s from file names\n");
+ fprintf(fp, "\tlist=name\tread filenames from named file\n");
+ fprintf(fp, "\t-dodesc\t\tdo descend directories found in a list= file\n");
+ fprintf(fp, "\tpattern=p,pat=p\tset matching pattern\n");
+ fprintf(fp, "\tmaxsize=#\tdo not store file if bigger than # (default mult is kB)\n");
+ fprintf(fp, "\tnewer=name\tstore only files which are newer than 'name'\n");
+ fprintf(fp, "\tnew-volume-script=script\tcall 'scipt' at end of each volume\n");
+ fprintf(fp, "\t-ctime\t\tuse ctime for newer= option\n");
+ fprintf(fp, "\t-nodump\t\tdo not dump files that have the nodump flag set\n");
+ fprintf(fp, "\t-acl\t\thandle access control lists\n");
+ fprintf(fp, "\t-xfflags\t\thandle extended file flags\n");
+ fprintf(fp, "\tbs=#\t\tset (output) block size to #\n");
#ifdef FIFO
- error("\tfs=#\t\tset fifo size to #\n");
+ fprintf(fp, "\tfs=#\t\tset fifo size to #\n");
#endif
- error("\ttsize=#\t\tset tape volume size to # (default multiplier is 512)\n");
- error("\t-qic24\t\tset tape volume size to %d kBytes\n",
+ fprintf(fp, "\ttsize=#\t\tset tape volume size to # (default multiplier is 512)\n");
+ fprintf(fp, "\t-qic24\t\tset tape volume size to %d kBytes\n",
TSIZE(QIC_24_TSIZE)/1024);
- error("\t-qic120\t\tset tape volume size to %d kBytes\n",
+ fprintf(fp, "\t-qic120\t\tset tape volume size to %d kBytes\n",
TSIZE(QIC_120_TSIZE)/1024);
- error("\t-qic150\t\tset tape volume size to %d kBytes\n",
+ fprintf(fp, "\t-qic150\t\tset tape volume size to %d kBytes\n",
TSIZE(QIC_150_TSIZE)/1024);
- error("\t-qic250\t\tset tape volume size to %d kBytes\n",
+ fprintf(fp, "\t-qic250\t\tset tape volume size to %d kBytes\n",
TSIZE(QIC_250_TSIZE)/1024);
- error("\t-nowarn\t\tdo not print warning messages\n");
- error("\t-time\t\tprint timing info\n");
- error("\t-no-statistics\tdo not print statistics\n");
+ fprintf(fp, "\t-nowarn\t\tdo not print warning messages\n");
+ fprintf(fp, "\t-time\t\tprint timing info\n");
+ fprintf(fp, "\t-no-statistics\tdo not print statistics\n");
#ifdef FIFO
- error("\t-fifostats\tprint fifo statistics\n");
+ fprintf(fp, "\t-fifostats\tprint fifo statistics\n");
#endif
- error("\t-numeric\tdon't use user/group name from tape\n");
- error("\t-newest\t\tfind newest file on tape\n");
- error("\t-newest-file\tfind newest regular file on tape\n");
- error("\t-hpdev\t\tuse HP's non POSIX compliant method to store dev numbers\n");
- error("\t-modebits\tinclude all 16 bits from stat.st_mode, this violates POSIX-1003.1\n");
- error("\t-copylinks\tCopy hard and symlinks rather than linking\n");
- error("\t-hardlinks\tExtract symlinks as hardlinks\n");
- error("\t-symlinks\tExtract hardlinks as symlinks\n");
- error("\t-signed-checksum\tuse signed chars to calculate checksum\n");
- error("\t-sparse\t\thandle file with holes effectively on store/create\n");
- error("\t-force-hole\ttry to extract all files with holes\n");
- error("\t-to-stdout\textract files to stdout\n");
- error("\t-wready\t\twait for tape drive to become ready\n");
- error("\t-force-remove\tforce to remove non writable files on extraction\n");
- error("\t-ask-remove\task to remove non writable files on extraction\n");
- error("\t-remove-first\tremove files before extraction\n");
- error("\t-remove-recursive\tremove files recursive\n");
- error("\t-onull,-nullout\tsimulate creating an achive to compute the size\n");
+ fprintf(fp, "\t-numeric\tdon't use user/group name from tape\n");
+ fprintf(fp, "\t-newest\t\tfind newest file on tape\n");
+ fprintf(fp, "\t-newest-file\tfind newest regular file on tape\n");
+ fprintf(fp, "\t-hpdev\t\tuse HP's non POSIX compliant method to store dev numbers\n");
+ fprintf(fp, "\t-modebits\tinclude all 16 bits from stat.st_mode, this violates POSIX-1003.1\n");
+ fprintf(fp, "\t-copylinks\tCopy hard and symlinks rather than linking\n");
+ fprintf(fp, "\t-hardlinks\tExtract symlinks as hardlinks\n");
+ fprintf(fp, "\t-symlinks\tExtract hardlinks as symlinks\n");
+ fprintf(fp, "\t-signed-checksum\tuse signed chars to calculate checksum\n");
+ fprintf(fp, "\t-sparse\t\thandle file with holes effectively on store/create\n");
+ fprintf(fp, "\t-force-hole\ttry to extract all files with holes\n");
+ fprintf(fp, "\t-to-stdout\textract files to stdout\n");
+ fprintf(fp, "\t-wready\t\twait for tape drive to become ready\n");
+ fprintf(fp, "\t-force-remove\tforce to remove non writable files on extraction\n");
+ fprintf(fp, "\t-ask-remove\task to remove non writable files on extraction\n");
+ fprintf(fp, "\t-remove-first\tremove files before extraction\n");
+ fprintf(fp, "\t-remove-recursive\tremove files recursive\n");
+ fprintf(fp, "\t-onull,-nullout\tsimulate creating an achive to compute the size\n");
exit(ret);
/* NOTREACHED */
}
@@ -637,31 +643,33 @@
dusage(ret)
int ret;
{
- error("Diff options:\n");
- error("\tnot\t\tif this option is present, exclude listed options\n");
- error("\t!\t\tif this option is present, exclude listed options\n");
- error("\tall\t\tcompare everything\n");
- error("\tperm\t\tcompare file permissions\n");
- error("\tmode\t\tcompare file permissions\n");
- error("\ttype\t\tcompare file type\n");
- error("\tnlink\t\tcompare linkcount (not supported)\n");
- error("\tuid\t\tcompare owner of file\n");
- error("\tgid\t\tcompare group of file\n");
- error("\tuname\t\tcompare name of owner of file\n");
- error("\tgname\t\tcompare name of group of file\n");
- error("\tid\t\tcompare owner, group, ownername and groupname of file\n");
- error("\tsize\t\tcompare file size\n");
- error("\tdata\t\tcompare content of file\n");
- error("\tcont\t\tcompare content of file\n");
- error("\trdev\t\tcompare rdev of device node\n");
- error("\thardlink\tcompare target of hardlink\n");
- error("\tsymlink\t\tcompare target of symlink\n");
- error("\tatime\t\tcompare access time of file (only star)\n");
- error("\tmtime\t\tcompare modification time of file\n");
- error("\tctime\t\tcompare creation time of file (only star)\n");
- error("\ttimes\t\tcompare all times of file\n");
- error("\n");
- error("Default is to compare everything except atime.\n");
+ FILE *fp = ret ? stderr : stdout;
+
+ fprintf(fp, "Diff options:\n");
+ fprintf(fp, "\tnot\t\tif this option is present, exclude listed options\n");
+ fprintf(fp, "\t!\t\tif this option is present, exclude listed options\n");
+ fprintf(fp, "\tall\t\tcompare everything\n");
+ fprintf(fp, "\tperm\t\tcompare file permissions\n");
+ fprintf(fp, "\tmode\t\tcompare file permissions\n");
+ fprintf(fp, "\ttype\t\tcompare file type\n");
+ fprintf(fp, "\tnlink\t\tcompare linkcount (not supported)\n");
+ fprintf(fp, "\tuid\t\tcompare owner of file\n");
+ fprintf(fp, "\tgid\t\tcompare group of file\n");
+ fprintf(fp, "\tuname\t\tcompare name of owner of file\n");
+ fprintf(fp, "\tgname\t\tcompare name of group of file\n");
+ fprintf(fp, "\tid\t\tcompare owner, group, ownername and groupname of file\n");
+ fprintf(fp, "\tsize\t\tcompare file size\n");
+ fprintf(fp, "\tdata\t\tcompare content of file\n");
+ fprintf(fp, "\tcont\t\tcompare content of file\n");
+ fprintf(fp, "\trdev\t\tcompare rdev of device node\n");
+ fprintf(fp, "\thardlink\tcompare target of hardlink\n");
+ fprintf(fp, "\tsymlink\t\tcompare target of symlink\n");
+ fprintf(fp, "\tatime\t\tcompare access time of file (only star)\n");
+ fprintf(fp, "\tmtime\t\tcompare modification time of file\n");
+ fprintf(fp, "\tctime\t\tcompare creation time of file (only star)\n");
+ fprintf(fp, "\ttimes\t\tcompare all times of file\n");
+ fprintf(fp, "\n");
+ fprintf(fp, "Default is to compare everything except atime.\n");
exit(ret);
/* NOTREACHED */
}
@@ -670,16 +678,18 @@
husage(ret)
int ret;
{
- error("Header types:\n");
- error("\ttar\t\told tar format\n");
- error("\tstar\t\told star format from 1985\n");
- error("\tgnutar\t\tgnu tar format (violates POSIX, use with care)\n");
- error("\tustar\t\tstandard tar (ieee POSIX 1003.1-1988) format\n");
- error("\txstar\t\textended standard tar format (star 1994)\n");
- error("\txustar\t\textended standard tar format without tar signature\n");
- error("\texustar\t\textended standard tar format without tar signature (always x-header)\n");
- error("\tpax\t\textended (ieee POSIX 1003.1-2001) standard tar format\n");
- error("\tsuntar\t\tSun's extended pre-POSIX.1-2001 Solaris 7/8 tar format\n");
+ FILE *fp = ret ? stderr : stdout;
+
+ fprintf(fp, "Header types:\n");
+ fprintf(fp, "\ttar\t\told tar format\n");
+ fprintf(fp, "\tstar\t\told star format from 1985\n");
+ fprintf(fp, "\tgnutar\t\tgnu tar format (violates POSIX, use with care)\n");
+ fprintf(fp, "\tustar\t\tstandard tar (ieee POSIX 1003.1-1988) format\n");
+ fprintf(fp, "\txstar\t\textended standard tar format (star 1994)\n");
+ fprintf(fp, "\txustar\t\textended standard tar format without tar signature\n");
+ fprintf(fp, "\texustar\t\textended standard tar format without tar signature (always x-header)\n");
+ fprintf(fp, "\tpax\t\textended (ieee POSIX 1003.1-2001) standard tar format\n");
+ fprintf(fp, "\tsuntar\t\tSun's extended pre-POSIX.1-2001 Solaris 7/8 tar format\n");
exit(ret);
/* NOTREACHED */
}
|