1 
2 #include "primary-options.h"
3 
4 
5 static gchar *shred_iterations[]={"1","3","5","10","20",NULL};
6 static gchar *shred_size[]={"10K","100K","1M","10M","100M","1G",NULL};
7 static gchar *ls_format[] = {"long","across","commas","horizontal","single-column","verbose","vertical",NULL};
8 static gchar *ls_istyle[] = {"none","slash","file-type","classify",NULL};
9 static gchar *ls_qstyle[] = {"literal","locale","shell","shell-always","c","escape",NULL};
10 static gchar *ls_sort[] = {"none","extension","size","time","version",NULL};
11 static gchar *ls_time[] = {"status","access",NULL};
12 static gchar *ls_tstyle[] = {"locale","full-iso","long-iso","iso",NULL};
13 static gchar *cp_v_control[] = {"existing","none","numbered","simple",NULL};
14 static gchar *cp_attributes[] = {"all","mode","ownership","timestamps","context","links","xattr",NULL};
15 static gchar *cp_when[] = {"always","auto","never",NULL};
16 static gchar *cp_suffix[] = {"~",".bak",NULL};
17 static gchar *rm_interactive[]={"always","never","once",NULL};
18 
19 #if 0
20 gchar **get_shred_iterations(){return shred_iterations;}
21 gchar **get_shred_size(){return shred_size;}
22 gchar **get_ls_format(){return ls_format;}
23 gchar **get_ls_istyle(){return ls_istyle;}
24 gchar **get_ls_qstyle(){return ls_qstyle;}
25 gchar **get_ls_sort(){return ls_sort;}
26 gchar **get_ls_time(){return ls_time;}
27 gchar **get_ls_tstyle(){return ls_tstyle;}
28 gchar **get_cp_v_control(){return cp_v_control;}
29 gchar **get_cp_attributes(){return cp_attributes;}
30 gchar **get_cp_when(){return cp_when;}
31 gchar **get_cp_suffix(){return cp_suffix;}
32 gchar **get_rm_interactive(){return rm_interactive;}
33 #endif
34 
35 static RfmProgramOptions ls_options[]={
36     // 0x01
37     {"",N_("Ask the user to get additional parameters"),TRUE,NULL},
38     // 0x02
39     {"-A",N_("-A, --almost-all           do not list implied . and .."),TRUE,NULL},
40 #ifdef GNU_LS
41     // 0x04
42     {"-C",N_("-C                         list entries by columns"),TRUE,NULL},
43     // 0x08
44     {"-D",N_("-D, --dired                generate output designed for Emacs' dired mode"),TRUE,NULL},
45     // 0x010
46     {"-F",N_("-F, --classify             append indicator (one of */=>@|) to entries"),TRUE,NULL},
47     // 0x020
48     {"-G",N_("-G, --no-group             in a long listing, don't print group names"),TRUE,NULL},
49     // 0x040
50     {"-H",N_("-H, --dereference-command-line\nfollow symbolic links listed on the command line"),TRUE,NULL},
51     // 0x080
52     {"-I",N_("-I, --ignore=PATTERN       do not list implied entries matching shell PATTERN"),TRUE,GINT_TO_POINTER(-1),RFM_LS_ignore},
53     // 0x0100
54     {"-L",N_("-L, --dereference          when showing file information for a symbolic\nlink, show information for the file the link\nreferences rather than for the link itself"),TRUE,NULL},
55     // 0x0200
56     {"-N",N_("-N, --literal              print raw entry names (don't treat e.g. control\ncharacters specially)"),TRUE,NULL},
57     // 0x0400
58     {"-Q",N_("-Q, --quote-name           enclose entry names in double quotes"),TRUE,NULL},
59     // 0x0800
60     {"-R",N_("-R, --recursive            list subdirectories recursively"),TRUE,NULL},
61     // 0x01000
62     {"-S",N_("-S                         sort by file size"),TRUE,NULL},
63     // 0x02000
64     {"-T",N_("-T, --tabsize=COLS         assume tab stops at each COLS instead of 8"),TRUE,GINT_TO_POINTER(-1),RFM_LS_tabsize},
65     // 0x04000
66     {"-U",N_("-U                         do not sort; list entries in directory order"),TRUE,NULL},
67     // 0x08000
68     {"-X",N_("-X                         sort alphabetically by entry extension"),TRUE,NULL},
69     // 0x010000
70     {"-Z",N_("-Z, --context              print any SELinux security context of each file"),TRUE,NULL},
71     // 0x020000
72     {"-a",N_("-a, --all                  do not ignore entries starting with ."),TRUE,NULL},
73     // 0x040000
74     {"--author",N_("--author               with -l, print the author of each file"),TRUE,NULL},
75     // 0x080000
76     {"-b",N_("-b, --escape               print C-style escapes for nongraphic characters"),TRUE,NULL},
77     // 0x0
78     {"--block-size","--block-size=SIZE      scale sizes by SIZE before printing them.  E.g.,\n'--block-size=M' prints sizes in units of\n1,048,576 bytes.  See SIZE format below.",TRUE,GINT_TO_POINTER(-1),RFM_LS_blocksize},
79     // 0x0100000
80     {"-c",N_("-c                         with -lt: sort by, and show, ctime (time of last\nmodification of file status information)\nwith -l: show ctime and sort by name\notherwise: sort by ctime, newest first"),TRUE,NULL},
81     // 0x0200000
82     {"--color",N_("--color[=WHEN]         colorize the output.  WHEN defaults to 'always'\nor can be 'never' or 'auto'.  More info below"),TRUE,NULL},
83     // 0x0400000
84     {"-d",N_("-d, --directory            list directory entries instead of contents,\nand do not dereference symbolic links"),TRUE,NULL},
85     // 0x0800000
86     {"-f",N_("-f                         do not sort, enable -aU, disable -ls --color"),TRUE,NULL},
87     // 0x01000000
88     {"--file-type",N_("--file-type            likewise, except do not append '*'"),TRUE,NULL},
89     // 0x02000000
90     {"--format",N_("--format=WORD          across -x, commas -m, horizontal -x, long -l,\nsingle-column -1, verbose -l, vertical -C"),TRUE,ls_format,RFM_LS_format},
91     // 0x04000000
92     {"--full-time",N_("--full-time            like -l --time-style=full-iso"),TRUE,NULL},
93     // 0x08000000
94     {"-g",N_("-g     like -l, but do not list owner"),TRUE,NULL},
95     // 0x010000000
96     {"--group-directories-first",N_("group directories before files."),TRUE,NULL},
97     // 0x020000000
98     {"-h",N_("-h, --human-readable       with -l, print sizes in human readable format\n(e.g., 1K 234M 2G)"),TRUE,NULL},
99     // 0x040000000
100     {"--si",N_("--si                   likewise, but use powers of 1000 not 1024"),TRUE,NULL},
101     // 0x080000000
102     {"--dereference-command-line-symlink-to-dir",N_("--dereference-command-line-symlink-to-dir\nfollow each command line symbolic link\nthat points to a directory"),TRUE,NULL},
103     // 0x0100000000
104     {"--hide",N_("--hide=PATTERN         do not list implied entries matching shell PATTERN\n(overridden by -a or -A)"),TRUE, GINT_TO_POINTER(-1),RFM_LS_hide},
105     // 0x0200000000
106     {"--indicator-style",N_("--indicator-style=WORD  append indicator with style WORD to entry names:\nnone (default), slash (-p),\nfile-type (--file-type), classify (-F)"),TRUE,ls_istyle,RFM_LS_istyle},
107     // 0x0400000000
108     {"-i",N_("-i, --inode                print the index number of each file"),TRUE,NULL},
109     // 0x0800000000
110     {"-k",N_("-k, --kibibytes            use 1024-byte blocks"),TRUE,NULL},
111     // 0x01000000000
112     {"-l",N_("-l                         use a long listing format"),TRUE,NULL},
113     // 0x02000000000
114     {"-m",N_("-m                         fill width with a comma separated list of entries"),TRUE,NULL},
115     // 0x04000000000
116     {"-n",N_("-n, --numeric-uid-gid      like -l, but list numeric user and group IDs"),TRUE,NULL},
117     // 0x08000000000
118     {"-o",N_("-o                         like -l, but do not list group information"),TRUE,NULL},
119     // 0x010000000000
120     {"-p",N_("-p, --indicator-style=slash\nappend / indicator to directories"),TRUE,NULL},
121     // 0x020000000000
122     {"-q",N_("-q, --hide-control-chars   print ? instead of non graphic characters"),TRUE,NULL},
123     // 0x040000000000
124     {"--show-control-chars",N_("--show-control-chars   show non graphic characters as-is (default\nunless program is 'ls' and output is a terminal)"),TRUE,NULL},
125     // 0x080000000000
126     {"--quoting-style",N_("--quoting-style=WORD   use quoting style WORD for entry names:\nliteral, locale, shell, shell-always, c, escape"),TRUE,ls_qstyle,RFM_LS_qstyle},
127     // 0x0100000000000
128     {"-r",N_("-r, --reverse              reverse order while sorting"),TRUE,NULL},
129     // 0x0200000000000
130     {"-s",N_("-s, --size                 print the allocated size of each file, in blocks"),TRUE,NULL},
131     // 0x0400000000000
132     {"--sort",N_("--sort=WORD            sort by WORD instead of name: none -U,\nextension -X, size -S, time -t, version -v"),TRUE,ls_sort,RFM_LS_sort},
133     // 0x0800000000000
134     {"--time",N_("--time=WORD            with -l, show time as WORD instead of modification\ntime: atime -u, access -u, use -u, ctime -c,\nor status -c; use specified time as sort key\nif --sort=time--time=WORD            with -l, show time as WORD instead of modification\ntime: atime -u, access -u, use -u, ctime -c,\nor status -c; use specified time as sort key\nif --sort=time--time=WORD            with -l, show time as WORD instead of modification\ntime: atime -u, access -u, use -u, ctime -c,\nor status -c; use specified time as sort key\nif --sort=time"),TRUE,ls_time,RFM_LS_time},
135     // 0x01000000000000
136     {"--time-style",N_("--time-style=STYLE  show times using style STYLE:\nfull-iso, long-iso, iso, +FORMAT\nFORMAT is interpreted like 'date'"),TRUE,ls_tstyle,RFM_LS_tstyle},
137     // 0x02000000000000
138     {"-t",N_("-t                         sort by modification time, newest first"),TRUE,NULL},
139     // 0x04000000000000
140     {"-u",N_("-u                         with -lt: sort by, and show, access time\nwith -l: show access time and sort by name\notherwise: sort by access time"),TRUE,NULL},
141     // 0x08000000000000
142     {"-v",N_("-v                         natural sort of (version) numbers within text"),TRUE,NULL},
143     // 0x010000000000000
144     {"-w",N_("-w, --width=COLS           assume screen width instead of current value"),TRUE,GINT_TO_POINTER(-1),RFM_LS_width},
145     // 0x020000000000000
146     {"-x",N_("-x                         list entries by lines instead of by columns"),TRUE,NULL},
147     // 0x040000000000000
148     {"-1",N_("-1                         list one file per line"),TRUE,NULL},
149     // 0x080000000000000
150     {"--help",NULL,FALSE,NULL},
151     // 0x0100000000000000
152     {"--version",NULL,FALSE,NULL},
153 #else
154     // 0x02
155     {"-B",N_("Force printing of non-printable characters"),TRUE,NULL},
156     // 0x04
157     {"-C",N_("Columns"),TRUE,NULL},
158     // 0x08
159     {"-D","-D format",FALSE,NULL},
160     // 0x010
161     {"-F",N_("append one of */=>@|"),TRUE,NULL},
162     // 0x020
163     {"-G",N_("Colorize"),TRUE,NULL},
164     // 0x040
165     {"-H",N_("Follow links"),TRUE,NULL},
166     // 0x080
167     {"-I",N_("prevent -A"),TRUE,NULL},
168     // 0x0100
169     {"-L",N_("Always follow links"),TRUE,NULL},
170     // 0x0200
171     {"-P",N_("Don't follow symbolic links"),TRUE,NULL},
172     // 0x0400
173     {"-R",N_("recursive"),TRUE,NULL},
174     // 0x0800
175     {"-S",N_("Sort by Size"),TRUE,NULL},
176     // 0x01000
177     {"-T",N_("With -l, display complete time"),TRUE,NULL},
178     // 0x02000
179     {"-U",N_("Sort by Date"),TRUE,NULL},
180     // 0x04000
181     {"-W",N_("Display whiteouts"),TRUE,NULL},
182     // 0x08000
183     {"-Z",N_("Display maclabel"),TRUE,NULL},
184     // 0x010000
185     {"-a","-a, --all",FALSE,NULL},
186     // 0x020000
187     {"-b","-b, --escape",TRUE,NULL},
188     // 0x040000
189     {"-c",N_("Sort by ctime"),TRUE,NULL},
190     // 0x080000
191     {"-d",N_("list directory entries"),TRUE,NULL},
192     // 0x0100000
193     {"-f",N_("Do Not Sort"),TRUE,NULL},
194     // 0x0200000
195     {"-g",N_("like -l, but do not list owner"),TRUE,NULL},
196     // 0x0400000
197     {"-h",N_("human-readable"),TRUE,NULL},
198     // 0x0800000
199     {"-i",N_("Inode"),TRUE,NULL},
200     // 0x01000000
201     {"-k",N_("block-size=1K"),TRUE,NULL},
202     // 0x02000000
203     {"-l",N_("Details"),TRUE,NULL},
204     // 0x04000000
205     {"-m",N_("Comma separated values (CSV)"),TRUE,NULL},
206     // 0x08000000
207     {"-n",N_("numeric-uid-gid"),TRUE,NULL},
208     // 0x010000000
209     {"-o",N_("include file flags"),TRUE,NULL},
210     // 0x020000000
211     {"-p",N_("indicator-style=slash"),TRUE,NULL},
212     // 0x040000000
213     {"-q",N_("hide control characters"),TRUE,NULL},
214     // 0x080000000
215     {"-r",N_("reverse"),TRUE,NULL},
216     // 0x0100000000
217     {"-s",N_("show size"),TRUE,NULL},
218     // 0x0200000000
219     {"-t",N_("Sort by Date"),TRUE,NULL},
220     // 0x0400000000
221     {"-u",N_("Sort by atime"),TRUE,NULL},
222     // 0x0800000000
223     {"-w",N_("Force raw printing"),TRUE,NULL},
224     // 0x01000000000
225     {"-x",N_("Sort across"),TRUE,NULL},
226     // 0x02000000000
227     {"-1",N_("1 file per line"),TRUE,NULL},
228 #endif
229     {NULL,NULL,FALSE,NULL}
230  };
231 
232 static RfmProgramOptions cp_options[]={
233     // 0x01
234     {"",N_("Ask the user to get additional parameters"),TRUE,NULL},
235 #ifdef GNU_CP
236     // 0x02
237     {"-H",N_("-H, --dereference-command-line\nfollow symbolic links listed on the command line"),TRUE,NULL},
238     // 0x04
239     {"-L",N_("-L, --dereference            always follow symbolic links in SOURCE"),TRUE,NULL},
240     // 0x08
241     {"-P",N_("-P, --no-dereference         never follow symbolic links in SOURCE"),TRUE,NULL},
242     // 0x010
243     {"-R",N_("-R, -r, --recursive          copy directories recursively"),TRUE,NULL},
244     // 0x020
245     {"-a",N_("-a, --archive                same as -dR --preserve=all"),TRUE,NULL},
246     // 0x040
247     {"--attributes-only",N_("--attributes-only        don't copy the file data, just the attributes"),TRUE,NULL},
248     // 0x080
249     {"-b",N_("-b                  like --backup but does not accept an argument"),TRUE,NULL},
250     // 0x0100
251     {"--backup=",N_("--backup[=CONTROL]  make a backup of each existing destination file"),TRUE,cp_v_control,RFM_CP_backup},
252     // 0x0200
253     {"--copy-contents",N_("--copy-contents          copy contents of special files when recursive"),TRUE,NULL},
254     // 0x0400
255     {"-d",N_("-d                           same as --no-dereference --preserve=links"),TRUE,NULL},
256     // 0x0800
257     {"-f",N_("-f, --force                 remove existing destination files"),TRUE,NULL},
258     // 0x01000
259     {"-i",N_("Interactive"),TRUE,NULL},
260     // 0x02000
261     {"-l",N_("-l, --link                   hard link files instead of copying"),TRUE,NULL},
262     // 0x04000
263     {"-n",N_("n, --no-clobber             do not overwrite an existing file (overrides\n"
264 "a previous -i option)"),TRUE,NULL},
265     // 0x08000
266     {"-p",N_("-p                           same as --preserve=mode,ownership,timestamps"),TRUE,NULL},
267     // 0x010000
268     {"--preserve=",N_("--preserve[=ATTR_LIST]   preserve the specified attributes (default:\nmode,ownership,timestamps), if possible\nadditional attributes: context, links, xattr,\nall"),TRUE,cp_attributes,RFM_CP_preserve},
269     // 0x020000
270     {"--no-preserve=",N_("--no-preserve=ATTR_LIST  don't preserve the specified attributes"),TRUE,cp_attributes,RFM_CP_no_preserve},
271     // 0x040000
272     {"--parents",N_("--parents                use full source file name under DIRECTORY"),TRUE,NULL},
273     // 0x080000
274     {"--reflink=",N_("--reflink[=WHEN]         control clone/CoW copies. See below"),TRUE,cp_when,RFM_CP_reflink},
275     // 0x0100000
276     {"--remove-destination",N_("--remove-destination     remove each existing destination file before\nattempting to open it (contrast with --force)"),TRUE,NULL},
277     // 0x0200000
278     {"--sparse=",N_("--sparse=WHEN            control creation of sparse files. See below"),TRUE,cp_when,RFM_CP_sparse},
279     // 0x0400000
280     {"--strip-trailing-slashes",N_("--strip-trailing-slashes  remove any trailing slashes from each SOURCE\nargument"),TRUE,NULL},
281     // 0x0800000
282     {"-s",N_("-s, --symbolic-link          make symbolic links instead of copying"),TRUE,NULL},
283     // 0x01000000
284     {"--suffix=",N_("-S, --suffix=SUFFIX          override the usual backup suffix"),TRUE,cp_suffix, RFM_CP_suffix},
285     // 0x02000000
286     {"-T",N_("-t, --target-directory=DIRECTORY  copy all SOURCE arguments into DIRECTORY"),FALSE,NULL},
287     // 0x04000000
288     {"-u",N_("-u, --update                 copy only when the SOURCE file is newer\nthan the destination file or when the\ndestination file is missing"),TRUE,NULL},
289     // 0x08000000
290     {"-v",N_("-v, --verbose                explain what is being done"),TRUE,NULL},
291     // 0x010000000
292     {"-x",N_("-x, --one-file-system        stay on this file system"),TRUE,NULL},
293     // 0x020000000
294     {"--help",N_("Help"),FALSE,NULL},
295     // 0x040000000
296     {"--version",N_("Version"),FALSE,NULL},
297 #else
298     // 0x02
299     {"-H",N_("Follow links"),TRUE,NULL},
300     // 0x04
301     {"-L",N_("Always follow links"),TRUE,NULL},
302     // 0x08
303     {"-P",N_("Don't follow symbolic links"),TRUE,NULL},
304     // 0x010
305     {"-R",N_("recursive"),TRUE,NULL},
306     // 0x020
307     {"-a",N_("archive"),TRUE,NULL},
308     // 0x040
309     {"-f",N_("force"),TRUE,NULL},
310     // 0x080
311     {"-i",N_("-i                    prompt before every removal"),TRUE,NULL},
312     // 0x0100
313     {"-l",N_("hard link files instead of copying"),TRUE,NULL},
314     // 0x0200
315     {"-n",N_("Do not overwrite any file"),TRUE,NULL},
316     // 0x0400
317     {"-p",N_("Preserve all attributes"),TRUE,NULL},
318     // 0x0800
319     {"-v",N_("Verbose"),TRUE,NULL},
320     // 0x01000
321     {"-x",N_("Stay on single filesystem"),TRUE,NULL},
322 #endif
323 
324     {NULL,NULL,FALSE,NULL}
325 };
326 
327 static RfmProgramOptions mv_options[]={
328     // 0x01
329     {"",N_("Ask the user to get additional parameters"),TRUE,NULL},
330 #ifdef GNU_MV
331     // 0x02
332     {"-b",N_("-b                  like --backup but does not accept an argument"),TRUE,NULL},
333     // 0x04
334     {"--backup=",N_("--backup[=CONTROL]  make a backup of each existing destination file"),TRUE,cp_v_control,RFM_MV_backup},
335     // 0x08
336     {"-f",N_("-f, --force                 remove existing destination files"),TRUE,NULL},
337     // 0x010
338     {"-i",N_("-i                    prompt before every removal"),TRUE,NULL},
339     // 0x020
340     {"--strip-trailing-slashes",N_("--strip-trailing-slashes  remove any trailing slashes from each SOURCE\nargument"),TRUE,NULL},
341     // 0x040
342     {"--suffix=",N_("-S, --suffix=SUFFIX          override the usual backup suffix"),TRUE,cp_suffix,RFM_MV_suffix},
343     // 0x080
344     {"-t",N_("-t, --target-directory=DIRECTORY  move all SOURCE arguments into DIRECTORY"),FALSE,NULL},
345     // 0x0100
346     {"-T",N_("-T, --no-target-directory    treat DEST as a normal file"),FALSE,NULL},
347     // 0x0200
348     {"-u",N_("-u, --update                 move only when the SOURCE file is newer\nthan the destination file or when the\ndestination file is missing"),TRUE,NULL},
349     // 0x0400
350     {"-v",N_("-v, --verbose                explain what is being done"),TRUE,NULL},
351     // 0x0800
352     {"--help",N_("Help"),FALSE,NULL},
353     // 0x01000
354     {"--version",N_("Version"),TRUE,NULL},
355 #else
356     // 0x02
357     {"-f",N_("force"),TRUE,NULL},
358     // 0x04
359     {"-i",N_("Interactive"),TRUE,NULL},
360     // 0x08
361     {"-n",N_("Do not overwrite any file"),TRUE,NULL},
362     // 0x010
363     {"-v",N_("Verbose"),TRUE,NULL},
364 
365 #endif
366     {NULL,NULL,FALSE,NULL}
367 };
368 
369 static RfmProgramOptions ln_options[]={
370     // 0x01
371     {"",N_("Ask the user to get additional parameters"),TRUE,NULL},
372 #ifdef GNU_LN
373     // 0x02
374     {"-b",N_("-b                  like --backup but does not accept an argument"),TRUE,NULL},
375     // 0x04
376     {"--backup=",N_("--backup[=CONTROL]  make a backup of each existing destination file"),TRUE,cp_v_control,RFM_LN_backup},
377     // 0x08
378     {"-d","-d, -F, --directory",FALSE,NULL},
379     // 0x010
380     {"-f",N_("-f, --force                 remove existing destination files"),TRUE,NULL},
381     // 0x020
382     {"-L",N_("-L, --logical               dereference TARGETs that are symbolic links"),TRUE,NULL},
383     // 0x040
384     {"-n",N_("-n, --no-dereference        treat LINK_NAME as a normal file if\nit is a symbolic link to a directory"),TRUE,NULL},
385     // 0x080
386     {"-P",N_("-P, --physical              make hard links directly to symbolic links"),TRUE,NULL},
387     // 0x0100
388     {"-s",N_("-s, --symbolic              make symbolic links instead of hard links"),TRUE,NULL},
389     // 0x0200
390     {"--suffix=",N_("-S, --suffix=SUFFIX         override the usual backup suffix"),TRUE,cp_suffix,RFM_LN_suffix},
391     // 0x0400
392     {"-t",N_("-t, --target-directory=DIRECTORY  specify the DIRECTORY in which to create\nthe links"),FALSE,NULL},
393     // 0x0800
394     {"-T",N_("-T, --no-target-directory   treat LINK_NAME as a normal file always"),FALSE,NULL},
395     // 0x01000
396     {"-v",N_("-v, --verbose                explain what is being done"),TRUE,NULL},
397     // 0x02000
398     {"--help",N_("Help"),FALSE,NULL},
399     // 0x04000
400     {"--version",N_("Version"),FALSE,NULL},
401 #else
402     // 0x02
403     {"-F",N_("force"),TRUE,NULL},
404     // 0x04
405     {"-L",N_("make hard links to symbolic link references"),TRUE,NULL},
406     // 0x08
407     {"-P",N_("make hard links directly to symbolic links"),TRUE,NULL},
408     // 0x010
409     {"-f",N_("force"),TRUE,NULL},
410     // 0x020
411     {"-h",N_("Don't follow symbolic links"),TRUE,NULL},
412     // 0x040
413     {"-i",N_("Interactive"),TRUE,NULL},
414     // 0x080
415     {"-n",N_("Don't follow symbolic links"),TRUE,NULL},
416     // 0x0100
417     {"-s",N_("Create Symbolic Link"),TRUE,NULL},
418     // 0x0200
419     {"-v",N_("Verbose"),TRUE,NULL},
420     // 0x0400
421     {"-w",N_("Warn if error in documents"),TRUE,NULL},
422 #endif
423     {NULL,NULL,FALSE,NULL}
424 };
425 
426 static RfmProgramOptions rm_options[]={
427     // 0x01
428     {"",N_("Ask the user to get additional parameters"),TRUE,NULL},
429 #ifdef GNU_RM
430     // 0x02
431     {"-f",N_("-f, --force           ignore nonexistent files and arguments, never prompt"),TRUE,NULL},
432     // 0x04
433     {"-i",N_("-i                    prompt before every removal"),TRUE,NULL},
434     // 0x08
435     {"-I",N_("-I                    prompt once before removing more than three files, or\nwhen removing recursively.  Less intrusive than -i,\nwhile still giving protection against most mistakes"),TRUE,NULL},
436     // 0x010
437     {"--interactive=",N_("--interactive[=WHEN]  prompt according to WHEN: never, once (-I), or\nalways (-i).  Without WHEN, prompt always"),TRUE,rm_interactive,RFM_RM_interactive},
438     // 0x020
439     {"--one-file-system",N_("Stay on single filesystem"),TRUE,NULL},
440     // 0x040
441     {"--no-preserve-root",N_("--no-preserve-root  do not treat '/' specially"),TRUE,NULL},
442     // 0x080
443     {"--preserve-root",N_("--preserve-root   do not remove '/' (default)"),TRUE,NULL},
444     // 0x0100
445     {"-R",N_("-r, -R, --recursive   remove directories and their contents recursively"),TRUE,NULL},
446     // 0x0200
447     {"-v",N_("-v, --verbose         explain what is being done"),TRUE,NULL},
448     // 0x0400
449     {"--help",N_("Help"),FALSE,NULL},
450     // 0x0800
451     {"--version",N_("Version"),FALSE,NULL},
452 #else
453     // 0x02
454     {"-d",N_("Remove directory"),TRUE,NULL},
455     // 0x04
456     {"-f",N_("force"),TRUE,NULL},
457     // 0x08
458     {"-i",N_("Interactive"),TRUE,NULL},
459     // 0x010
460     {"-I",N_("Interactive"),TRUE,NULL},
461     // 0x020
462     {"-P",N_("Overwrite all files"),TRUE,NULL},
463     // 0x040
464     {"-R",N_("recursive"),TRUE,NULL},
465     // 0x080
466     {"-r",N_("recursive"),FALSE,NULL},
467     // 0x0100
468     {"-v",N_("Verbose"),TRUE,NULL},
469     // 0x0200
470     {"-W",N_("Undelete"),FALSE,NULL},
471 #endif
472     {NULL,NULL,FALSE,NULL}
473 };
474 
475 static RfmProgramOptions shred_options[]={
476     // 0x01
477     {"",N_("Ask the user to get additional parameters"),TRUE,NULL},
478     // 0x02
479     {"-f",N_("force"),TRUE,NULL},
480     // this could use a spin button
481     // 0x04
482     {"--iterations=",N_("-n, --iterations=N  overwrite N times instead of the default (%d)"), TRUE,shred_iterations,RFM_SHRED_iterations},
483     // 0x08
484     {"--random-source=",N_("--random-source=FILE  get random bytes from FILE"),FALSE,NULL},// this needs a fileselector button.
485     // 0x010
486     {"--size=",N_("-s, --size=N   shred this many bytes (suffixes like K, M, G accepted)"),TRUE,shred_size,RFM_SHRED_size},// this could use a spinbutton
487 
488     // 0x020
489     {"-u",N_("-u, --remove   truncate and remove file after overwriting"),TRUE,NULL},
490     // 0x040
491     {"-v",N_("-v, --verbose  show progress"),TRUE,NULL},
492     // 0x080
493     {"-x",N_("-x, --exact    do not round file sizes up to the next full block;\nthis is the default for non-regular files"),TRUE,NULL},
494     // 0x0100
495     {"-z",N_("-z, --zero     add a final overwrite with zeros to hide shredding"),TRUE,NULL},
496     // 0x0200
497     {"--help",N_("Help"),FALSE,NULL},
498     // 0x0400
499     {"--version",N_("Version"),FALSE,NULL},
500     {NULL,NULL,FALSE,NULL}
501 };
502 
get_ls_options(void)503 void *get_ls_options(void){return (void *)ls_options;}
get_cp_options(void)504 void *get_cp_options(void){return (void *)cp_options;}
get_mv_options(void)505 void *get_mv_options(void){return (void *)mv_options;}
get_ln_options(void)506 void *get_ln_options(void){return (void *)ln_options;}
get_rm_options(void)507 void *get_rm_options(void){return (void *)rm_options;}
get_shred_options(void)508 void *get_shred_options(void){return (void *)shred_options;}
509 
510 
511