1/*   -*- buffer-read-only: t -*- vi: set ro:
2 *
3 *  DO NOT EDIT THIS FILE   (shar-opts.c)
4 *
5 *  It has been AutoGen-ed
6 *  From the definitions    shar-opts.def
7 *  and the template file   options
8 *
9 * Generated from AutoOpts 41:1:16 templates.
10 *
11 *  AutoOpts is a copyrighted work.  This source file is not encumbered
12 *  by AutoOpts licensing, but is provided under the licensing terms chosen
13 *  by the shar author or copyright holder.  AutoOpts is
14 *  licensed under the terms of the LGPL.  The redistributable library
15 *  (``libopts'') is licensed under the terms of either the LGPL or, at the
16 *  users discretion, the BSD license.  See the AutoOpts and/or libopts sources
17 *  for details.
18 *
19 * The shar program is copyrighted and licensed
20 * under the following terms:
21 *
22 *  Copyright (C) 1994-2015 Free Software Foundation, Inc., all rights reserved.
23 *  This is free software. It is licensed for use, modification and
24 *  redistribution under the terms of the GNU General Public License,
25 *  version 3 or later <http://gnu.org/licenses/gpl.html>
26 *
27 *  shar is free software: you can redistribute it and/or modify it
28 *  under the terms of the GNU General Public License as published by the
29 *  Free Software Foundation, either version 3 of the License, or
30 *  (at your option) any later version.
31 *
32 *  shar is distributed in the hope that it will be useful, but
33 *  WITHOUT ANY WARRANTY; without even the implied warranty of
34 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
35 *  See the GNU General Public License for more details.
36 *
37 *  You should have received a copy of the GNU General Public License along
38 *  with this program.  If not, see <http://www.gnu.org/licenses/>.
39 */
40
41#ifndef __doxygen__
42#define OPTION_CODE_COMPILE 1
43#include "shar-opts.h"
44#include <sys/types.h>
45
46#include <limits.h>
47#include <stdio.h>
48#include <stdlib.h>
49#include <errno.h>
50
51#ifdef  __cplusplus
52extern "C" {
53#endif
54extern FILE * option_usage_fp;
55#define zCopyright      (shar_opt_strs+0)
56#define zLicenseDescrip (shar_opt_strs+290)
57
58/*
59 *  global included definitions
60 */
61char const * const program_name = "shar";
62
63bool initialization_done = false;
64int optidx = 0;
65
66#ifndef NULL
67#  define NULL 0
68#endif
69
70/**
71 *  static const strings for shar options
72 */
73static char const shar_opt_strs[10327] =
74/*     0 */ "shar (GNU sharutils) 4.15.2\n"
75            "Copyright (C) 1994-2015 Free Software Foundation, Inc., all rights reserved.\n"
76            "This is free software. It is licensed for use, modification and\n"
77            "redistribution under the terms of the GNU General Public License,\n"
78            "version 3 or later <http://gnu.org/licenses/gpl.html>\n\0"
79/*   290 */ "shar is free software: you can redistribute it and/or modify it under the\n"
80            "terms of the GNU General Public License as published by the Free Software\n"
81            "Foundation, either version 3 of the License, or (at your option) any later\n"
82            "version.\n\n"
83            "shar is distributed in the hope that it will be useful, but WITHOUT ANY\n"
84            "WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n"
85            "FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n"
86            "details.\n\n"
87            "You should have received a copy of the GNU General Public License along\n"
88            "with this program.  If not, see <http://www.gnu.org/licenses/>.\n\0"
89/*   887 */ "Specifying compression:\0"
90/*   911 */ "specify compression for input files\0"
91/*   947 */ "INTERMIX_TYPE\0"
92/*   961 */ "intermix-type\0"
93/*   975 */ "specify compaction (compression) program\0"
94/*  1016 */ "COMPACTOR\0"
95/*  1026 */ "compactor\0"
96/*  1036 */ "pass LEVEL for compression\0"
97/*  1063 */ "LEVEL_OF_COMPRESSION\0"
98/*  1084 */ "level-of-compression\0"
99/*  1105 */ "bzip2 and uuencode files (deprecated)\0"
100/*  1143 */ "BZIP2\0"
101/*  1149 */ "bzip2\0"
102/*  1155 */ "gzip and uuencode files (deprecated)\0"
103/*  1192 */ "GZIP\0"
104/*  1197 */ "gzip\0"
105/*  1202 */ "compress and uuencode files (deprecated)\0"
106/*  1243 */ "COMPRESS\0"
107/*  1252 */ "compress\0"
108/*  1261 */ "an alias for the 'level-of-compression' option (deprecated)\0"
109/*  1321 */ "level-for-gzip\0"
110/*  1336 */ "pass bits (default 12) to compress (deprecated)\0"
111/*  1384 */ "BITS_PER_CODE\0"
112/*  1398 */ "bits-per-code\0"
113/*  1412 */ "12\0"
114/*  1415 */ "Specifying file encoding methodology:\0"
115/*  1453 */ "decide uuencoding for each file\0"
116/*  1485 */ "MIXED_UUENCODE\0"
117/*  1500 */ "mixed-uuencode\0"
118/*  1515 */ "treat all files as binary\0"
119/*  1541 */ "UUENCODE\0"
120/*  1550 */ "uuencode\0"
121/*  1559 */ "treat all files as text\0"
122/*  1583 */ "TEXT_FILES\0"
123/*  1594 */ "text-files\0"
124/*  1605 */ "Specifying file selection and output modes:\0"
125/*  1649 */ "print output to file PREFIX.nn\0"
126/*  1680 */ "OUTPUT_PREFIX\0"
127/*  1694 */ "output-prefix\0"
128/*  1708 */ "split archive, not files, to size\0"
129/*  1742 */ "WHOLE_SIZE_LIMIT\0"
130/*  1759 */ "whole-size-limit\0"
131/*  1776 */ "split archive or files to size\0"
132/*  1807 */ "SPLIT_SIZE_LIMIT\0"
133/*  1824 */ "split-size-limit\0"
134/*  1841 */ "read file list from a file\0"
135/*  1868 */ "INPUT_FILE_LIST\0"
136/*  1884 */ "input-file-list\0"
137/*  1900 */ "read file list from standard input (deprecated)\0"
138/*  1948 */ "STDIN_FILE_LIST\0"
139/*  1964 */ "stdin-file-list\0"
140/*  1980 */ "Controlling the shar headers:\0"
141/*  2010 */ "use name to document the archive\0"
142/*  2043 */ "ARCHIVE_NAME\0"
143/*  2056 */ "archive-name\0"
144/*  2069 */ "override the submitter name\0"
145/*  2097 */ "SUBMITTER\0"
146/*  2107 */ "submitter\0"
147/*  2117 */ "output Submitted-by: & Archive-name: headers\0"
148/*  2162 */ "NET_HEADERS\0"
149/*  2174 */ "net-headers\0"
150/*  2186 */ "start the shar with a cut line\0"
151/*  2217 */ "CUT_MARK\0"
152/*  2226 */ "cut-mark\0"
153/*  2235 */ "translate messages in the script\0"
154/*  2268 */ "TRANSLATE\0"
155/*  2278 */ "translate\0"
156/*  2288 */ "Protecting against transmission issues:\0"
157/*  2328 */ "do not use `wc -c' to check size\0"
158/*  2361 */ "NO_CHARACTER_COUNT\0"
159/*  2380 */ "no-character-count\0"
160/*  2399 */ "do not use md5sum digest to verify\0"
161/*  2434 */ "NO_MD5_DIGEST\0"
162/*  2448 */ "no-md5-digest\0"
163/*  2462 */ "apply the prefix character on every line\0"
164/*  2503 */ "FORCE_PREFIX\0"
165/*  2516 */ "force-prefix\0"
166/*  2529 */ "use delim to delimit the files\0"
167/*  2560 */ "HERE_DELIMITER\0"
168/*  2575 */ "here-delimiter\0"
169/*  2590 */ "SHAR_EOF\0"
170/*  2599 */ "Producing different kinds of shars:\0"
171/*  2635 */ "produce very simple shars\0"
172/*  2661 */ "VANILLA_OPERATION\0"
173/*  2679 */ "vanilla-operation\0"
174/*  2697 */ "use temporary files between programs\0"
175/*  2734 */ "NO_PIPING\0"
176/*  2744 */ "no-piping\0"
177/*  2754 */ "blindly overwrite existing files\0"
178/*  2787 */ "NO_CHECK_EXISTING\0"
179/*  2805 */ "no-check-existing\0"
180/*  2823 */ "ask user before overwriting files\0"
181/*  2857 */ "QUERY_USER\0"
182/*  2868 */ "query-user\0"
183/*  2879 */ "do not restore modification times\0"
184/*  2913 */ "NO_TIMESTAMP\0"
185/*  2926 */ "no-timestamp\0"
186/*  2939 */ "avoid verbose messages at unshar time\0"
187/*  2977 */ "QUIET_UNSHAR\0"
188/*  2990 */ "quiet-unshar\0"
189/*  3003 */ "restore in one directory, despite hierarchy\0"
190/*  3047 */ "BASENAME\0"
191/*  3056 */ "basename\0"
192/*  3065 */ "Internationalization options:\0"
193/*  3095 */ "do not internationalize\0"
194/*  3119 */ "NO_I18N\0"
195/*  3127 */ "no-i18n\0"
196/*  3135 */ "print directory with shar messages\0"
197/*  3170 */ "PRINT_TEXT_DOMAIN_DIR\0"
198/*  3192 */ "print-text-domain-dir\0"
199/*  3214 */ "User feedback/entertainment:\0"
200/*  3243 */ "do not output verbose messages\0"
201/*  3274 */ "QUIET\0"
202/*  3280 */ "quiet\0"
203/*  3286 */ "an alias for the 'quiet' option\0"
204/*  3318 */ "silent\0"
205/*  3325 */ "display extended usage information and exit\0"
206/*  3369 */ "help\0"
207/*  3374 */ "extended usage information passed thru pager\0"
208/*  3419 */ "more-help\0"
209/*  3429 */ "output version information and exit\0"
210/*  3465 */ "version\0"
211/*  3473 */ "save the option state to a config file\0"
212/*  3512 */ "save-opts\0"
213/*  3522 */ "load options from a config file\0"
214/*  3554 */ "LOAD_OPTS\0"
215/*  3564 */ "no-load-opts\0"
216/*  3577 */ "no\0"
217/*  3580 */ "SHAR\0"
218/*  3585 */ "shar (GNU sharutils) - create a shell archive\n"
219            "Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [<file>...]\n\0"
220/*  3701 */ "$HOME\0"
221/*  3707 */ ".sharrc\0"
222/*  3715 */ "bug-gnu-utils@gnu.org\0"
223/*  3737 */ "If no 'file's are specified, the list of input files is read from standard\n"
224            "input.  Standard input must not be a terminal.\n\0"
225/*  3860 */ "'shar' creates \"shell archives\" (or shar files) which are in text format\n"
226            "and can be emailed.  These files may be unpacked later by executing them\n"
227            "with '/bin/sh'.  The resulting archive is sent to standard out unless the\n"
228            "'-o' option is given.  A wide range of features provide extensive\n"
229            "flexibility in manufacturing shars and in specifying 'shar' \"smartness\".\n"
230            "Archives may be fairly simple ('--vanilla-operation') or essentially a\n"
231            "mailable 'tar' archive.\n\n"
232            "Options may be specified in any order until a 'file' argument is\n"
233            "recognized.  If the '--intermix-type' option has been specified, more\n"
234            "compression and encoding options will be recognized between the 'file'\n"
235            "arguments.\n\n"
236            "Though this program supports 'uuencode'-d files, they are deprecated.  If\n"
237            "you are emailing files, please consider mime-encoded files.  If you do\n"
238            "'uuencode', base64 is the preferred encoding method.\n\0"
239/*  4732 */ "shar (GNU sharutils) 4.15.2\0"
240/*  4760 */ "shar (GNU sharutils) - create a shell archive\n"
241            "Usage:  shar [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [<file>...]\n\n"
242            "Specify compression:\n"
243            "   -p, --intermix-type        specify compression for input files\n"
244            "                                - prohibits the option 'vanilla-operation'\n"
245            "   -C, --compactor=PROG       specify compaction (compression) program PROG\n"
246            "                                - prohibits the option 'vanilla-operation'\n"
247            "                                - may appear multiple times\n"
248            "                                - it must be known to shar: xz gzip bzip2\n"
249            "   -g, --level-of-compression=LEVEL\n"
250            "                              pass LEVEL for compression\n"
251            "                                - it must be in the range: 1 to 9\n\n"
252            "Specify file encoding methodology:\n"
253            "   -M, --mixed-uuencode       decide uuencoding for each file\n"
254            "   -B, --uuencode             treat all files as binary\n"
255            "                                - an alternate for mixed-uuencode\n"
256            "   -T, --text-files           treat all files as text\n"
257            "                                - an alternate for mixed-uuencode\n\n"
258            "Specifying file selection and output modes:\n"
259            "   -o, --output-prefix=str    print output to file PREFIX.nn\n"
260            "   -l, --whole-size-limit=SIZE\n"
261            "                              split archive, not files, to SIZE\n"
262            "                                - requires the option 'output-prefix'\n"
263            "                                - is scalable with a suffix: k/K/m/M/g/G/t/T\n"
264            "                                - it must lie in one of the ranges:\n"
265            "                                  8 to 1023, or 8192 to 4194304\n"
266            "   -L, --split-size-limit=SIZE\n"
267            "                              split archive or files to SIZE\n"
268            "                                - requires the option 'output-prefix'\n"
269            "                                - is scalable with a suffix: k/K/m/M/g/G/t/T\n"
270            "                                - it must lie in one of the ranges:\n"
271            "                                  8 to 1023, or 8192 to 4194304\n"
272            "                                - an alternate for 'whole-size-limit'\n"
273            "   -I, --input-file-list=FILE read file list from FILE\n\n"
274            "Controlling the shar headers:\n"
275            "   -n, --archive-name=NAME    use NAME to document the archive\n"
276            "   -s, --submitter=NAME       override the submitter name with NAME\n"
277            "   -a, --net-headers          output Submitted-by: & Archive-name: headers\n"
278            "                                - requires the option 'archive-name'\n"
279            "   -c, --cut-mark             start the shar with a cut line\n"
280            "   -t, --translate            translate messages in the script\n\n"
281            "Protecting against transmission issues:\n"
282            "       --no-character-count   do not use `wc -c' to check size\n"
283            "   -D, --no-md5-digest        do not use md5sum digest to verify\n"
284            "   -F, --force-prefix         apply the prefix character on every line\n"
285            "   -d, --here-delimiter=DELIM use DELIM to delimit the files\n\n"
286            "Producing different kinds of shars:\n"
287            "   -V, --vanilla-operation    produce very simple shars\n"
288            "   -P, --no-piping            use temporary files between programs\n"
289            "   -x, --no-check-existing    blindly overwrite existing files\n"
290            "   -X, --query-user           ask user before overwriting files\n"
291            "                                - prohibits the option 'vanilla-operation'\n"
292            "   -m, --no-timestamp         do not restore modification times\n"
293            "   -Q, --quiet-unshar         avoid verbose messages at unshar time\n"
294            "   -f, --basename             restore in one directory, despite hierarchy\n\n"
295            "Internationalization options:\n"
296            "       --no-i18n              do not internationalize\n"
297            "       --print-text-domain-dir  print directory with shar messages\n\n"
298            "User feedback/entertainment:\n"
299            "   -q, --quiet                do not output verbose messages\n"
300            "       --silent               an alias for the 'quiet' option\n\n"
301            "Version, usage and configuration options:\n"
302            "   -v, --version[=MODE]       output version information and exit\n"
303            "   -h, --help                 display extended usage information and exit\n"
304            "   -!, --more-help            extended usage information passed thru pager\n"
305            "   -R, --save-opts[=FILE]     save the option state to a config file FILE\n"
306            "   -r, --load-opts=FILE       load options from the config file FILE\n"
307            "                                - disabled with '--no-load-opts'\n"
308            "                                - may appear multiple times\n\n"
309            "Options are specified by doubled hyphens and their name or by a single\n"
310            "hyphen and the flag character.\n"
311            "If no 'file's are specified, the list of input files is read from a\n"
312            "standard input.  Standard input must not be a terminal.\n\n"
313            "The following option preset mechanisms are supported:\n"
314            " - reading file $HOME/.sharrc\n\n"
315            "'shar' creates \"shell archives\" (or shar files) which are in text format\n"
316            "and can be emailed.  These files may be unpacked later by executing them\n"
317            "with '/bin/sh'.  The resulting archive is sent to standard out unless the\n"
318            "'-o' option is given.  A wide range of features provide extensive\n"
319            "flexibility in manufacturing shars and in specifying 'shar' \"smartness\".\n"
320            "Archives may be fairly simple ('--vanilla-operation') or essentially a\n"
321            "mailable 'tar' archive.\n\n"
322            "Options may be specified in any order until a 'file' argument is\n"
323            "recognized.  If the '--intermix-type' option has been specified, more\n"
324            "compression and encoding options will be recognized between the 'file'\n"
325            "arguments.\n\n"
326            "Though this program supports 'uuencode'-d files, they are deprecated.  If\n"
327            "you are emailing files, please consider mime-encoded files.  If you do\n"
328            "'uuencode', base64 is the preferred encoding method.\n\n"
329            "Please send bug reports to:  <bug-gnu-utils@gnu.org>\n\0"
330/* 10169 */ "shar (GNU sharutils) - create a shell archive\n"
331            "Usage:  shar [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [<file>...]\n"
332            "Try 'shar --help' for more information.\n";
333
334/**
335 *  compression option description:
336 */
337/** compression option separation text */
338#define COMPRESSION_DESC      (shar_opt_strs+887)
339#define COMPRESSION_FLAGS     (OPTST_DOCUMENT | OPTST_NO_INIT)
340
341/**
342 *  intermix-type option description with
343 *  "Must also have options" and "Incompatible options":
344 */
345/** Descriptive text for the intermix-type option */
346#define INTERMIX_TYPE_DESC      (shar_opt_strs+911)
347/** Upper-cased name for the intermix-type option */
348#define INTERMIX_TYPE_NAME      (shar_opt_strs+947)
349/** Name string for the intermix-type option */
350#define INTERMIX_TYPE_name      (shar_opt_strs+961)
351/** Other options that appear in conjunction with the intermix-type option */
352static int const aIntermix_TypeCantList[] = {
353    INDEX_OPT_VANILLA_OPERATION, NO_EQUIVALENT };
354/** Compiled in flag settings for the intermix-type option */
355#define INTERMIX_TYPE_FLAGS     (OPTST_DISABLED)
356
357/**
358 *  compactor option description with
359 *  "Must also have options" and "Incompatible options":
360 */
361/** Descriptive text for the compactor option */
362#define COMPACTOR_DESC      (shar_opt_strs+975)
363/** Upper-cased name for the compactor option */
364#define COMPACTOR_NAME      (shar_opt_strs+1016)
365/** Name string for the compactor option */
366#define COMPACTOR_name      (shar_opt_strs+1026)
367/** Other options that appear in conjunction with the compactor option */
368static int const aCompactorCantList[] = {
369    INDEX_OPT_VANILLA_OPERATION, NO_EQUIVALENT };
370/** Compiled in flag settings for the compactor option */
371#define COMPACTOR_FLAGS     (OPTST_DISABLED \
372        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
373
374/**
375 *  level-of-compression option description:
376 */
377/** Descriptive text for the level-of-compression option */
378#define LEVEL_OF_COMPRESSION_DESC      (shar_opt_strs+1036)
379/** Upper-cased name for the level-of-compression option */
380#define LEVEL_OF_COMPRESSION_NAME      (shar_opt_strs+1063)
381/** Name string for the level-of-compression option */
382#define LEVEL_OF_COMPRESSION_name      (shar_opt_strs+1084)
383/** The compiled in default value for the level-of-compression option argument */
384#define LEVEL_OF_COMPRESSION_DFT_ARG   ((char const*)9)
385/** Compiled in flag settings for the level-of-compression option */
386#define LEVEL_OF_COMPRESSION_FLAGS     (OPTST_DISABLED \
387        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
388
389/**
390 *  bzip2 option description:
391 */
392/** Descriptive text for the bzip2 option */
393#define BZIP2_DESC      (shar_opt_strs+1105)
394/** Upper-cased name for the bzip2 option */
395#define BZIP2_NAME      (shar_opt_strs+1143)
396/** Name string for the bzip2 option */
397#define BZIP2_name      (shar_opt_strs+1149)
398/** Compiled in flag settings for the bzip2 option */
399#define BZIP2_FLAGS     (OPTST_DISABLED | OPTST_DEPRECATED)
400
401/**
402 *  gzip option description:
403 */
404/** Descriptive text for the gzip option */
405#define GZIP_DESC      (shar_opt_strs+1155)
406/** Upper-cased name for the gzip option */
407#define GZIP_NAME      (shar_opt_strs+1192)
408/** Name string for the gzip option */
409#define GZIP_name      (shar_opt_strs+1197)
410/** Compiled in flag settings for the gzip option */
411#define GZIP_FLAGS     (OPTST_DISABLED | OPTST_DEPRECATED)
412
413/**
414 *  compress option description:
415 */
416#ifdef HAVE_COMPRESS
417/** Descriptive text for the compress option */
418#define COMPRESS_DESC      (shar_opt_strs+1202)
419/** Upper-cased name for the compress option */
420#define COMPRESS_NAME      (shar_opt_strs+1243)
421/** Name string for the compress option */
422#define COMPRESS_name      (shar_opt_strs+1252)
423/** Compiled in flag settings for the compress option */
424#define COMPRESS_FLAGS     (OPTST_DISABLED | OPTST_DEPRECATED)
425
426#else   /* disable compress */
427#define COMPRESS_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
428#define COMPRESS_NAME      NULL
429#define COMPRESS_DESC      NULL
430#define COMPRESS_name      NULL
431#endif  /* HAVE_COMPRESS */
432
433/**
434 *  level-for-gzip option description:
435 */
436/** Descriptive text for the level-for-gzip option */
437#define LEVEL_FOR_GZIP_DESC    (shar_opt_strs+1261)
438#define LEVEL_FOR_GZIP_NAME    NULL
439/** Unmodified name string for the level-for-gzip option */
440#define LEVEL_FOR_GZIP_name    (shar_opt_strs+1321)
441/** Compiled in flag settings for the level-for-gzip option */
442#define LEVEL_FOR_GZIP_FLAGS     (LEVEL_OF_COMPRESSION_FLAGS | OPTST_ALIAS | OPTST_DEPRECATED)
443
444/**
445 *  bits-per-code option description:
446 */
447#ifdef HAVE_COMPRESS
448/** Descriptive text for the bits-per-code option */
449#define BITS_PER_CODE_DESC      (shar_opt_strs+1336)
450/** Upper-cased name for the bits-per-code option */
451#define BITS_PER_CODE_NAME      (shar_opt_strs+1384)
452/** Name string for the bits-per-code option */
453#define BITS_PER_CODE_name      (shar_opt_strs+1398)
454/** The compiled in default value for the bits-per-code option argument */
455#define BITS_PER_CODE_DFT_ARG   (shar_opt_strs+1412)
456/** Compiled in flag settings for the bits-per-code option */
457#define BITS_PER_CODE_FLAGS     (OPTST_DISABLED | OPTST_DEPRECATED \
458        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
459
460#else   /* disable bits-per-code */
461#define BITS_PER_CODE_FLAGS     (OPTST_OMITTED | OPTST_NO_INIT)
462#define BITS_PER_CODE_DFT_ARG   NULL
463#define BITS_PER_CODE_NAME      NULL
464#define BITS_PER_CODE_DESC      NULL
465#define BITS_PER_CODE_name      NULL
466#endif  /* HAVE_COMPRESS */
467
468/**
469 *  encoding option description:
470 */
471/** encoding option separation text */
472#define ENCODING_DESC      (shar_opt_strs+1415)
473#define ENCODING_FLAGS     (OPTST_DOCUMENT | OPTST_NO_INIT)
474
475/**
476 *  mixed-uuencode option description:
477 */
478/** Descriptive text for the mixed-uuencode option */
479#define MIXED_UUENCODE_DESC      (shar_opt_strs+1453)
480/** Upper-cased name for the mixed-uuencode option */
481#define MIXED_UUENCODE_NAME      (shar_opt_strs+1485)
482/** Name string for the mixed-uuencode option */
483#define MIXED_UUENCODE_name      (shar_opt_strs+1500)
484/** Compiled in flag settings for the mixed-uuencode option */
485#define MIXED_UUENCODE_FLAGS     (OPTST_DISABLED)
486
487/**
488 *  uuencode option description:
489 */
490/** Descriptive text for the uuencode option */
491#define UUENCODE_DESC      (shar_opt_strs+1515)
492/** Upper-cased name for the uuencode option */
493#define UUENCODE_NAME      (shar_opt_strs+1541)
494/** Name string for the uuencode option */
495#define UUENCODE_name      (shar_opt_strs+1550)
496/** Compiled in flag settings for the uuencode option */
497#define UUENCODE_FLAGS     (OPTST_DISABLED)
498
499/**
500 *  text-files option description:
501 */
502/** Descriptive text for the text-files option */
503#define TEXT_FILES_DESC      (shar_opt_strs+1559)
504/** Upper-cased name for the text-files option */
505#define TEXT_FILES_NAME      (shar_opt_strs+1583)
506/** Name string for the text-files option */
507#define TEXT_FILES_name      (shar_opt_strs+1594)
508/** Compiled in flag settings for the text-files option */
509#define TEXT_FILES_FLAGS     (OPTST_DISABLED)
510
511/**
512 *  in-out option description:
513 */
514/** in-out option separation text */
515#define IN_OUT_DESC      (shar_opt_strs+1605)
516#define IN_OUT_FLAGS     (OPTST_DOCUMENT | OPTST_NO_INIT)
517
518/**
519 *  output-prefix option description:
520 */
521/** Descriptive text for the output-prefix option */
522#define OUTPUT_PREFIX_DESC      (shar_opt_strs+1649)
523/** Upper-cased name for the output-prefix option */
524#define OUTPUT_PREFIX_NAME      (shar_opt_strs+1680)
525/** Name string for the output-prefix option */
526#define OUTPUT_PREFIX_name      (shar_opt_strs+1694)
527/** Compiled in flag settings for the output-prefix option */
528#define OUTPUT_PREFIX_FLAGS     (OPTST_DISABLED \
529        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
530
531/**
532 *  whole-size-limit option description with
533 *  "Must also have options" and "Incompatible options":
534 */
535/** Descriptive text for the whole-size-limit option */
536#define WHOLE_SIZE_LIMIT_DESC      (shar_opt_strs+1708)
537/** Upper-cased name for the whole-size-limit option */
538#define WHOLE_SIZE_LIMIT_NAME      (shar_opt_strs+1742)
539/** Name string for the whole-size-limit option */
540#define WHOLE_SIZE_LIMIT_name      (shar_opt_strs+1759)
541/** Other options that are required by the whole-size-limit option */
542static int const aWhole_Size_LimitMustList[] = {
543    INDEX_OPT_OUTPUT_PREFIX, NO_EQUIVALENT };
544/** Compiled in flag settings for the whole-size-limit option */
545#define WHOLE_SIZE_LIMIT_FLAGS     (OPTST_DISABLED \
546        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC) \
547        | OPTST_SCALED_NUM)
548
549/**
550 *  split-size-limit option description with
551 *  "Must also have options" and "Incompatible options":
552 */
553/** Descriptive text for the split-size-limit option */
554#define SPLIT_SIZE_LIMIT_DESC      (shar_opt_strs+1776)
555/** Upper-cased name for the split-size-limit option */
556#define SPLIT_SIZE_LIMIT_NAME      (shar_opt_strs+1807)
557/** Name string for the split-size-limit option */
558#define SPLIT_SIZE_LIMIT_name      (shar_opt_strs+1824)
559/** Other options that are required by the split-size-limit option */
560static int const aSplit_Size_LimitMustList[] = {
561    INDEX_OPT_OUTPUT_PREFIX, NO_EQUIVALENT };
562/** Compiled in flag settings for the split-size-limit option */
563#define SPLIT_SIZE_LIMIT_FLAGS     (OPTST_DISABLED \
564        | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC) \
565        | OPTST_SCALED_NUM)
566
567/**
568 *  input-file-list option description:
569 */
570/** Descriptive text for the input-file-list option */
571#define INPUT_FILE_LIST_DESC      (shar_opt_strs+1841)
572/** Upper-cased name for the input-file-list option */
573#define INPUT_FILE_LIST_NAME      (shar_opt_strs+1868)
574/** Name string for the input-file-list option */
575#define INPUT_FILE_LIST_name      (shar_opt_strs+1884)
576/** Compiled in flag settings for the input-file-list option */
577#define INPUT_FILE_LIST_FLAGS     (OPTST_DISABLED \
578        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
579
580/**
581 *  stdin-file-list option description:
582 */
583/** Descriptive text for the stdin-file-list option */
584#define STDIN_FILE_LIST_DESC      (shar_opt_strs+1900)
585/** Upper-cased name for the stdin-file-list option */
586#define STDIN_FILE_LIST_NAME      (shar_opt_strs+1948)
587/** Name string for the stdin-file-list option */
588#define STDIN_FILE_LIST_name      (shar_opt_strs+1964)
589/** Compiled in flag settings for the stdin-file-list option */
590#define STDIN_FILE_LIST_FLAGS     (OPTST_DISABLED | OPTST_DEPRECATED)
591
592/**
593 *  headers option description:
594 */
595/** headers option separation text */
596#define HEADERS_DESC      (shar_opt_strs+1980)
597#define HEADERS_FLAGS     (OPTST_DOCUMENT | OPTST_NO_INIT)
598
599/**
600 *  archive-name option description:
601 */
602/** Descriptive text for the archive-name option */
603#define ARCHIVE_NAME_DESC      (shar_opt_strs+2010)
604/** Upper-cased name for the archive-name option */
605#define ARCHIVE_NAME_NAME      (shar_opt_strs+2043)
606/** Name string for the archive-name option */
607#define ARCHIVE_NAME_name      (shar_opt_strs+2056)
608/** Compiled in flag settings for the archive-name option */
609#define ARCHIVE_NAME_FLAGS     (OPTST_DISABLED \
610        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
611
612/**
613 *  submitter option description:
614 */
615/** Descriptive text for the submitter option */
616#define SUBMITTER_DESC      (shar_opt_strs+2069)
617/** Upper-cased name for the submitter option */
618#define SUBMITTER_NAME      (shar_opt_strs+2097)
619/** Name string for the submitter option */
620#define SUBMITTER_name      (shar_opt_strs+2107)
621/** Compiled in flag settings for the submitter option */
622#define SUBMITTER_FLAGS     (OPTST_DISABLED \
623        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
624
625/**
626 *  net-headers option description with
627 *  "Must also have options" and "Incompatible options":
628 */
629/** Descriptive text for the net-headers option */
630#define NET_HEADERS_DESC      (shar_opt_strs+2117)
631/** Upper-cased name for the net-headers option */
632#define NET_HEADERS_NAME      (shar_opt_strs+2162)
633/** Name string for the net-headers option */
634#define NET_HEADERS_name      (shar_opt_strs+2174)
635/** Other options that are required by the net-headers option */
636static int const aNet_HeadersMustList[] = {
637    INDEX_OPT_ARCHIVE_NAME, NO_EQUIVALENT };
638/** Compiled in flag settings for the net-headers option */
639#define NET_HEADERS_FLAGS     (OPTST_DISABLED)
640
641/**
642 *  cut-mark option description:
643 */
644/** Descriptive text for the cut-mark option */
645#define CUT_MARK_DESC      (shar_opt_strs+2186)
646/** Upper-cased name for the cut-mark option */
647#define CUT_MARK_NAME      (shar_opt_strs+2217)
648/** Name string for the cut-mark option */
649#define CUT_MARK_name      (shar_opt_strs+2226)
650/** Compiled in flag settings for the cut-mark option */
651#define CUT_MARK_FLAGS     (OPTST_DISABLED)
652
653/**
654 *  translate option description:
655 */
656/** Descriptive text for the translate option */
657#define TRANSLATE_DESC      (shar_opt_strs+2235)
658/** Upper-cased name for the translate option */
659#define TRANSLATE_NAME      (shar_opt_strs+2268)
660/** Name string for the translate option */
661#define TRANSLATE_name      (shar_opt_strs+2278)
662/** Compiled in flag settings for the translate option */
663#define TRANSLATE_FLAGS     (OPTST_DISABLED)
664
665/**
666 *  xmit-defenses option description:
667 */
668/** xmit-defenses option separation text */
669#define XMIT_DEFENSES_DESC      (shar_opt_strs+2288)
670#define XMIT_DEFENSES_FLAGS     (OPTST_DOCUMENT | OPTST_NO_INIT)
671
672/**
673 *  no-character-count option description:
674 */
675/** Descriptive text for the no-character-count option */
676#define NO_CHARACTER_COUNT_DESC      (shar_opt_strs+2328)
677/** Upper-cased name for the no-character-count option */
678#define NO_CHARACTER_COUNT_NAME      (shar_opt_strs+2361)
679/** Name string for the no-character-count option */
680#define NO_CHARACTER_COUNT_name      (shar_opt_strs+2380)
681/** Compiled in flag settings for the no-character-count option */
682#define NO_CHARACTER_COUNT_FLAGS     (OPTST_DISABLED)
683
684/**
685 *  no-md5-digest option description:
686 */
687/** Descriptive text for the no-md5-digest option */
688#define NO_MD5_DIGEST_DESC      (shar_opt_strs+2399)
689/** Upper-cased name for the no-md5-digest option */
690#define NO_MD5_DIGEST_NAME      (shar_opt_strs+2434)
691/** Name string for the no-md5-digest option */
692#define NO_MD5_DIGEST_name      (shar_opt_strs+2448)
693/** Compiled in flag settings for the no-md5-digest option */
694#define NO_MD5_DIGEST_FLAGS     (OPTST_DISABLED)
695
696/**
697 *  force-prefix option description:
698 */
699/** Descriptive text for the force-prefix option */
700#define FORCE_PREFIX_DESC      (shar_opt_strs+2462)
701/** Upper-cased name for the force-prefix option */
702#define FORCE_PREFIX_NAME      (shar_opt_strs+2503)
703/** Name string for the force-prefix option */
704#define FORCE_PREFIX_name      (shar_opt_strs+2516)
705/** Compiled in flag settings for the force-prefix option */
706#define FORCE_PREFIX_FLAGS     (OPTST_DISABLED)
707
708/**
709 *  here-delimiter option description:
710 */
711/** Descriptive text for the here-delimiter option */
712#define HERE_DELIMITER_DESC      (shar_opt_strs+2529)
713/** Upper-cased name for the here-delimiter option */
714#define HERE_DELIMITER_NAME      (shar_opt_strs+2560)
715/** Name string for the here-delimiter option */
716#define HERE_DELIMITER_name      (shar_opt_strs+2575)
717/** The compiled in default value for the here-delimiter option argument */
718#define HERE_DELIMITER_DFT_ARG   (shar_opt_strs+2590)
719/** Compiled in flag settings for the here-delimiter option */
720#define HERE_DELIMITER_FLAGS     (OPTST_DISABLED \
721        | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
722
723/**
724 *  shar-flavors option description:
725 */
726/** shar-flavors option separation text */
727#define SHAR_FLAVORS_DESC      (shar_opt_strs+2599)
728#define SHAR_FLAVORS_FLAGS     (OPTST_DOCUMENT | OPTST_NO_INIT)
729
730/**
731 *  vanilla-operation option description:
732 */
733/** Descriptive text for the vanilla-operation option */
734#define VANILLA_OPERATION_DESC      (shar_opt_strs+2635)
735/** Upper-cased name for the vanilla-operation option */
736#define VANILLA_OPERATION_NAME      (shar_opt_strs+2661)
737/** Name string for the vanilla-operation option */
738#define VANILLA_OPERATION_name      (shar_opt_strs+2679)
739/** Compiled in flag settings for the vanilla-operation option */
740#define VANILLA_OPERATION_FLAGS     (OPTST_DISABLED)
741
742/**
743 *  no-piping option description:
744 */
745/** Descriptive text for the no-piping option */
746#define NO_PIPING_DESC      (shar_opt_strs+2697)
747/** Upper-cased name for the no-piping option */
748#define NO_PIPING_NAME      (shar_opt_strs+2734)
749/** Name string for the no-piping option */
750#define NO_PIPING_name      (shar_opt_strs+2744)
751/** Compiled in flag settings for the no-piping option */
752#define NO_PIPING_FLAGS     (OPTST_DISABLED)
753
754/**
755 *  no-check-existing option description:
756 */
757/** Descriptive text for the no-check-existing option */
758#define NO_CHECK_EXISTING_DESC      (shar_opt_strs+2754)
759/** Upper-cased name for the no-check-existing option */
760#define NO_CHECK_EXISTING_NAME      (shar_opt_strs+2787)
761/** Name string for the no-check-existing option */
762#define NO_CHECK_EXISTING_name      (shar_opt_strs+2805)
763/** Compiled in flag settings for the no-check-existing option */
764#define NO_CHECK_EXISTING_FLAGS     (OPTST_DISABLED)
765
766/**
767 *  query-user option description with
768 *  "Must also have options" and "Incompatible options":
769 */
770/** Descriptive text for the query-user option */
771#define QUERY_USER_DESC      (shar_opt_strs+2823)
772/** Upper-cased name for the query-user option */
773#define QUERY_USER_NAME      (shar_opt_strs+2857)
774/** Name string for the query-user option */
775#define QUERY_USER_name      (shar_opt_strs+2868)
776/** Other options that appear in conjunction with the query-user option */
777static int const aQuery_UserCantList[] = {
778    INDEX_OPT_VANILLA_OPERATION, NO_EQUIVALENT };
779/** Compiled in flag settings for the query-user option */
780#define QUERY_USER_FLAGS     (OPTST_DISABLED)
781
782/**
783 *  no-timestamp option description:
784 */
785/** Descriptive text for the no-timestamp option */
786#define NO_TIMESTAMP_DESC      (shar_opt_strs+2879)
787/** Upper-cased name for the no-timestamp option */
788#define NO_TIMESTAMP_NAME      (shar_opt_strs+2913)
789/** Name string for the no-timestamp option */
790#define NO_TIMESTAMP_name      (shar_opt_strs+2926)
791/** Compiled in flag settings for the no-timestamp option */
792#define NO_TIMESTAMP_FLAGS     (OPTST_DISABLED)
793
794/**
795 *  quiet-unshar option description:
796 */
797/** Descriptive text for the quiet-unshar option */
798#define QUIET_UNSHAR_DESC      (shar_opt_strs+2939)
799/** Upper-cased name for the quiet-unshar option */
800#define QUIET_UNSHAR_NAME      (shar_opt_strs+2977)
801/** Name string for the quiet-unshar option */
802#define QUIET_UNSHAR_name      (shar_opt_strs+2990)
803/** Compiled in flag settings for the quiet-unshar option */
804#define QUIET_UNSHAR_FLAGS     (OPTST_DISABLED)
805
806/**
807 *  basename option description:
808 */
809/** Descriptive text for the basename option */
810#define BASENAME_DESC      (shar_opt_strs+3003)
811/** Upper-cased name for the basename option */
812#define BASENAME_NAME      (shar_opt_strs+3047)
813/** Name string for the basename option */
814#define BASENAME_name      (shar_opt_strs+3056)
815/** Compiled in flag settings for the basename option */
816#define BASENAME_FLAGS     (OPTST_DISABLED)
817
818/**
819 *  internationalization option description:
820 */
821/** internationalization option separation text */
822#define INTERNATIONALIZATION_DESC      (shar_opt_strs+3065)
823#define INTERNATIONALIZATION_FLAGS     (OPTST_DOCUMENT | OPTST_NO_INIT)
824
825/**
826 *  no-i18n option description:
827 */
828/** Descriptive text for the no-i18n option */
829#define NO_I18N_DESC      (shar_opt_strs+3095)
830/** Upper-cased name for the no-i18n option */
831#define NO_I18N_NAME      (shar_opt_strs+3119)
832/** Name string for the no-i18n option */
833#define NO_I18N_name      (shar_opt_strs+3127)
834/** Compiled in flag settings for the no-i18n option */
835#define NO_I18N_FLAGS     (OPTST_DISABLED)
836
837/**
838 *  print-text-domain-dir option description:
839 */
840/** Descriptive text for the print-text-domain-dir option */
841#define PRINT_TEXT_DOMAIN_DIR_DESC      (shar_opt_strs+3135)
842/** Upper-cased name for the print-text-domain-dir option */
843#define PRINT_TEXT_DOMAIN_DIR_NAME      (shar_opt_strs+3170)
844/** Name string for the print-text-domain-dir option */
845#define PRINT_TEXT_DOMAIN_DIR_name      (shar_opt_strs+3192)
846/** Compiled in flag settings for the print-text-domain-dir option */
847#define PRINT_TEXT_DOMAIN_DIR_FLAGS     (OPTST_DISABLED)
848
849/**
850 *  feedback option description:
851 */
852/** feedback option separation text */
853#define FEEDBACK_DESC      (shar_opt_strs+3214)
854#define FEEDBACK_FLAGS     (OPTST_DOCUMENT | OPTST_NO_INIT)
855
856/**
857 *  quiet option description:
858 */
859/** Descriptive text for the quiet option */
860#define QUIET_DESC      (shar_opt_strs+3243)
861/** Upper-cased name for the quiet option */
862#define QUIET_NAME      (shar_opt_strs+3274)
863/** Name string for the quiet option */
864#define QUIET_name      (shar_opt_strs+3280)
865/** Compiled in flag settings for the quiet option */
866#define QUIET_FLAGS     (OPTST_DISABLED)
867
868/**
869 *  silent option description:
870 */
871/** Descriptive text for the silent option */
872#define SILENT_DESC    (shar_opt_strs+3286)
873#define SILENT_NAME    NULL
874/** Unmodified name string for the silent option */
875#define SILENT_name    (shar_opt_strs+3318)
876/** Compiled in flag settings for the silent option */
877#define SILENT_FLAGS     (QUIET_FLAGS | OPTST_ALIAS)
878
879/*
880 *  Help/More_Help/Version option descriptions:
881 */
882#define HELP_DESC       (shar_opt_strs+3325)
883#define HELP_name       (shar_opt_strs+3369)
884#ifdef HAVE_WORKING_FORK
885#define MORE_HELP_DESC  (shar_opt_strs+3374)
886#define MORE_HELP_name  (shar_opt_strs+3419)
887#define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT)
888#else
889#define MORE_HELP_DESC  HELP_DESC
890#define MORE_HELP_name  HELP_name
891#define MORE_HELP_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
892#endif
893#ifdef NO_OPTIONAL_OPT_ARGS
894#  define VER_FLAGS     (OPTST_IMM | OPTST_NO_INIT)
895#else
896#  define VER_FLAGS     (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
897                         OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT)
898#endif
899#define VER_DESC        (shar_opt_strs+3429)
900#define VER_name        (shar_opt_strs+3465)
901#define SAVE_OPTS_DESC  (shar_opt_strs+3473)
902#define SAVE_OPTS_name  (shar_opt_strs+3512)
903#define LOAD_OPTS_DESC     (shar_opt_strs+3522)
904#define LOAD_OPTS_NAME     (shar_opt_strs+3554)
905#define NO_LOAD_OPTS_name  (shar_opt_strs+3564)
906#define LOAD_OPTS_pfx      (shar_opt_strs+3577)
907#define LOAD_OPTS_name     (NO_LOAD_OPTS_name + 3)
908/**
909 *  Declare option callback procedures
910 */
911#ifdef HAVE_COMPRESS
912  static tOptProc doOptCompress;
913#else /* not HAVE_COMPRESS */
914# define doOptCompress NULL
915#endif /* def/not HAVE_COMPRESS */
916#ifdef HAVE_COMPRESS
917  static tOptProc doOptBits_Per_Code;
918#else /* not HAVE_COMPRESS */
919# define doOptBits_Per_Code NULL
920#endif /* def/not HAVE_COMPRESS */
921extern tOptProc
922    check_intermixing,    optionBooleanVal,     optionNestedVal,
923    optionNumericVal,     optionPagedUsage,     optionPrintVersion,
924    optionResetOpt,       optionStackArg,       optionTimeDate,
925    optionTimeVal,        optionUnstackArg,     optionVendorOption,
926    set_compaction,       validate_opt_context;
927static tOptProc
928    doOptBzip2,                 doOptGzip,
929    doOptInput_File_List,       doOptLevel_For_Gzip,
930    doOptLevel_Of_Compression,  doOptPrint_Text_Domain_Dir,
931    doOptSilent,                doOptSplit_Size_Limit,
932    doOptStdin_File_List,       doOptVanilla_Operation,
933    doOptWhole_Size_Limit,      doUsageOpt;
934#define VER_PROC        optionPrintVersion
935
936/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
937/**
938 *  Define the shar Option Descriptions.
939 * This is an array of OPTION_CT entries, one for each
940 * option that the shar program responds to.
941 */
942static tOptDesc optDesc[OPTION_CT] = {
943  {  /* entry idx, value */ 0, 0,
944     /* equiv idx, value */ 0, 0,
945     /* equivalenced to  */ NO_EQUIVALENT,
946     /* min, max, act ct */ 0, 0, 0,
947     /* opt state flags  */ COMPRESSION_FLAGS, 0,
948     /* last opt argumnt */ { NULL },
949     /* arg list/cookie  */ NULL,
950     /* must/cannot opts */ NULL, NULL,
951     /* option proc      */ NULL,
952     /* desc, NAME, name */ COMPRESSION_DESC, NULL, NULL,
953     /* disablement strs */ NULL, NULL },
954
955  {  /* entry idx, value */ 1, VALUE_OPT_INTERMIX_TYPE,
956     /* equiv idx, value */ 1, VALUE_OPT_INTERMIX_TYPE,
957     /* equivalenced to  */ NO_EQUIVALENT,
958     /* min, max, act ct */ 0, 1, 0,
959     /* opt state flags  */ INTERMIX_TYPE_FLAGS, 0,
960     /* last opt argumnt */ { NULL }, /* --intermix-type */
961     /* arg list/cookie  */ NULL,
962     /* must/cannot opts */ NULL, aIntermix_TypeCantList,
963     /* option proc      */ validate_opt_context,
964     /* desc, NAME, name */ INTERMIX_TYPE_DESC, INTERMIX_TYPE_NAME, INTERMIX_TYPE_name,
965     /* disablement strs */ NULL, NULL },
966
967  {  /* entry idx, value */ 2, VALUE_OPT_COMPACTOR,
968     /* equiv idx, value */ 2, VALUE_OPT_COMPACTOR,
969     /* equivalenced to  */ NO_EQUIVALENT,
970     /* min, max, act ct */ 0, NOLIMIT, 0,
971     /* opt state flags  */ COMPACTOR_FLAGS, 0,
972     /* last opt argumnt */ { NULL }, /* --compactor */
973     /* arg list/cookie  */ NULL,
974     /* must/cannot opts */ NULL, aCompactorCantList,
975     /* option proc      */ set_compaction,
976     /* desc, NAME, name */ COMPACTOR_DESC, COMPACTOR_NAME, COMPACTOR_name,
977     /* disablement strs */ NULL, NULL },
978
979  {  /* entry idx, value */ 3, VALUE_OPT_LEVEL_OF_COMPRESSION,
980     /* equiv idx, value */ 3, VALUE_OPT_LEVEL_OF_COMPRESSION,
981     /* equivalenced to  */ NO_EQUIVALENT,
982     /* min, max, act ct */ 0, 1, 0,
983     /* opt state flags  */ LEVEL_OF_COMPRESSION_FLAGS, 0,
984     /* last opt argumnt */ { LEVEL_OF_COMPRESSION_DFT_ARG },
985     /* arg list/cookie  */ NULL,
986     /* must/cannot opts */ NULL, NULL,
987     /* option proc      */ doOptLevel_Of_Compression,
988     /* desc, NAME, name */ LEVEL_OF_COMPRESSION_DESC, LEVEL_OF_COMPRESSION_NAME, LEVEL_OF_COMPRESSION_name,
989     /* disablement strs */ NULL, NULL },
990
991  {  /* entry idx, value */ 4, VALUE_OPT_BZIP2,
992     /* equiv idx, value */ 4, VALUE_OPT_BZIP2,
993     /* equivalenced to  */ NO_EQUIVALENT,
994     /* min, max, act ct */ 0, NOLIMIT, 0,
995     /* opt state flags  */ BZIP2_FLAGS, 0,
996     /* last opt argumnt */ { NULL }, /* --bzip2 */
997     /* arg list/cookie  */ NULL,
998     /* must/cannot opts */ NULL, NULL,
999     /* option proc      */ doOptBzip2,
1000     /* desc, NAME, name */ BZIP2_DESC, BZIP2_NAME, BZIP2_name,
1001     /* disablement strs */ NULL, NULL },
1002
1003  {  /* entry idx, value */ 5, VALUE_OPT_GZIP,
1004     /* equiv idx, value */ 5, VALUE_OPT_GZIP,
1005     /* equivalenced to  */ NO_EQUIVALENT,
1006     /* min, max, act ct */ 0, NOLIMIT, 0,
1007     /* opt state flags  */ GZIP_FLAGS, 0,
1008     /* last opt argumnt */ { NULL }, /* --gzip */
1009     /* arg list/cookie  */ NULL,
1010     /* must/cannot opts */ NULL, NULL,
1011     /* option proc      */ doOptGzip,
1012     /* desc, NAME, name */ GZIP_DESC, GZIP_NAME, GZIP_name,
1013     /* disablement strs */ NULL, NULL },
1014
1015  {  /* entry idx, value */ 6, VALUE_OPT_COMPRESS,
1016     /* equiv idx, value */ 6, VALUE_OPT_COMPRESS,
1017     /* equivalenced to  */ NO_EQUIVALENT,
1018     /* min, max, act ct */ 0, NOLIMIT, 0,
1019     /* opt state flags  */ COMPRESS_FLAGS, 0,
1020     /* last opt argumnt */ { NULL }, /* --compress */
1021     /* arg list/cookie  */ NULL,
1022     /* must/cannot opts */ NULL, NULL,
1023     /* option proc      */ doOptCompress,
1024     /* desc, NAME, name */ COMPRESS_DESC, COMPRESS_NAME, COMPRESS_name,
1025     /* disablement strs */ NULL, NULL },
1026
1027  {  /* entry idx, value */ 7, VALUE_OPT_LEVEL_FOR_GZIP,
1028     /* equiv idx, value */ 7, VALUE_OPT_LEVEL_FOR_GZIP,
1029     /* equivalenced to  */ NO_EQUIVALENT,
1030     /* min, max, act ct */ 0, 1, 0,
1031     /* opt state flags  */ LEVEL_FOR_GZIP_FLAGS, 0,
1032     /* last opt argumnt */ { NULL }, /* --level-for-gzip */
1033     /* arg list/cookie  */ NULL,
1034     /* must/cannot opts */ NULL, NULL,
1035     /* option proc      */ doOptLevel_For_Gzip,
1036     /* desc, NAME, name */ LEVEL_FOR_GZIP_DESC, LEVEL_FOR_GZIP_NAME, LEVEL_FOR_GZIP_name,
1037     /* disablement strs */ 0, 0 },
1038
1039  {  /* entry idx, value */ 8, VALUE_OPT_BITS_PER_CODE,
1040     /* equiv idx, value */ 8, VALUE_OPT_BITS_PER_CODE,
1041     /* equivalenced to  */ NO_EQUIVALENT,
1042     /* min, max, act ct */ 0, 1, 0,
1043     /* opt state flags  */ BITS_PER_CODE_FLAGS, 0,
1044     /* last opt argumnt */ { BITS_PER_CODE_DFT_ARG },
1045     /* arg list/cookie  */ NULL,
1046     /* must/cannot opts */ NULL, NULL,
1047     /* option proc      */ doOptBits_Per_Code,
1048     /* desc, NAME, name */ BITS_PER_CODE_DESC, BITS_PER_CODE_NAME, BITS_PER_CODE_name,
1049     /* disablement strs */ NULL, NULL },
1050
1051  {  /* entry idx, value */ 0, 0,
1052     /* equiv idx, value */ 0, 0,
1053     /* equivalenced to  */ NO_EQUIVALENT,
1054     /* min, max, act ct */ 0, 0, 0,
1055     /* opt state flags  */ ENCODING_FLAGS, 0,
1056     /* last opt argumnt */ { NULL },
1057     /* arg list/cookie  */ NULL,
1058     /* must/cannot opts */ NULL, NULL,
1059     /* option proc      */ NULL,
1060     /* desc, NAME, name */ ENCODING_DESC, NULL, NULL,
1061     /* disablement strs */ NULL, NULL },
1062
1063  {  /* entry idx, value */ 10, VALUE_OPT_MIXED_UUENCODE,
1064     /* equiv idx, value */ NO_EQUIVALENT, 0,
1065     /* equivalenced to  */ NO_EQUIVALENT,
1066     /* min, max, act ct */ 0, 1, 0,
1067     /* opt state flags  */ MIXED_UUENCODE_FLAGS, 0,
1068     /* last opt argumnt */ { NULL }, /* --mixed-uuencode */
1069     /* arg list/cookie  */ NULL,
1070     /* must/cannot opts */ NULL, NULL,
1071     /* option proc      */ check_intermixing,
1072     /* desc, NAME, name */ MIXED_UUENCODE_DESC, MIXED_UUENCODE_NAME, MIXED_UUENCODE_name,
1073     /* disablement strs */ NULL, NULL },
1074
1075  {  /* entry idx, value */ 11, VALUE_OPT_UUENCODE,
1076     /* equiv idx, value */ NOLIMIT, NOLIMIT,
1077     /* equivalenced to  */ INDEX_OPT_MIXED_UUENCODE,
1078     /* min, max, act ct */ 0, 1, 0,
1079     /* opt state flags  */ UUENCODE_FLAGS, 0,
1080     /* last opt argumnt */ { NULL }, /* --uuencode */
1081     /* arg list/cookie  */ NULL,
1082     /* must/cannot opts */ NULL, NULL,
1083     /* option proc      */ check_intermixing,
1084     /* desc, NAME, name */ UUENCODE_DESC, UUENCODE_NAME, UUENCODE_name,
1085     /* disablement strs */ NULL, NULL },
1086
1087  {  /* entry idx, value */ 12, VALUE_OPT_TEXT_FILES,
1088     /* equiv idx, value */ NOLIMIT, NOLIMIT,
1089     /* equivalenced to  */ INDEX_OPT_MIXED_UUENCODE,
1090     /* min, max, act ct */ 0, 1, 0,
1091     /* opt state flags  */ TEXT_FILES_FLAGS, 0,
1092     /* last opt argumnt */ { NULL }, /* --text-files */
1093     /* arg list/cookie  */ NULL,
1094     /* must/cannot opts */ NULL, NULL,
1095     /* option proc      */ check_intermixing,
1096     /* desc, NAME, name */ TEXT_FILES_DESC, TEXT_FILES_NAME, TEXT_FILES_name,
1097     /* disablement strs */ NULL, NULL },
1098
1099  {  /* entry idx, value */ 0, 0,
1100     /* equiv idx, value */ 0, 0,
1101     /* equivalenced to  */ NO_EQUIVALENT,
1102     /* min, max, act ct */ 0, 0, 0,
1103     /* opt state flags  */ IN_OUT_FLAGS, 0,
1104     /* last opt argumnt */ { NULL },
1105     /* arg list/cookie  */ NULL,
1106     /* must/cannot opts */ NULL, NULL,
1107     /* option proc      */ NULL,
1108     /* desc, NAME, name */ IN_OUT_DESC, NULL, NULL,
1109     /* disablement strs */ NULL, NULL },
1110
1111  {  /* entry idx, value */ 14, VALUE_OPT_OUTPUT_PREFIX,
1112     /* equiv idx, value */ 14, VALUE_OPT_OUTPUT_PREFIX,
1113     /* equivalenced to  */ NO_EQUIVALENT,
1114     /* min, max, act ct */ 0, 1, 0,
1115     /* opt state flags  */ OUTPUT_PREFIX_FLAGS, 0,
1116     /* last opt argumnt */ { NULL }, /* --output-prefix */
1117     /* arg list/cookie  */ NULL,
1118     /* must/cannot opts */ NULL, NULL,
1119     /* option proc      */ validate_opt_context,
1120     /* desc, NAME, name */ OUTPUT_PREFIX_DESC, OUTPUT_PREFIX_NAME, OUTPUT_PREFIX_name,
1121     /* disablement strs */ NULL, NULL },
1122
1123  {  /* entry idx, value */ 15, VALUE_OPT_WHOLE_SIZE_LIMIT,
1124     /* equiv idx, value */ NO_EQUIVALENT, 0,
1125     /* equivalenced to  */ NO_EQUIVALENT,
1126     /* min, max, act ct */ 0, 1, 0,
1127     /* opt state flags  */ WHOLE_SIZE_LIMIT_FLAGS, 0,
1128     /* last opt argumnt */ { NULL }, /* --whole-size-limit */
1129     /* arg list/cookie  */ NULL,
1130     /* must/cannot opts */ aWhole_Size_LimitMustList, NULL,
1131     /* option proc      */ doOptWhole_Size_Limit,
1132     /* desc, NAME, name */ WHOLE_SIZE_LIMIT_DESC, WHOLE_SIZE_LIMIT_NAME, WHOLE_SIZE_LIMIT_name,
1133     /* disablement strs */ NULL, NULL },
1134
1135  {  /* entry idx, value */ 16, VALUE_OPT_SPLIT_SIZE_LIMIT,
1136     /* equiv idx, value */ NOLIMIT, NOLIMIT,
1137     /* equivalenced to  */ INDEX_OPT_WHOLE_SIZE_LIMIT,
1138     /* min, max, act ct */ 0, 1, 0,
1139     /* opt state flags  */ SPLIT_SIZE_LIMIT_FLAGS, 0,
1140     /* last opt argumnt */ { NULL }, /* --split-size-limit */
1141     /* arg list/cookie  */ NULL,
1142     /* must/cannot opts */ aSplit_Size_LimitMustList, NULL,
1143     /* option proc      */ doOptSplit_Size_Limit,
1144     /* desc, NAME, name */ SPLIT_SIZE_LIMIT_DESC, SPLIT_SIZE_LIMIT_NAME, SPLIT_SIZE_LIMIT_name,
1145     /* disablement strs */ NULL, NULL },
1146
1147  {  /* entry idx, value */ 17, VALUE_OPT_INPUT_FILE_LIST,
1148     /* equiv idx, value */ 17, VALUE_OPT_INPUT_FILE_LIST,
1149     /* equivalenced to  */ NO_EQUIVALENT,
1150     /* min, max, act ct */ 0, 1, 0,
1151     /* opt state flags  */ INPUT_FILE_LIST_FLAGS, 0,
1152     /* last opt argumnt */ { NULL }, /* --input-file-list */
1153     /* arg list/cookie  */ NULL,
1154     /* must/cannot opts */ NULL, NULL,
1155     /* option proc      */ doOptInput_File_List,
1156     /* desc, NAME, name */ INPUT_FILE_LIST_DESC, INPUT_FILE_LIST_NAME, INPUT_FILE_LIST_name,
1157     /* disablement strs */ NULL, NULL },
1158
1159  {  /* entry idx, value */ 18, VALUE_OPT_STDIN_FILE_LIST,
1160     /* equiv idx, value */ 18, VALUE_OPT_STDIN_FILE_LIST,
1161     /* equivalenced to  */ NO_EQUIVALENT,
1162     /* min, max, act ct */ 0, 1, 0,
1163     /* opt state flags  */ STDIN_FILE_LIST_FLAGS, 0,
1164     /* last opt argumnt */ { NULL }, /* --stdin-file-list */
1165     /* arg list/cookie  */ NULL,
1166     /* must/cannot opts */ NULL, NULL,
1167     /* option proc      */ doOptStdin_File_List,
1168     /* desc, NAME, name */ STDIN_FILE_LIST_DESC, STDIN_FILE_LIST_NAME, STDIN_FILE_LIST_name,
1169     /* disablement strs */ NULL, NULL },
1170
1171  {  /* entry idx, value */ 0, 0,
1172     /* equiv idx, value */ 0, 0,
1173     /* equivalenced to  */ NO_EQUIVALENT,
1174     /* min, max, act ct */ 0, 0, 0,
1175     /* opt state flags  */ HEADERS_FLAGS, 0,
1176     /* last opt argumnt */ { NULL },
1177     /* arg list/cookie  */ NULL,
1178     /* must/cannot opts */ NULL, NULL,
1179     /* option proc      */ NULL,
1180     /* desc, NAME, name */ HEADERS_DESC, NULL, NULL,
1181     /* disablement strs */ NULL, NULL },
1182
1183  {  /* entry idx, value */ 20, VALUE_OPT_ARCHIVE_NAME,
1184     /* equiv idx, value */ 20, VALUE_OPT_ARCHIVE_NAME,
1185     /* equivalenced to  */ NO_EQUIVALENT,
1186     /* min, max, act ct */ 0, 1, 0,
1187     /* opt state flags  */ ARCHIVE_NAME_FLAGS, 0,
1188     /* last opt argumnt */ { NULL }, /* --archive-name */
1189     /* arg list/cookie  */ NULL,
1190     /* must/cannot opts */ NULL, NULL,
1191     /* option proc      */ validate_opt_context,
1192     /* desc, NAME, name */ ARCHIVE_NAME_DESC, ARCHIVE_NAME_NAME, ARCHIVE_NAME_name,
1193     /* disablement strs */ NULL, NULL },
1194
1195  {  /* entry idx, value */ 21, VALUE_OPT_SUBMITTER,
1196     /* equiv idx, value */ 21, VALUE_OPT_SUBMITTER,
1197     /* equivalenced to  */ NO_EQUIVALENT,
1198     /* min, max, act ct */ 0, 1, 0,
1199     /* opt state flags  */ SUBMITTER_FLAGS, 0,
1200     /* last opt argumnt */ { NULL }, /* --submitter */
1201     /* arg list/cookie  */ NULL,
1202     /* must/cannot opts */ NULL, NULL,
1203     /* option proc      */ validate_opt_context,
1204     /* desc, NAME, name */ SUBMITTER_DESC, SUBMITTER_NAME, SUBMITTER_name,
1205     /* disablement strs */ NULL, NULL },
1206
1207  {  /* entry idx, value */ 22, VALUE_OPT_NET_HEADERS,
1208     /* equiv idx, value */ 22, VALUE_OPT_NET_HEADERS,
1209     /* equivalenced to  */ NO_EQUIVALENT,
1210     /* min, max, act ct */ 0, 1, 0,
1211     /* opt state flags  */ NET_HEADERS_FLAGS, 0,
1212     /* last opt argumnt */ { NULL }, /* --net-headers */
1213     /* arg list/cookie  */ NULL,
1214     /* must/cannot opts */ aNet_HeadersMustList, NULL,
1215     /* option proc      */ validate_opt_context,
1216     /* desc, NAME, name */ NET_HEADERS_DESC, NET_HEADERS_NAME, NET_HEADERS_name,
1217     /* disablement strs */ NULL, NULL },
1218
1219  {  /* entry idx, value */ 23, VALUE_OPT_CUT_MARK,
1220     /* equiv idx, value */ 23, VALUE_OPT_CUT_MARK,
1221     /* equivalenced to  */ NO_EQUIVALENT,
1222     /* min, max, act ct */ 0, 1, 0,
1223     /* opt state flags  */ CUT_MARK_FLAGS, 0,
1224     /* last opt argumnt */ { NULL }, /* --cut-mark */
1225     /* arg list/cookie  */ NULL,
1226     /* must/cannot opts */ NULL, NULL,
1227     /* option proc      */ validate_opt_context,
1228     /* desc, NAME, name */ CUT_MARK_DESC, CUT_MARK_NAME, CUT_MARK_name,
1229     /* disablement strs */ NULL, NULL },
1230
1231  {  /* entry idx, value */ 24, VALUE_OPT_TRANSLATE,
1232     /* equiv idx, value */ 24, VALUE_OPT_TRANSLATE,
1233     /* equivalenced to  */ NO_EQUIVALENT,
1234     /* min, max, act ct */ 0, 1, 0,
1235     /* opt state flags  */ TRANSLATE_FLAGS, 0,
1236     /* last opt argumnt */ { NULL }, /* --translate */
1237     /* arg list/cookie  */ NULL,
1238     /* must/cannot opts */ NULL, NULL,
1239     /* option proc      */ validate_opt_context,
1240     /* desc, NAME, name */ TRANSLATE_DESC, TRANSLATE_NAME, TRANSLATE_name,
1241     /* disablement strs */ NULL, NULL },
1242
1243  {  /* entry idx, value */ 0, 0,
1244     /* equiv idx, value */ 0, 0,
1245     /* equivalenced to  */ NO_EQUIVALENT,
1246     /* min, max, act ct */ 0, 0, 0,
1247     /* opt state flags  */ XMIT_DEFENSES_FLAGS, 0,
1248     /* last opt argumnt */ { NULL },
1249     /* arg list/cookie  */ NULL,
1250     /* must/cannot opts */ NULL, NULL,
1251     /* option proc      */ NULL,
1252     /* desc, NAME, name */ XMIT_DEFENSES_DESC, NULL, NULL,
1253     /* disablement strs */ NULL, NULL },
1254
1255  {  /* entry idx, value */ 26, VALUE_OPT_NO_CHARACTER_COUNT,
1256     /* equiv idx, value */ 26, VALUE_OPT_NO_CHARACTER_COUNT,
1257     /* equivalenced to  */ NO_EQUIVALENT,
1258     /* min, max, act ct */ 0, 1, 0,
1259     /* opt state flags  */ NO_CHARACTER_COUNT_FLAGS, 0,
1260     /* last opt argumnt */ { NULL }, /* --no-character-count */
1261     /* arg list/cookie  */ NULL,
1262     /* must/cannot opts */ NULL, NULL,
1263     /* option proc      */ validate_opt_context,
1264     /* desc, NAME, name */ NO_CHARACTER_COUNT_DESC, NO_CHARACTER_COUNT_NAME, NO_CHARACTER_COUNT_name,
1265     /* disablement strs */ NULL, NULL },
1266
1267  {  /* entry idx, value */ 27, VALUE_OPT_NO_MD5_DIGEST,
1268     /* equiv idx, value */ 27, VALUE_OPT_NO_MD5_DIGEST,
1269     /* equivalenced to  */ NO_EQUIVALENT,
1270     /* min, max, act ct */ 0, 1, 0,
1271     /* opt state flags  */ NO_MD5_DIGEST_FLAGS, 0,
1272     /* last opt argumnt */ { NULL }, /* --no-md5-digest */
1273     /* arg list/cookie  */ NULL,
1274     /* must/cannot opts */ NULL, NULL,
1275     /* option proc      */ validate_opt_context,
1276     /* desc, NAME, name */ NO_MD5_DIGEST_DESC, NO_MD5_DIGEST_NAME, NO_MD5_DIGEST_name,
1277     /* disablement strs */ NULL, NULL },
1278
1279  {  /* entry idx, value */ 28, VALUE_OPT_FORCE_PREFIX,
1280     /* equiv idx, value */ 28, VALUE_OPT_FORCE_PREFIX,
1281     /* equivalenced to  */ NO_EQUIVALENT,
1282     /* min, max, act ct */ 0, 1, 0,
1283     /* opt state flags  */ FORCE_PREFIX_FLAGS, 0,
1284     /* last opt argumnt */ { NULL }, /* --force-prefix */
1285     /* arg list/cookie  */ NULL,
1286     /* must/cannot opts */ NULL, NULL,
1287     /* option proc      */ validate_opt_context,
1288     /* desc, NAME, name */ FORCE_PREFIX_DESC, FORCE_PREFIX_NAME, FORCE_PREFIX_name,
1289     /* disablement strs */ NULL, NULL },
1290
1291  {  /* entry idx, value */ 29, VALUE_OPT_HERE_DELIMITER,
1292     /* equiv idx, value */ 29, VALUE_OPT_HERE_DELIMITER,
1293     /* equivalenced to  */ NO_EQUIVALENT,
1294     /* min, max, act ct */ 0, 1, 0,
1295     /* opt state flags  */ HERE_DELIMITER_FLAGS, 0,
1296     /* last opt argumnt */ { HERE_DELIMITER_DFT_ARG },
1297     /* arg list/cookie  */ NULL,
1298     /* must/cannot opts */ NULL, NULL,
1299     /* option proc      */ validate_opt_context,
1300     /* desc, NAME, name */ HERE_DELIMITER_DESC, HERE_DELIMITER_NAME, HERE_DELIMITER_name,
1301     /* disablement strs */ NULL, NULL },
1302
1303  {  /* entry idx, value */ 0, 0,
1304     /* equiv idx, value */ 0, 0,
1305     /* equivalenced to  */ NO_EQUIVALENT,
1306     /* min, max, act ct */ 0, 0, 0,
1307     /* opt state flags  */ SHAR_FLAVORS_FLAGS, 0,
1308     /* last opt argumnt */ { NULL },
1309     /* arg list/cookie  */ NULL,
1310     /* must/cannot opts */ NULL, NULL,
1311     /* option proc      */ NULL,
1312     /* desc, NAME, name */ SHAR_FLAVORS_DESC, NULL, NULL,
1313     /* disablement strs */ NULL, NULL },
1314
1315  {  /* entry idx, value */ 31, VALUE_OPT_VANILLA_OPERATION,
1316     /* equiv idx, value */ 31, VALUE_OPT_VANILLA_OPERATION,
1317     /* equivalenced to  */ NO_EQUIVALENT,
1318     /* min, max, act ct */ 0, 1, 0,
1319     /* opt state flags  */ VANILLA_OPERATION_FLAGS, 0,
1320     /* last opt argumnt */ { NULL }, /* --vanilla-operation */
1321     /* arg list/cookie  */ NULL,
1322     /* must/cannot opts */ NULL, NULL,
1323     /* option proc      */ doOptVanilla_Operation,
1324     /* desc, NAME, name */ VANILLA_OPERATION_DESC, VANILLA_OPERATION_NAME, VANILLA_OPERATION_name,
1325     /* disablement strs */ NULL, NULL },
1326
1327  {  /* entry idx, value */ 32, VALUE_OPT_NO_PIPING,
1328     /* equiv idx, value */ 32, VALUE_OPT_NO_PIPING,
1329     /* equivalenced to  */ NO_EQUIVALENT,
1330     /* min, max, act ct */ 0, 1, 0,
1331     /* opt state flags  */ NO_PIPING_FLAGS, 0,
1332     /* last opt argumnt */ { NULL }, /* --no-piping */
1333     /* arg list/cookie  */ NULL,
1334     /* must/cannot opts */ NULL, NULL,
1335     /* option proc      */ validate_opt_context,
1336     /* desc, NAME, name */ NO_PIPING_DESC, NO_PIPING_NAME, NO_PIPING_name,
1337     /* disablement strs */ NULL, NULL },
1338
1339  {  /* entry idx, value */ 33, VALUE_OPT_NO_CHECK_EXISTING,
1340     /* equiv idx, value */ 33, VALUE_OPT_NO_CHECK_EXISTING,
1341     /* equivalenced to  */ NO_EQUIVALENT,
1342     /* min, max, act ct */ 0, 1, 0,
1343     /* opt state flags  */ NO_CHECK_EXISTING_FLAGS, 0,
1344     /* last opt argumnt */ { NULL }, /* --no-check-existing */
1345     /* arg list/cookie  */ NULL,
1346     /* must/cannot opts */ NULL, NULL,
1347     /* option proc      */ validate_opt_context,
1348     /* desc, NAME, name */ NO_CHECK_EXISTING_DESC, NO_CHECK_EXISTING_NAME, NO_CHECK_EXISTING_name,
1349     /* disablement strs */ NULL, NULL },
1350
1351  {  /* entry idx, value */ 34, VALUE_OPT_QUERY_USER,
1352     /* equiv idx, value */ 34, VALUE_OPT_QUERY_USER,
1353     /* equivalenced to  */ NO_EQUIVALENT,
1354     /* min, max, act ct */ 0, 1, 0,
1355     /* opt state flags  */ QUERY_USER_FLAGS, 0,
1356     /* last opt argumnt */ { NULL }, /* --query-user */
1357     /* arg list/cookie  */ NULL,
1358     /* must/cannot opts */ NULL, aQuery_UserCantList,
1359     /* option proc      */ validate_opt_context,
1360     /* desc, NAME, name */ QUERY_USER_DESC, QUERY_USER_NAME, QUERY_USER_name,
1361     /* disablement strs */ NULL, NULL },
1362
1363  {  /* entry idx, value */ 35, VALUE_OPT_NO_TIMESTAMP,
1364     /* equiv idx, value */ 35, VALUE_OPT_NO_TIMESTAMP,
1365     /* equivalenced to  */ NO_EQUIVALENT,
1366     /* min, max, act ct */ 0, 1, 0,
1367     /* opt state flags  */ NO_TIMESTAMP_FLAGS, 0,
1368     /* last opt argumnt */ { NULL }, /* --no-timestamp */
1369     /* arg list/cookie  */ NULL,
1370     /* must/cannot opts */ NULL, NULL,
1371     /* option proc      */ validate_opt_context,
1372     /* desc, NAME, name */ NO_TIMESTAMP_DESC, NO_TIMESTAMP_NAME, NO_TIMESTAMP_name,
1373     /* disablement strs */ NULL, NULL },
1374
1375  {  /* entry idx, value */ 36, VALUE_OPT_QUIET_UNSHAR,
1376     /* equiv idx, value */ 36, VALUE_OPT_QUIET_UNSHAR,
1377     /* equivalenced to  */ NO_EQUIVALENT,
1378     /* min, max, act ct */ 0, 1, 0,
1379     /* opt state flags  */ QUIET_UNSHAR_FLAGS, 0,
1380     /* last opt argumnt */ { NULL }, /* --quiet-unshar */
1381     /* arg list/cookie  */ NULL,
1382     /* must/cannot opts */ NULL, NULL,
1383     /* option proc      */ validate_opt_context,
1384     /* desc, NAME, name */ QUIET_UNSHAR_DESC, QUIET_UNSHAR_NAME, QUIET_UNSHAR_name,
1385     /* disablement strs */ NULL, NULL },
1386
1387  {  /* entry idx, value */ 37, VALUE_OPT_BASENAME,
1388     /* equiv idx, value */ 37, VALUE_OPT_BASENAME,
1389     /* equivalenced to  */ NO_EQUIVALENT,
1390     /* min, max, act ct */ 0, 1, 0,
1391     /* opt state flags  */ BASENAME_FLAGS, 0,
1392     /* last opt argumnt */ { NULL }, /* --basename */
1393     /* arg list/cookie  */ NULL,
1394     /* must/cannot opts */ NULL, NULL,
1395     /* option proc      */ validate_opt_context,
1396     /* desc, NAME, name */ BASENAME_DESC, BASENAME_NAME, BASENAME_name,
1397     /* disablement strs */ NULL, NULL },
1398
1399  {  /* entry idx, value */ 0, 0,
1400     /* equiv idx, value */ 0, 0,
1401     /* equivalenced to  */ NO_EQUIVALENT,
1402     /* min, max, act ct */ 0, 0, 0,
1403     /* opt state flags  */ INTERNATIONALIZATION_FLAGS, 0,
1404     /* last opt argumnt */ { NULL },
1405     /* arg list/cookie  */ NULL,
1406     /* must/cannot opts */ NULL, NULL,
1407     /* option proc      */ NULL,
1408     /* desc, NAME, name */ INTERNATIONALIZATION_DESC, NULL, NULL,
1409     /* disablement strs */ NULL, NULL },
1410
1411  {  /* entry idx, value */ 39, VALUE_OPT_NO_I18N,
1412     /* equiv idx, value */ 39, VALUE_OPT_NO_I18N,
1413     /* equivalenced to  */ NO_EQUIVALENT,
1414     /* min, max, act ct */ 0, 1, 0,
1415     /* opt state flags  */ NO_I18N_FLAGS, 0,
1416     /* last opt argumnt */ { NULL }, /* --no-i18n */
1417     /* arg list/cookie  */ NULL,
1418     /* must/cannot opts */ NULL, NULL,
1419     /* option proc      */ validate_opt_context,
1420     /* desc, NAME, name */ NO_I18N_DESC, NO_I18N_NAME, NO_I18N_name,
1421     /* disablement strs */ NULL, NULL },
1422
1423  {  /* entry idx, value */ 40, VALUE_OPT_PRINT_TEXT_DOMAIN_DIR,
1424     /* equiv idx, value */ 40, VALUE_OPT_PRINT_TEXT_DOMAIN_DIR,
1425     /* equivalenced to  */ NO_EQUIVALENT,
1426     /* min, max, act ct */ 0, 1, 0,
1427     /* opt state flags  */ PRINT_TEXT_DOMAIN_DIR_FLAGS, 0,
1428     /* last opt argumnt */ { NULL }, /* --print-text-domain-dir */
1429     /* arg list/cookie  */ NULL,
1430     /* must/cannot opts */ NULL, NULL,
1431     /* option proc      */ doOptPrint_Text_Domain_Dir,
1432     /* desc, NAME, name */ PRINT_TEXT_DOMAIN_DIR_DESC, PRINT_TEXT_DOMAIN_DIR_NAME, PRINT_TEXT_DOMAIN_DIR_name,
1433     /* disablement strs */ NULL, NULL },
1434
1435  {  /* entry idx, value */ 0, 0,
1436     /* equiv idx, value */ 0, 0,
1437     /* equivalenced to  */ NO_EQUIVALENT,
1438     /* min, max, act ct */ 0, 0, 0,
1439     /* opt state flags  */ FEEDBACK_FLAGS, 0,
1440     /* last opt argumnt */ { NULL },
1441     /* arg list/cookie  */ NULL,
1442     /* must/cannot opts */ NULL, NULL,
1443     /* option proc      */ NULL,
1444     /* desc, NAME, name */ FEEDBACK_DESC, NULL, NULL,
1445     /* disablement strs */ NULL, NULL },
1446
1447  {  /* entry idx, value */ 42, VALUE_OPT_QUIET,
1448     /* equiv idx, value */ 42, VALUE_OPT_QUIET,
1449     /* equivalenced to  */ NO_EQUIVALENT,
1450     /* min, max, act ct */ 0, 1, 0,
1451     /* opt state flags  */ QUIET_FLAGS, 0,
1452     /* last opt argumnt */ { NULL }, /* --quiet */
1453     /* arg list/cookie  */ NULL,
1454     /* must/cannot opts */ NULL, NULL,
1455     /* option proc      */ validate_opt_context,
1456     /* desc, NAME, name */ QUIET_DESC, QUIET_NAME, QUIET_name,
1457     /* disablement strs */ NULL, NULL },
1458
1459  {  /* entry idx, value */ 43, VALUE_OPT_SILENT,
1460     /* equiv idx, value */ 43, VALUE_OPT_SILENT,
1461     /* equivalenced to  */ NO_EQUIVALENT,
1462     /* min, max, act ct */ 0, 1, 0,
1463     /* opt state flags  */ SILENT_FLAGS, 0,
1464     /* last opt argumnt */ { NULL }, /* --silent */
1465     /* arg list/cookie  */ NULL,
1466     /* must/cannot opts */ NULL, NULL,
1467     /* option proc      */ doOptSilent,
1468     /* desc, NAME, name */ SILENT_DESC, SILENT_NAME, SILENT_name,
1469     /* disablement strs */ 0, 0 },
1470
1471  {  /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
1472     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_VERSION,
1473     /* equivalenced to  */ NO_EQUIVALENT,
1474     /* min, max, act ct */ 0, 1, 0,
1475     /* opt state flags  */ VER_FLAGS, AOUSE_VERSION,
1476     /* last opt argumnt */ { NULL },
1477     /* arg list/cookie  */ NULL,
1478     /* must/cannot opts */ NULL, NULL,
1479     /* option proc      */ VER_PROC,
1480     /* desc, NAME, name */ VER_DESC, NULL, VER_name,
1481     /* disablement strs */ NULL, NULL },
1482
1483
1484
1485  {  /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
1486     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_HELP,
1487     /* equivalenced to  */ NO_EQUIVALENT,
1488     /* min, max, act ct */ 0, 1, 0,
1489     /* opt state flags  */ OPTST_IMM | OPTST_NO_INIT, AOUSE_HELP,
1490     /* last opt argumnt */ { NULL },
1491     /* arg list/cookie  */ NULL,
1492     /* must/cannot opts */ NULL, NULL,
1493     /* option proc      */ doUsageOpt,
1494     /* desc, NAME, name */ HELP_DESC, NULL, HELP_name,
1495     /* disablement strs */ NULL, NULL },
1496
1497  {  /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
1498     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_MORE_HELP,
1499     /* equivalenced to  */ NO_EQUIVALENT,
1500     /* min, max, act ct */ 0, 1, 0,
1501     /* opt state flags  */ MORE_HELP_FLAGS, AOUSE_MORE_HELP,
1502     /* last opt argumnt */ { NULL },
1503     /* arg list/cookie  */ NULL,
1504     /* must/cannot opts */ NULL,  NULL,
1505     /* option proc      */ optionPagedUsage,
1506     /* desc, NAME, name */ MORE_HELP_DESC, NULL, MORE_HELP_name,
1507     /* disablement strs */ NULL, NULL },
1508
1509  {  /* entry idx, value */ INDEX_OPT_SAVE_OPTS, VALUE_OPT_SAVE_OPTS,
1510     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_SAVE_OPTS,
1511     /* equivalenced to  */ NO_EQUIVALENT,
1512     /* min, max, act ct */ 0, 1, 0,
1513     /* opt state flags  */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
1514                       | OPTST_ARG_OPTIONAL | OPTST_NO_INIT, AOUSE_SAVE_OPTS,
1515     /* last opt argumnt */ { NULL },
1516     /* arg list/cookie  */ NULL,
1517     /* must/cannot opts */ NULL,  NULL,
1518     /* option proc      */ NULL,
1519     /* desc, NAME, name */ SAVE_OPTS_DESC, NULL, SAVE_OPTS_name,
1520     /* disablement strs */ NULL, NULL },
1521
1522  {  /* entry idx, value */ INDEX_OPT_LOAD_OPTS, VALUE_OPT_LOAD_OPTS,
1523     /* equiv idx value  */ NO_EQUIVALENT, VALUE_OPT_LOAD_OPTS,
1524     /* equivalenced to  */ NO_EQUIVALENT,
1525     /* min, max, act ct */ 0, NOLIMIT, 0,
1526     /* opt state flags  */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
1527			  | OPTST_DISABLE_IMM, AOUSE_LOAD_OPTS,
1528     /* last opt argumnt */ { NULL },
1529     /* arg list/cookie  */ NULL,
1530     /* must/cannot opts */ NULL, NULL,
1531     /* option proc      */ optionLoadOpt,
1532     /* desc, NAME, name */ LOAD_OPTS_DESC, LOAD_OPTS_NAME, LOAD_OPTS_name,
1533     /* disablement strs */ NO_LOAD_OPTS_name, LOAD_OPTS_pfx }
1534};
1535
1536
1537/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1538/** Reference to the upper cased version of shar. */
1539#define zPROGNAME       (shar_opt_strs+3580)
1540/** Reference to the title line for shar usage. */
1541#define zUsageTitle     (shar_opt_strs+3585)
1542/** shar configuration file name. */
1543#define zRcName         (shar_opt_strs+3707)
1544/** Directories to search for shar config files. */
1545static char const * const apzHomeList[2] = {
1546    shar_opt_strs+3701,
1547    NULL };
1548/** The shar program bug email address. */
1549#define zBugsAddr       (shar_opt_strs+3715)
1550/** Clarification/explanation of what shar does. */
1551#define zExplain        (shar_opt_strs+3737)
1552/** Extra detail explaining what shar does. */
1553#define zDetail         (shar_opt_strs+3860)
1554/** The full version string for shar. */
1555#define zFullVersion    (shar_opt_strs+4732)
1556/* extracted from optcode.tlib near line 364 */
1557
1558#if defined(ENABLE_NLS)
1559# define OPTPROC_BASE OPTPROC_TRANSLATE
1560  static tOptionXlateProc translate_option_strings;
1561#else
1562# define OPTPROC_BASE OPTPROC_NONE
1563# define translate_option_strings NULL
1564#endif /* ENABLE_NLS */
1565
1566#define shar_full_usage (shar_opt_strs+4760)
1567#define shar_short_usage (shar_opt_strs+10169)
1568
1569#endif /* not defined __doxygen__ */
1570
1571/*
1572 *  Create the static procedure(s) declared above.
1573 */
1574/**
1575 * The callout function that invokes the optionUsage function.
1576 *
1577 * @param[in] opts the AutoOpts option description structure
1578 * @param[in] od   the descriptor for the "help" (usage) option.
1579 * @noreturn
1580 */
1581static void
1582doUsageOpt(tOptions * opts, tOptDesc * od)
1583{
1584    int ex_code;
1585    ex_code = SHAR_EXIT_SUCCESS;
1586    optionUsage(&sharOptions, ex_code);
1587    /* NOTREACHED */
1588    exit(1);
1589    (void)opts;
1590    (void)od;
1591}
1592
1593/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1594/**
1595 * Code to handle the level-of-compression option.
1596 * Some compression programs allow for a level of compression.  The
1597 * default is @code{9}, but this option allows you to specify something
1598 * else.  This value is used by @command{gzip}, @command{bzip2} and
1599 * @command{xz}, but not @command{compress}.
1600 * @param[in] pOptions the shar options data structure
1601 * @param[in,out] pOptDesc the option descriptor for this option.
1602 */
1603static void
1604doOptLevel_Of_Compression(tOptions* pOptions, tOptDesc* pOptDesc)
1605{
1606    static struct {long rmin, rmax;} const rng[1] = {
1607        { 1, 9 } };
1608    int  ix;
1609
1610    if (pOptions <= OPTPROC_EMIT_LIMIT)
1611        goto emit_ranges;
1612    optionNumericVal(pOptions, pOptDesc);
1613
1614    for (ix = 0; ix < 1; ix++) {
1615        if (pOptDesc->optArg.argInt < rng[ix].rmin)
1616            continue;  /* ranges need not be ordered. */
1617        if (pOptDesc->optArg.argInt == rng[ix].rmin)
1618            return;
1619        if (rng[ix].rmax == LONG_MIN)
1620            continue;
1621        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
1622            return;
1623    }
1624
1625    option_usage_fp = stderr;
1626
1627 emit_ranges:
1628optionShowRange(pOptions, pOptDesc, VOIDP(rng), 1);
1629}
1630
1631/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1632/**
1633 * Code to handle the bzip2 option.
1634 * @command{bzip2} compress and @command{uuencode} all files
1635 * prior to packing.  The recipient must have @command{uudecode}
1636 * @command{bzip2} in order to unpack.
1637 * @param[in] pOptions the shar options data structure
1638 * @param[in,out] pOptDesc the option descriptor for this option.
1639 */
1640static void
1641doOptBzip2(tOptions* pOptions, tOptDesc* pOptDesc)
1642{
1643    /*
1644     * Be sure the flag-code[0] handles special values for the options pointer
1645     * viz. (poptions <= OPTPROC_EMIT_LIMIT) *and also* the special flag bit
1646     * ((poptdesc->fOptState & OPTST_RESET) != 0) telling the option to
1647     * reset its state.
1648     */
1649    /* extracted from shar-opts.def, line 139 */
1650    SET_OPT_COMPACTOR("bzip2");
1651    (void)pOptDesc;
1652    (void)pOptions;
1653}
1654
1655/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1656/**
1657 * Code to handle the gzip option.
1658 * @command{gzip} compress and @command{uuencode} all files prior
1659 * to packing.  The recipient must have @command{uudecode} and
1660 * @command{gzip} in order to unpack.
1661 * @param[in] pOptions the shar options data structure
1662 * @param[in,out] pOptDesc the option descriptor for this option.
1663 */
1664static void
1665doOptGzip(tOptions* pOptions, tOptDesc* pOptDesc)
1666{
1667    /*
1668     * Be sure the flag-code[0] handles special values for the options pointer
1669     * viz. (poptions <= OPTPROC_EMIT_LIMIT) *and also* the special flag bit
1670     * ((poptdesc->fOptState & OPTST_RESET) != 0) telling the option to
1671     * reset its state.
1672     */
1673    /* extracted from shar-opts.def, line 153 */
1674    SET_OPT_COMPACTOR("gzip");
1675    (void)pOptDesc;
1676    (void)pOptions;
1677}
1678
1679/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1680/**
1681 * Code to handle the compress option, when HAVE_COMPRESS is #define-d.
1682 * @command{compress} and @command{uuencode} all files prior to
1683 * packing.  The recipient must have @command{uudecode} and
1684 * @command{compress} in order to unpack.
1685 * @param[in] pOptions the shar options data structure
1686 * @param[in,out] pOptDesc the option descriptor for this option.
1687 */
1688#ifdef HAVE_COMPRESS
1689static void
1690doOptCompress(tOptions* pOptions, tOptDesc* pOptDesc)
1691{
1692    /*
1693     * Be sure the flag-code[0] handles special values for the options pointer
1694     * viz. (poptions <= OPTPROC_EMIT_LIMIT) *and also* the special flag bit
1695     * ((poptdesc->fOptState & OPTST_RESET) != 0) telling the option to
1696     * reset its state.
1697     */
1698    /* extracted from shar-opts.def, line 168 */
1699    SET_OPT_COMPACTOR("compress");
1700    (void)pOptDesc;
1701    (void)pOptions;
1702}
1703#endif /* defined HAVE_COMPRESS */
1704
1705/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1706/**
1707 * Code to handle the level-for-gzip option.
1708 *
1709 * @param[in] pOptions the shar options data structure
1710 * @param[in,out] pOptDesc the option descriptor for this option.
1711 */
1712static void
1713doOptLevel_For_Gzip(tOptions* pOptions, tOptDesc* pOptDesc)
1714{
1715    int res = optionAlias(pOptions, pOptDesc, INDEX_OPT_LEVEL_OF_COMPRESSION);
1716    if ((res != 0) && ((pOptions->fOptSet & OPTPROC_ERRSTOP) != 0))
1717        USAGE(SHAR_EXIT_USAGE_ERROR);
1718
1719}
1720
1721/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1722/**
1723 * Code to handle the bits-per-code option, when HAVE_COMPRESS is #define-d.
1724 * This is the compression factor used by the @command{compress} program.
1725 * @param[in] pOptions the shar options data structure
1726 * @param[in,out] pOptDesc the option descriptor for this option.
1727 */
1728#ifdef HAVE_COMPRESS
1729static void
1730doOptBits_Per_Code(tOptions* pOptions, tOptDesc* pOptDesc)
1731{
1732    /*
1733     * Be sure the flag-code[0] handles special values for the options pointer
1734     * viz. (poptions <= OPTPROC_EMIT_LIMIT) *and also* the special flag bit
1735     * ((poptdesc->fOptState & OPTST_RESET) != 0) telling the option to
1736     * reset its state.
1737     */
1738    /* extracted from shar-opts.def, line 190 */
1739    check_intermixing(pOptions, pOptDesc);
1740    SET_OPT_COMPACTOR("compress");
1741}
1742#endif /* defined HAVE_COMPRESS */
1743
1744/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1745/**
1746 * Code to handle the whole-size-limit option.
1747 * Limit the output file size to @file{size} bytes, but don't split input
1748 * files.  If @file{size} is less than 1024, then it will be multiplied
1749 * by 1024.  The value may also be specified with a k, K, m or M suffix.
1750 * The number is then multiplied by 1000, 1024, 1000000, or 1048576,
1751 * respectively.  4M (4194304) is the maximum allowed.
1752 *
1753 * Unlike the @code{split-size-limit} option, this allows the recipient
1754 * of the shar files to unpack them in any order.
1755 * @param[in] pOptions the shar options data structure
1756 * @param[in,out] pOptDesc the option descriptor for this option.
1757 */
1758static void
1759doOptWhole_Size_Limit(tOptions* pOptions, tOptDesc* pOptDesc)
1760{
1761    static struct {long rmin, rmax;} const rng[2] = {
1762        { 8, 1023 },       { 8192, 4194304 } };
1763    int  ix;
1764
1765    if (pOptions <= OPTPROC_EMIT_LIMIT)
1766        goto emit_ranges;
1767    optionNumericVal(pOptions, pOptDesc);
1768
1769    for (ix = 0; ix < 2; ix++) {
1770        if (pOptDesc->optArg.argInt < rng[ix].rmin)
1771            continue;  /* ranges need not be ordered. */
1772        if (pOptDesc->optArg.argInt == rng[ix].rmin)
1773            return;
1774        if (rng[ix].rmax == LONG_MIN)
1775            continue;
1776        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
1777            return;
1778    }
1779
1780    option_usage_fp = stderr;
1781
1782 emit_ranges:
1783optionShowRange(pOptions, pOptDesc, VOIDP(rng), 2);
1784}
1785
1786/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1787/**
1788 * Code to handle the split-size-limit option.
1789 * Limit output file size to @file{size} bytes, splitting files if
1790 * necessary.  The allowed values are specified as with the
1791 * @option{--whole-size-limit} option.
1792 *
1793 * The archive parts created with this option must be unpacked in the
1794 * correct order.  If the recipient of the shell archives wants to put
1795 * all of them in a single email folder (file), they will have to be
1796 * saved in the correct order for @command{unshar} to unpack them all at
1797 * once (using one of the split archive options).
1798 * @xref{unshar Invocation}.
1799 * @param[in] pOptions the shar options data structure
1800 * @param[in,out] pOptDesc the option descriptor for this option.
1801 */
1802static void
1803doOptSplit_Size_Limit(tOptions* pOptions, tOptDesc* pOptDesc)
1804{
1805    static struct {long rmin, rmax;} const rng[2] = {
1806        { 8, 1023 },       { 8192, 4194304 } };
1807    int  ix;
1808
1809    if (pOptions <= OPTPROC_EMIT_LIMIT)
1810        goto emit_ranges;
1811    optionNumericVal(pOptions, pOptDesc);
1812
1813    for (ix = 0; ix < 2; ix++) {
1814        if (pOptDesc->optArg.argInt < rng[ix].rmin)
1815            continue;  /* ranges need not be ordered. */
1816        if (pOptDesc->optArg.argInt == rng[ix].rmin)
1817            return;
1818        if (rng[ix].rmax == LONG_MIN)
1819            continue;
1820        if (pOptDesc->optArg.argInt <= rng[ix].rmax)
1821            return;
1822    }
1823
1824    option_usage_fp = stderr;
1825
1826 emit_ranges:
1827optionShowRange(pOptions, pOptDesc, VOIDP(rng), 2);
1828}
1829
1830/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1831/**
1832 * Code to handle the input-file-list option.
1833 * This option causes @file{file} to be reopened as standard input.  If
1834 * no files are found on the input line, then standard input is read for
1835 * input file names.  Use of this option will prohibit input files from
1836 * being listed on the command line.
1837 *
1838 * Input must be in a form similar to that generated by @command{find},
1839 * one filename per line.  This switch is especially useful when the
1840 * command line will not hold the list of files to be archived.
1841 *
1842 * If the @option{--intermix-type} option is specified on the command
1843 * line, then the compression options may be included in the standard
1844 * input on lines by themselves and no file name may begin with a hyphen.
1845 *
1846 * For example:
1847 * @example
1848 * @{ echo --compact xz
1849 *    find . -type f -print | sort
1850 * @} | shar -S -p -L50K -o /somewhere/big
1851 * @end example
1852 * @param[in] pOptions the shar options data structure
1853 * @param[in,out] pOptDesc the option descriptor for this option.
1854 */
1855static void
1856doOptInput_File_List(tOptions* pOptions, tOptDesc* pOptDesc)
1857{
1858    /*
1859     * Be sure the flag-code[0] handles special values for the options pointer
1860     * viz. (poptions <= OPTPROC_EMIT_LIMIT) *and also* the special flag bit
1861     * ((poptdesc->fOptState & OPTST_RESET) != 0) telling the option to
1862     * reset its state.
1863     */
1864    /* extracted from shar-opts.def, line 358 */
1865    char const * fnm = pOptDesc->optArg.argString;
1866    validate_opt_context (pOptions, pOptDesc);
1867    if (strcmp (fnm, "-") != 0) {
1868        FILE * fp = freopen(fnm, "r", stdin);
1869        if (fp != stdin)
1870            usage_message(_("Cannot reopen %s as stdin"), fnm);
1871    }
1872}
1873
1874/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1875/**
1876 * Code to handle the stdin-file-list option.
1877 * This option is actually a no-op.  It is a wrapper for
1878 * @option{--input-file-list=-}.
1879 * @param[in] pOptions the shar options data structure
1880 * @param[in,out] pOptDesc the option descriptor for this option.
1881 */
1882static void
1883doOptStdin_File_List(tOptions* pOptions, tOptDesc* pOptDesc)
1884{
1885    /*
1886     * Be sure the flag-code[0] handles special values for the options pointer
1887     * viz. (poptions <= OPTPROC_EMIT_LIMIT) *and also* the special flag bit
1888     * ((poptdesc->fOptState & OPTST_RESET) != 0) telling the option to
1889     * reset its state.
1890     */
1891    /* extracted from shar-opts.def, line 394 */
1892    SET_OPT_INPUT_FILE_LIST("-");
1893    (void)pOptDesc;
1894    (void)pOptions;
1895}
1896
1897/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1898/**
1899 * Code to handle the vanilla-operation option.
1900 * This option produces @samp{vanilla} shars which rely only upon the
1901 * existence of @command{echo}, @command{test} and @command{sed} in the
1902 * unpacking environment.
1903 *
1904 * It changes the default behavior from mixed mode
1905 * (@option{--mixed-uuencode}) to text mode (@option{--text-files}).
1906 * Warnings are produced if options are specified that will require
1907 * decompression or decoding in the unpacking environment.
1908 *
1909 * @param[in] pOptions the shar options data structure
1910 * @param[in,out] pOptDesc the option descriptor for this option.
1911 */
1912static void
1913doOptVanilla_Operation(tOptions* pOptions, tOptDesc* pOptDesc)
1914{
1915    /*
1916     * Be sure the flag-code[0] handles special values for the options pointer
1917     * viz. (poptions <= OPTPROC_EMIT_LIMIT) *and also* the special flag bit
1918     * ((poptdesc->fOptState & OPTST_RESET) != 0) telling the option to
1919     * reset its state.
1920     */
1921    /* extracted from shar-opts.def, line 590 */
1922    validate_opt_context (pOptions, pOptDesc);
1923
1924    SET_OPT_NO_CHARACTER_COUNT;
1925    SET_OPT_NO_TIMESTAMP;
1926    SET_OPT_NO_MD5_DIGEST;
1927    SET_OPT_NO_I18N;
1928    SET_OPT_NO_PIPING;
1929    SET_OPT_FORCE_PREFIX;
1930}
1931
1932/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1933/**
1934 * Code to handle the print-text-domain-dir option.
1935 * Prints the directory shar looks in to find messages files
1936 * for different languages, then immediately exits.
1937 * @param[in] pOptions the shar options data structure
1938 * @param[in,out] pOptDesc the option descriptor for this option.
1939 */
1940static void
1941doOptPrint_Text_Domain_Dir(tOptions* pOptions, tOptDesc* pOptDesc)
1942{
1943    /*
1944     * Be sure the flag-code[0] handles special values for the options pointer
1945     * viz. (poptions <= OPTPROC_EMIT_LIMIT) *and also* the special flag bit
1946     * ((poptdesc->fOptState & OPTST_RESET) != 0) telling the option to
1947     * reset its state.
1948     */
1949    /* extracted from shar-opts.def, line 745 */
1950    validate_opt_context (pOptions, pOptDesc);
1951
1952#if !defined ENABLE_NLS || defined HAVE_CATGETS \
1953    || (defined HAVE_GETTEXT && !defined __USE_GNU_GETTEXT)
1954    exit (EXIT_FAILURE);
1955#else
1956    puts (LOCALEDIR);
1957    exit (EXIT_SUCCESS);
1958#endif
1959}
1960
1961/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1962/**
1963 * Code to handle the silent option.
1964 *
1965 * @param[in] pOptions the shar options data structure
1966 * @param[in,out] pOptDesc the option descriptor for this option.
1967 */
1968static void
1969doOptSilent(tOptions* pOptions, tOptDesc* pOptDesc)
1970{
1971    int res = optionAlias(pOptions, pOptDesc, INDEX_OPT_QUIET);
1972    if ((res != 0) && ((pOptions->fOptSet & OPTPROC_ERRSTOP) != 0))
1973        USAGE(SHAR_EXIT_USAGE_ERROR);
1974
1975}
1976/* extracted from optmain.tlib near line 1250 */
1977
1978/**
1979 * Print a usage message with a format and va_list argument.
1980 * The optionUsage function is then invoked to print
1981 * the error usage text (somewhat abbreviated) and then exit.
1982 *
1983 * @param[in] fmt the message format string
1984 * @param[in] ap  the var-arg list.
1985 * @noreturn
1986 */
1987void
1988vusage_message(char const * fmt, va_list ap)
1989{
1990    char const * er_leader = _("shar usage error:\n");
1991    fputs(er_leader, stderr);
1992    vfprintf(stderr, fmt, ap);
1993    optionUsage(&sharOptions, SHAR_EXIT_USAGE_ERROR);
1994    /* NOTREACHED */
1995    exit(1);
1996}
1997
1998/**
1999 * Print a usage message with a format and a variable argument list.
2000 * vusage_message() is called to do the work.
2001 *
2002 * @param[in] fmt the message format string
2003 * @param[in] ... the argument list for the message
2004 * @noreturn
2005 */
2006void
2007usage_message(char const * fmt, ...)
2008{
2009    va_list ap;
2010    va_start(ap, fmt);
2011    vusage_message(fmt, ap);
2012    /* NOTREACHED */
2013    va_end(ap);
2014}
2015
2016/**
2017 * Print a fatal error message and die, \a va_list style.
2018 *
2019 * @param[in] exit_code  the value to call exit(3) with
2020 * @param[in] fmt        the death rattle message
2021 * @param[in] ap         the argument list for the message
2022 * @noreturn
2023 */
2024void
2025vdie(int exit_code, char const * fmt, va_list ap)
2026{
2027    char const * die_leader = _("shar fatal error:\n");
2028    fputs(die_leader, stderr);
2029    vfprintf(stderr, fmt, ap);
2030    fflush(stderr);
2031    exit(exit_code);
2032    /* NOTREACHED */
2033}
2034
2035/**
2036 * Print a fatal error message and die, var-arg style.
2037 *
2038 * @param[in] exit_code  the value to call exit(3) with
2039 * @param[in] fmt        the death rattle message
2040 * @param[in] ...        the list of arguments for the message
2041 * @noreturn
2042 */
2043void
2044die(int exit_code, char const * fmt, ...)
2045{
2046    va_list ap;
2047    va_start(ap, fmt);
2048    vdie(exit_code, fmt, ap);
2049    /* NOTREACHED */
2050    va_end(ap);
2051}
2052
2053/**
2054 * Print a file system error fatal error message and die.
2055 *
2056 * @param[in] exit_code  the value to call exit(3) with.
2057 * @param[in] op         the operation that failed.
2058 * @param[in] fname      the file name the operation was on.
2059 * @noreturn
2060 */
2061void
2062fserr(int exit_code, char const * op, char const * fname)
2063{
2064    char const * fserr_fmt = _("fserr %d (%s) performing '%s' on %s\n");
2065    die(exit_code, fserr_fmt, errno, strerror(errno), op, fname);
2066    /* NOTREACHED */
2067}
2068
2069/**
2070 * The directory containing the data associated with shar.
2071 */
2072#ifndef  PKGDATADIR
2073# define PKGDATADIR ""
2074#endif
2075
2076/**
2077 * Information about the person or institution that packaged shar
2078 * for the current distribution.
2079 */
2080#ifndef  WITH_PACKAGER
2081# define shar_packager_info NULL
2082#else
2083/** Packager information for shar. */
2084static char const shar_packager_info[] =
2085    "Packaged by " WITH_PACKAGER
2086
2087# ifdef WITH_PACKAGER_VERSION
2088        " ("WITH_PACKAGER_VERSION")"
2089# endif
2090
2091# ifdef WITH_PACKAGER_BUG_REPORTS
2092    "\nReport shar bugs to " WITH_PACKAGER_BUG_REPORTS
2093# endif
2094    "\n";
2095#endif
2096#ifndef __doxygen__
2097
2098#endif /* __doxygen__ */
2099/**
2100 * The option definitions for shar.  The one structure that
2101 * binds them all.
2102 */
2103tOptions sharOptions = {
2104    OPTIONS_STRUCT_VERSION,
2105    0, NULL,                    /* original argc + argv    */
2106    ( OPTPROC_BASE
2107    + OPTPROC_ERRSTOP
2108    + OPTPROC_SHORTOPT
2109    + OPTPROC_LONGOPT
2110    + OPTPROC_NO_REQ_OPT
2111    + OPTPROC_GNUUSAGE
2112    + OPTPROC_MISUSE ),
2113    0, NULL,                    /* current option index, current option */
2114    NULL,         NULL,         zPROGNAME,
2115    zRcName,      zCopyright,   zLicenseDescrip,
2116    zFullVersion, apzHomeList,  zUsageTitle,
2117    zExplain,     zDetail,      optDesc,
2118    zBugsAddr,                  /* address to send bugs to */
2119    NULL, NULL,                 /* extensions/saved state  */
2120    optionUsage, /* usage procedure */
2121    translate_option_strings,   /* translation procedure */
2122    /*
2123     *  Indexes to special options
2124     */
2125    { INDEX_OPT_MORE_HELP, /* more-help option index */
2126      INDEX_OPT_SAVE_OPTS, /* save option index */
2127      NO_EQUIVALENT, /* '-#' option index */
2128      NO_EQUIVALENT /* index of default opt */
2129    },
2130    49 /* full option count */, 44 /* user option count */,
2131    shar_full_usage, shar_short_usage,
2132    NULL, NULL,
2133    PKGDATADIR, shar_packager_info
2134};
2135
2136#if ENABLE_NLS
2137/**
2138 * This code is designed to translate translatable option text for the
2139 * shar program.  These translations happen upon entry
2140 * to optionProcess().
2141 */
2142#include <stdio.h>
2143#include <stdlib.h>
2144#include <string.h>
2145#include <unistd.h>
2146#ifdef HAVE_DCGETTEXT
2147# include <gettext.h>
2148#endif
2149#include <autoopts/usage-txt.h>
2150
2151static char * AO_gettext(char const * pz);
2152static void   coerce_it(void ** s);
2153
2154/**
2155 * AutoGen specific wrapper function for gettext.  It relies on the macro _()
2156 * to convert from English to the target language, then strdup-duplicates the
2157 * result string.  It tries the "libopts" domain first, then whatever has been
2158 * set via the \a textdomain(3) call.
2159 *
2160 * @param[in] pz the input text used as a lookup key.
2161 * @returns the translated text (if there is one),
2162 *   or the original text (if not).
2163 */
2164static char *
2165AO_gettext(char const * pz)
2166{
2167    char * res;
2168    if (pz == NULL)
2169        return NULL;
2170#ifdef HAVE_DCGETTEXT
2171    /*
2172     * While processing the option_xlateable_txt data, try to use the
2173     * "libopts" domain.  Once we switch to the option descriptor data,
2174     * do *not* use that domain.
2175     */
2176    if (option_xlateable_txt.field_ct != 0) {
2177        res = dgettext("libopts", pz);
2178        if (res == pz)
2179            res = (char *)VOIDP(_(pz));
2180    } else
2181        res = (char *)VOIDP(_(pz));
2182#else
2183    res = (char *)VOIDP(_(pz));
2184#endif
2185    if (res == pz)
2186        return res;
2187    res = strdup(res);
2188    if (res == NULL) {
2189        fputs(_("No memory for duping translated strings\n"), stderr);
2190        exit(SHAR_EXIT_OPTION_ERROR);
2191    }
2192    return res;
2193}
2194
2195/**
2196 * All the pointers we use are marked "* const", but they are stored in
2197 * writable memory.  Coerce the mutability and set the pointer.
2198 */
2199static void coerce_it(void ** s) { *s = AO_gettext(*s);
2200}
2201
2202/**
2203 * Translate all the translatable strings in the sharOptions
2204 * structure defined above.  This is done only once.
2205 */
2206static void
2207translate_option_strings(void)
2208{
2209    tOptions * const opts = &sharOptions;
2210
2211    /*
2212     *  Guard against re-translation.  It won't work.  The strings will have
2213     *  been changed by the first pass through this code.  One shot only.
2214     */
2215    if (option_xlateable_txt.field_ct != 0) {
2216        /*
2217         *  Do the translations.  The first pointer follows the field count
2218         *  field.  The field count field is the size of a pointer.
2219         */
2220        char ** ppz = (char**)VOIDP(&(option_xlateable_txt));
2221        int     ix  = option_xlateable_txt.field_ct;
2222
2223        do {
2224            ppz++; /* skip over field_ct */
2225            *ppz = AO_gettext(*ppz);
2226        } while (--ix > 0);
2227        /* prevent re-translation and disable "libopts" domain lookup */
2228        option_xlateable_txt.field_ct = 0;
2229
2230        coerce_it(VOIDP(&(opts->pzCopyright)));
2231        coerce_it(VOIDP(&(opts->pzCopyNotice)));
2232        coerce_it(VOIDP(&(opts->pzFullVersion)));
2233    }
2234}
2235#endif /* ENABLE_NLS */
2236
2237#ifdef DO_NOT_COMPILE_THIS_CODE_IT_IS_FOR_GETTEXT
2238/** I18N function strictly for xgettext.  Do not compile. */
2239static void bogus_function(void) {
2240  /* TRANSLATORS:
2241
2242     The following dummy function was crated solely so that xgettext can
2243     extract the correct strings.  These strings are actually referenced
2244     by a field name in the sharOptions structure noted in the
2245     comments below.  The literal text is defined in shar_opt_strs.
2246
2247     NOTE: the strings below are segmented with respect to the source string
2248     shar_opt_strs.  The strings above are handed off for translation
2249     at run time a paragraph at a time.  Consequently, they are presented here
2250     for translation a paragraph at a time.
2251
2252     ALSO: often the description for an option will reference another option
2253     by name.  These are set off with apostrophe quotes (I hope).  Do not
2254     translate option names.
2255   */
2256  /* referenced via sharOptions.pzCopyright */
2257  puts(_("shar (GNU sharutils) 4.15.2\n\
2258Copyright (C) 1994-2015 Free Software Foundation, Inc., all rights reserved.\n\
2259This is free software. It is licensed for use, modification and\n\
2260redistribution under the terms of the GNU General Public License,\n\
2261version 3 or later <http://gnu.org/licenses/gpl.html>\n"));
2262
2263  /* referenced via sharOptions.pzCopyNotice */
2264  puts(_("shar is free software: you can redistribute it and/or modify it under the\n\
2265terms of the GNU General Public License as published by the Free Software\n\
2266Foundation, either version 3 of the License, or (at your option) any later\n\
2267version.\n\n"));
2268  puts(_("shar is distributed in the hope that it will be useful, but WITHOUT ANY\n\
2269WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n\
2270FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more\n\
2271details.\n\n"));
2272  puts(_("You should have received a copy of the GNU General Public License along\n\
2273with this program.  If not, see <http://www.gnu.org/licenses/>.\n"));
2274
2275  /* referenced via sharOptions.pzUsageTitle */
2276  puts(_("shar (GNU sharutils) - create a shell archive\n\
2277Usage:  %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [<file>...]\n"));
2278
2279  /* referenced via sharOptions.pzExplain */
2280  puts(_("If no 'file's are specified, the list of input files is read from standard\n\
2281input.  Standard input must not be a terminal.\n"));
2282
2283  /* referenced via sharOptions.pzDetail */
2284  puts(_("'shar' creates \"shell archives\" (or shar files) which are in text format\n\
2285and can be emailed.  These files may be unpacked later by executing them\n\
2286with '/bin/sh'.  The resulting archive is sent to standard out unless the\n\
2287'-o' option is given.  A wide range of features provide extensive\n\
2288flexibility in manufacturing shars and in specifying 'shar' \"smartness\".\n\
2289Archives may be fairly simple ('--vanilla-operation') or essentially a\n\
2290mailable 'tar' archive.\n\n"));
2291  puts(_("Options may be specified in any order until a 'file' argument is\n\
2292recognized.  If the '--intermix-type' option has been specified, more\n\
2293compression and encoding options will be recognized between the 'file'\n\
2294arguments.\n\n"));
2295  puts(_("Though this program supports 'uuencode'-d files, they are deprecated.  If\n\
2296you are emailing files, please consider mime-encoded files.  If you do\n\
2297'uuencode', base64 is the preferred encoding method.\n"));
2298
2299  /* referenced via sharOptions.pzFullVersion */
2300  puts(_("shar (GNU sharutils) 4.15.2"));
2301
2302  /* referenced via sharOptions.pzFullUsage */
2303  puts(_("shar (GNU sharutils) - create a shell archive\n\
2304Usage:  shar [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [<file>...]\n\n"));
2305  puts(_("Specify compression:\n\
2306   -p, --intermix-type        specify compression for input files\n\
2307                                - prohibits the option 'vanilla-operation'\n"));
2308  puts(_("   -C, --compactor=PROG       specify compaction (compression) program PROG\n\
2309                                - prohibits the option 'vanilla-operation'\n\
2310                                - may appear multiple times\n\
2311                                - it must be known to shar: xz gzip bzip2\n"));
2312  puts(_("   -g, --level-of-compression=LEVEL\n\
2313                              pass LEVEL for compression\n\
2314                                - it must be in the range: 1 to 9\n\n"));
2315  puts(_("Specify file encoding methodology:\n\
2316   -M, --mixed-uuencode       decide uuencoding for each file\n"));
2317  puts(_("   -B, --uuencode             treat all files as binary\n\
2318                                - an alternate for mixed-uuencode\n"));
2319  puts(_("   -T, --text-files           treat all files as text\n\
2320                                - an alternate for mixed-uuencode\n\n"));
2321  puts(_("Specifying file selection and output modes:\n"));
2322  puts(_("   -o, --output-prefix=str    print output to file PREFIX.nn\n"));
2323  puts(_("   -l, --whole-size-limit=SIZE\n\
2324                              split archive, not files, to SIZE\n\
2325                                - requires the option 'output-prefix'\n\
2326                                - is scalable with a suffix: k/K/m/M/g/G/t/T\n\
2327                                - it must lie in one of the ranges:\n\
2328                                  8 to 1023, or 8192 to 4194304\n"));
2329  puts(_("   -L, --split-size-limit=SIZE\n\
2330                              split archive or files to SIZE\n\
2331                                - requires the option 'output-prefix'\n\
2332                                - is scalable with a suffix: k/K/m/M/g/G/t/T\n\
2333                                - it must lie in one of the ranges:\n\
2334                                  8 to 1023, or 8192 to 4194304\n\
2335                                - an alternate for 'whole-size-limit'\n"));
2336  puts(_("   -I, --input-file-list=FILE read file list from FILE\n\n"));
2337  puts(_("Controlling the shar headers:\n\
2338   -n, --archive-name=NAME    use NAME to document the archive\n"));
2339  puts(_("   -s, --submitter=NAME       override the submitter name with NAME\n"));
2340  puts(_("   -a, --net-headers          output Submitted-by: & Archive-name: headers\n\
2341                                - requires the option 'archive-name'\n"));
2342  puts(_("   -c, --cut-mark             start the shar with a cut line\n"));
2343  puts(_("   -t, --translate            translate messages in the script\n\n"));
2344  puts(_("Protecting against transmission issues:\n\
2345       --no-character-count   do not use `wc -c' to check size\n"));
2346  puts(_("   -D, --no-md5-digest        do not use md5sum digest to verify\n"));
2347  puts(_("   -F, --force-prefix         apply the prefix character on every line\n"));
2348  puts(_("   -d, --here-delimiter=DELIM use DELIM to delimit the files\n\n"));
2349  puts(_("Producing different kinds of shars:\n\
2350   -V, --vanilla-operation    produce very simple shars\n"));
2351  puts(_("   -P, --no-piping            use temporary files between programs\n"));
2352  puts(_("   -x, --no-check-existing    blindly overwrite existing files\n"));
2353  puts(_("   -X, --query-user           ask user before overwriting files\n\
2354                                - prohibits the option 'vanilla-operation'\n"));
2355  puts(_("   -m, --no-timestamp         do not restore modification times\n"));
2356  puts(_("   -Q, --quiet-unshar         avoid verbose messages at unshar time\n"));
2357  puts(_("   -f, --basename             restore in one directory, despite hierarchy\n\n"));
2358  puts(_("Internationalization options:\n\
2359       --no-i18n              do not internationalize\n"));
2360  puts(_("       --print-text-domain-dir  print directory with shar messages\n\n"));
2361  puts(_("User feedback/entertainment:\n\
2362   -q, --quiet                do not output verbose messages\n"));
2363  puts(_("       --silent               an alias for the 'quiet' option\n\n"));
2364  puts(_("Version, usage and configuration options:\n"));
2365  puts(_("   -v, --version[=MODE]       output version information and exit\n"));
2366  puts(_("   -h, --help                 display extended usage information and exit\n"));
2367  puts(_("   -!, --more-help            extended usage information passed thru pager\n"));
2368  puts(_("   -R, --save-opts[=FILE]     save the option state to a config file FILE\n"));
2369  puts(_("   -r, --load-opts=FILE       load options from the config file FILE\n\
2370                                - disabled with '--no-load-opts'\n\
2371                                - may appear multiple times\n\n"));
2372  puts(_("Options are specified by doubled hyphens and their name or by a single\n\
2373hyphen and the flag character.\n\
2374If no 'file's are specified, the list of input files is read from a\n\
2375standard input.  Standard input must not be a terminal.\n\n"));
2376  puts(_("The following option preset mechanisms are supported:\n"));
2377  puts(_(" - reading file $HOME/.sharrc\n\n\
2378'shar' creates \"shell archives\" (or shar files) which are in text format\n\
2379and can be emailed.  These files may be unpacked later by executing them\n\
2380with '/bin/sh'.  The resulting archive is sent to standard out unless the\n\
2381'-o' option is given.  A wide range of features provide extensive\n\
2382flexibility in manufacturing shars and in specifying 'shar' \"smartness\".\n\
2383Archives may be fairly simple ('--vanilla-operation') or essentially a\n\
2384mailable 'tar' archive.\n\n"));
2385  puts(_("Options may be specified in any order until a 'file' argument is\n\
2386recognized.  If the '--intermix-type' option has been specified, more\n\
2387compression and encoding options will be recognized between the 'file'\n\
2388arguments.\n\n"));
2389  puts(_("Though this program supports 'uuencode'-d files, they are deprecated.  If\n\
2390you are emailing files, please consider mime-encoded files.  If you do\n\
2391'uuencode', base64 is the preferred encoding method.\n\n\
2392Please send bug reports to:  <bug-gnu-utils@gnu.org>\n"));
2393
2394  /* referenced via sharOptions.pzShortUsage */
2395  puts(_("shar (GNU sharutils) - create a shell archive\n\
2396Usage:  shar [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [<file>...]\n\
2397Try 'shar --help' for more information.\n"));
2398  /* LIBOPTS-MESSAGES: */
2399#line 67 "../autoopts.c"
2400  puts(_("allocation of %d bytes failed\n"));
2401#line 93 "../autoopts.c"
2402  puts(_("allocation of %d bytes failed\n"));
2403#line 53 "../init.c"
2404  puts(_("AutoOpts function called without option descriptor\n"));
2405#line 86 "../init.c"
2406  puts(_("\tThis exceeds the compiled library version:  "));
2407#line 84 "../init.c"
2408  puts(_("Automated Options Processing Error!\n"
2409       "\t%s called AutoOpts function with structure version %d:%d:%d.\n"));
2410#line 80 "../autoopts.c"
2411  puts(_("realloc of %d bytes at 0x%p failed\n"));
2412#line 88 "../init.c"
2413  puts(_("\tThis is less than the minimum library version:  "));
2414#line 121 "../version.c"
2415  puts(_("Automated Options version %s\n"
2416       "\tCopyright (C) 1999-2014 by Bruce Korb - all rights reserved\n"));
2417#line 87 "../makeshell.c"
2418  puts(_("(AutoOpts bug):  %s.\n"));
2419#line 90 "../reset.c"
2420  puts(_("optionResetOpt() called, but reset-option not configured"));
2421#line 292 "../usage.c"
2422  puts(_("could not locate the 'help' option"));
2423#line 336 "../autoopts.c"
2424  puts(_("optionProcess() was called with invalid data"));
2425#line 748 "../usage.c"
2426  puts(_("invalid argument type specified"));
2427#line 598 "../find.c"
2428  puts(_("defaulted to option with optional arg"));
2429#line 76 "../alias.c"
2430  puts(_("aliasing option is out of range."));
2431#line 234 "../enum.c"
2432  puts(_("%s error:  the keyword '%s' is ambiguous for %s\n"));
2433#line 108 "../find.c"
2434  puts(_("  The following options match:\n"));
2435#line 293 "../find.c"
2436  puts(_("%s: ambiguous option name: %s (matches %d options)\n"));
2437#line 161 "../check.c"
2438  puts(_("%s: Command line arguments required\n"));
2439#line 43 "../alias.c"
2440  puts(_("%d %s%s options allowed\n"));
2441#line 94 "../makeshell.c"
2442  puts(_("%s error %d (%s) calling %s for '%s'\n"));
2443#line 306 "../makeshell.c"
2444  puts(_("interprocess pipe"));
2445#line 168 "../version.c"
2446  puts(_("error: version option argument '%c' invalid.  Use:\n"
2447       "\t'v' - version only\n"
2448       "\t'c' - version and copyright\n"
2449       "\t'n' - version and full copyright notice\n"));
2450#line 58 "../check.c"
2451  puts(_("%s error:  the '%s' and '%s' options conflict\n"));
2452#line 217 "../find.c"
2453  puts(_("%s: The '%s' option has been disabled."));
2454#line 430 "../find.c"
2455  puts(_("%s: The '%s' option has been disabled."));
2456#line 38 "../alias.c"
2457  puts(_("-equivalence"));
2458#line 469 "../find.c"
2459  puts(_("%s: illegal option -- %c\n"));
2460#line 110 "../reset.c"
2461  puts(_("%s: illegal option -- %c\n"));
2462#line 271 "../find.c"
2463  puts(_("%s: illegal option -- %s\n"));
2464#line 755 "../find.c"
2465  puts(_("%s: illegal option -- %s\n"));
2466#line 118 "../reset.c"
2467  puts(_("%s: illegal option -- %s\n"));
2468#line 335 "../find.c"
2469  puts(_("%s: unknown vendor extension option -- %s\n"));
2470#line 159 "../enum.c"
2471  puts(_("  or an integer from %d through %d\n"));
2472#line 169 "../enum.c"
2473  puts(_("  or an integer from %d through %d\n"));
2474#line 747 "../usage.c"
2475  puts(_("%s error:  invalid option descriptor for %s\n"));
2476#line 1081 "../usage.c"
2477  puts(_("%s error:  invalid option descriptor for %s\n"));
2478#line 385 "../find.c"
2479  puts(_("%s: invalid option name: %s\n"));
2480#line 527 "../find.c"
2481  puts(_("%s: The '%s' option requires an argument.\n"));
2482#line 156 "../autoopts.c"
2483  puts(_("(AutoOpts bug):  Equivalenced option '%s' was equivalenced to both\n"
2484       "\t'%s' and '%s'."));
2485#line 94 "../check.c"
2486  puts(_("%s error:  The %s option is required\n"));
2487#line 632 "../find.c"
2488  puts(_("%s: The '%s' option cannot have an argument.\n"));
2489#line 151 "../check.c"
2490  puts(_("%s: Command line arguments are not allowed.\n"));
2491#line 535 "../save.c"
2492  puts(_("error %d (%s) creating %s\n"));
2493#line 234 "../enum.c"
2494  puts(_("%s error:  '%s' does not match any %s keywords.\n"));
2495#line 93 "../reset.c"
2496  puts(_("%s error: The '%s' option requires an argument.\n"));
2497#line 184 "../save.c"
2498  puts(_("error %d (%s) stat-ing %s\n"));
2499#line 238 "../save.c"
2500  puts(_("error %d (%s) stat-ing %s\n"));
2501#line 143 "../restore.c"
2502  puts(_("%s error: no saved option state\n"));
2503#line 231 "../autoopts.c"
2504  puts(_("'%s' is not a command line option.\n"));
2505#line 111 "../time.c"
2506  puts(_("%s error:  '%s' is not a recognizable date/time.\n"));
2507#line 132 "../save.c"
2508  puts(_("'%s' not defined\n"));
2509#line 50 "../time.c"
2510  puts(_("%s error:  '%s' is not a recognizable time duration.\n"));
2511#line 92 "../check.c"
2512  puts(_("%s error:  The %s option must appear %d times.\n"));
2513#line 164 "../numeric.c"
2514  puts(_("%s error:  '%s' is not a recognizable number.\n"));
2515#line 200 "../enum.c"
2516  puts(_("%s error:  %s exceeds %s keyword count\n"));
2517#line 330 "../usage.c"
2518  puts(_("Try '%s %s' for more information.\n"));
2519#line 45 "../alias.c"
2520  puts(_("one %s%s option allowed\n"));
2521#line 208 "../makeshell.c"
2522  puts(_("standard output"));
2523#line 943 "../makeshell.c"
2524  puts(_("standard output"));
2525#line 274 "../usage.c"
2526  puts(_("standard output"));
2527#line 415 "../usage.c"
2528  puts(_("standard output"));
2529#line 625 "../usage.c"
2530  puts(_("standard output"));
2531#line 175 "../version.c"
2532  puts(_("standard output"));
2533#line 274 "../usage.c"
2534  puts(_("standard error"));
2535#line 415 "../usage.c"
2536  puts(_("standard error"));
2537#line 625 "../usage.c"
2538  puts(_("standard error"));
2539#line 175 "../version.c"
2540  puts(_("standard error"));
2541#line 208 "../makeshell.c"
2542  puts(_("write"));
2543#line 943 "../makeshell.c"
2544  puts(_("write"));
2545#line 273 "../usage.c"
2546  puts(_("write"));
2547#line 414 "../usage.c"
2548  puts(_("write"));
2549#line 624 "../usage.c"
2550  puts(_("write"));
2551#line 174 "../version.c"
2552  puts(_("write"));
2553#line 60 "../numeric.c"
2554  puts(_("%s error:  %s option value %ld is out of range.\n"));
2555#line 44 "../check.c"
2556  puts(_("%s error:  %s option requires the %s option\n"));
2557#line 131 "../save.c"
2558  puts(_("%s warning:  cannot save options - %s not regular file\n"));
2559#line 183 "../save.c"
2560  puts(_("%s warning:  cannot save options - %s not regular file\n"));
2561#line 237 "../save.c"
2562  puts(_("%s warning:  cannot save options - %s not regular file\n"));
2563#line 256 "../save.c"
2564  puts(_("%s warning:  cannot save options - %s not regular file\n"));
2565#line 534 "../save.c"
2566  puts(_("%s warning:  cannot save options - %s not regular file\n"));
2567  /* END-LIBOPTS-MESSAGES */
2568}
2569#endif /* uncompilable code */
2570#ifdef  __cplusplus
2571}
2572#endif
2573/* shar-opts.c ends here */
2574