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
|
#include "tpax_driver_impl.h"
#include "tpax_visibility_impl.h"
#include "argv/argv.h"
const tpax_hidden struct argv_option tpax_default_options[] = {
{"Wversion", 0,TAG_VERSION,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"show version information"},
{"Whelp", 0,TAG_HELP,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"show usage information"},
{"Wlist", 0,TAG_LIST,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"list mode (output names of archive members)"},
{"Wread", 'r',TAG_READ,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"read mode (extract matching archive members)"},
{"Write", 'w',TAG_WRITE,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"write mode (add specified files to archive)"},
{"Wcopy", 0,TAG_COPY,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"copy mode (copy specified files "
"to a specified destination directory)"},
{"Wfile", 'f',TAG_FILE,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_EQUAL,
0,"<ARCHIVE>",
"read from (in read or list modes), "
"or write to (in write mode) the specified %s "
"after (in write mode) creating it as necessary"},
{"Wformat", 'x',TAG_FORMAT,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_EQUAL,
"pax|cpio|ustar|rustar",0,
"archive format [%s]"},
{"Wverbose", 'v',TAG_VERBOSE,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"write pathnames to stderr in read, write, and copy modes; "
"produce verbose output in list mode."},
{"Wblksize", 'b',TAG_BLKSIZE,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_EQUAL,0,0,
"(non-default) block-size; valid values are "
"in the range of 512 to 32256; keeping "
"the default format-specific block size "
"(5120 for the pax and cpio formats,"
" 10240 for the ustar format) "
"is strongly recommended."},
{"Wrecurse", 0,TAG_RECURSE,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"recurse into directory archive members "
"(this is the tpax_main() default)"},
{"Wno-recurse",'d',TAG_NORECURSE,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"do not recurse into directory archive members"},
{"Wpreserve-atime",
't',TAG_PRESERVE_ATIME,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"when user has the necessary permissions, "
"set the access time of each file to the access "
"time that was reported by fstatat(3) prior to the "
"first read operation performed by pax"},
{"Wpax-symlink-args",
'H',TAG_PAX_SYMLINK_ARGS,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"when a command-line argument is a symbolic link, "
"add the underlying (referenced) file-system object "
"or directory to the archive using the name of the "
"symbolic link."},
{"Wpax-symlink-items",
'L',TAG_PAX_SYMLINK_ITEMS,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"when a command-line argument is a symbolic link, or when "
"an item added by way of recursion is a symbolic link, "
"add the underlying (referenced) file-system object "
"or directory to the archive using the name of the "
"symbolic link."},
{"Woptions", 'o',TAG_OPTIONS,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE|ARGV_OPTION_KEYVAL_ARRAY,0,0,
"a user-provided, format-specific keyval array of the form "
"keyword[[:]=value][,keyword[[:]=value], ...]"},
{"Wreplstr", 's',TAG_REPLSTR,ARGV_OPTARG_REQUIRED,
ARGV_OPTION_HYBRID_ONLY|ARGV_OPTION_HYBRID_SPACE,0,0,
"rename files and archive members as they are being added to "
"or extracted from the archive according to the specified "
"ed(1) style replacement string, which should be in the format "
"<sep><regex><sep><replstr><sep>[gp]; as an example, "
"-s ',^/git/tpax/,tpax-1.2.3/,' uses <comma> as the separator "
"character, and instructs pax to prefix all files rooted in "
"'/git/tpax/' with 'tpax-1.2.3/' while leaving the names of files which "
"do not match the regex expression unchanged. "
"When this option is repeated, pax shall attempt to match each file or "
"member name against all of the provided repalcement-string arguments "
"in the order of appearnce on the command line until the first "
"successful match."},
{"Wstrict-device-id",
'X',TAG_STRICT_DEVICE_ID,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"do not recurse into directories across device boundaries"},
{"Wstrict-path-input",
0,TAG_STRICT_PATH,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"do not allow file arguments (in write and copy modes) "
"to contain parent-directoy (dot dot) references"},
{"Wpure-path-output",
0,TAG_PURE_PATH,ARGV_OPTARG_NONE,
ARGV_OPTION_HYBRID_ONLY,0,0,
"output (in list mode) or store (in write mode) path "
"names in pure form, specifically by liminating all "
"this-dir (dot) elements from the listed/stored path "
"name, as well as replacing each meaningless sequence "
"of consecutive forward slash characters with a single "
"forward slash; the presence of exactly two forward "
"slash characters in the beginning of a path may be "
"meaningful, and therefore shall remain instact."},
{0,0,0,0,0,0,0,0}
};
|