mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-08 12:44:23 +01:00
tools/gpgtar: Rework argument parsing.
* tools/gpgtar.c (main): Move argument parsing into its own function. Signed-off-by: Justus Winter <justus@g10code.com>
This commit is contained in:
parent
556e8c4426
commit
35c0c8b211
122
tools/gpgtar.c
122
tools/gpgtar.c
@ -159,19 +159,79 @@ set_cmd (enum cmd_and_opt_values *ret_cmd, enum cmd_and_opt_values new_cmd)
|
|||||||
|
|
||||||
ASSUAN_SYSTEM_NPTH_IMPL;
|
ASSUAN_SYSTEM_NPTH_IMPL;
|
||||||
|
|
||||||
|
|
||||||
|
/* Global flags. */
|
||||||
|
enum cmd_and_opt_values cmd = 0;
|
||||||
|
int skip_crypto = 0;
|
||||||
|
const char *files_from = NULL;
|
||||||
|
int null_names = 0;
|
||||||
|
|
||||||
|
|
||||||
|
/* Command line parsing. */
|
||||||
|
static void
|
||||||
|
parse_arguments (ARGPARSE_ARGS *pargs)
|
||||||
|
{
|
||||||
|
int no_more_options = 0;
|
||||||
|
|
||||||
|
while (!no_more_options && optfile_parse (NULL, NULL, NULL, pargs, opts))
|
||||||
|
{
|
||||||
|
switch (pargs->r_opt)
|
||||||
|
{
|
||||||
|
case oOutput: opt.outfile = pargs->r.ret_str; break;
|
||||||
|
case oDirectory: opt.directory = pargs->r.ret_str; break;
|
||||||
|
case oSetFilename: opt.filename = pargs->r.ret_str; break;
|
||||||
|
case oQuiet: opt.quiet = 1; break;
|
||||||
|
case oVerbose: opt.verbose++; break;
|
||||||
|
case oNoVerbose: opt.verbose = 0; break;
|
||||||
|
case oFilesFrom: files_from = pargs->r.ret_str; break;
|
||||||
|
case oNull: null_names = 1; break;
|
||||||
|
|
||||||
|
case aList:
|
||||||
|
case aDecrypt:
|
||||||
|
case aEncrypt:
|
||||||
|
case aSign:
|
||||||
|
set_cmd (&cmd, pargs->r_opt);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case oRecipient:
|
||||||
|
add_to_strlist (&opt.recipients, pargs->r.ret_str);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case oUser:
|
||||||
|
log_info ("note: ignoring option --user\n");
|
||||||
|
opt.user = pargs->r.ret_str;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case oSymmetric:
|
||||||
|
log_info ("note: ignoring option --symmetric\n");
|
||||||
|
set_cmd (&cmd, aEncrypt);
|
||||||
|
opt.symmetric = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case oGpgProgram:
|
||||||
|
opt.gpg_program = pargs->r.ret_str;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case oSkipCrypto:
|
||||||
|
skip_crypto = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case oOpenPGP: /* Dummy option for now. */ break;
|
||||||
|
case oCMS: /* Dummy option for now. */ break;
|
||||||
|
|
||||||
|
default: pargs->err = 2; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* gpgtar main. */
|
/* gpgtar main. */
|
||||||
int
|
int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
gpg_error_t err;
|
gpg_error_t err;
|
||||||
ARGPARSE_ARGS pargs;
|
|
||||||
const char *fname;
|
const char *fname;
|
||||||
int no_more_options = 0;
|
ARGPARSE_ARGS pargs;
|
||||||
enum cmd_and_opt_values cmd = 0;
|
|
||||||
int skip_crypto = 0;
|
|
||||||
const char *files_from = NULL;
|
|
||||||
int null_names = 0;
|
|
||||||
|
|
||||||
assert (sizeof (struct ustar_raw_header) == 512);
|
assert (sizeof (struct ustar_raw_header) == 512);
|
||||||
|
|
||||||
@ -192,55 +252,7 @@ main (int argc, char **argv)
|
|||||||
pargs.argc = &argc;
|
pargs.argc = &argc;
|
||||||
pargs.argv = &argv;
|
pargs.argv = &argv;
|
||||||
pargs.flags = ARGPARSE_FLAG_KEEP;
|
pargs.flags = ARGPARSE_FLAG_KEEP;
|
||||||
while (!no_more_options && optfile_parse (NULL, NULL, NULL, &pargs, opts))
|
parse_arguments (&pargs);
|
||||||
{
|
|
||||||
switch (pargs.r_opt)
|
|
||||||
{
|
|
||||||
case oOutput: opt.outfile = pargs.r.ret_str; break;
|
|
||||||
case oDirectory: opt.directory = pargs.r.ret_str; break;
|
|
||||||
case oSetFilename: opt.filename = pargs.r.ret_str; break;
|
|
||||||
case oQuiet: opt.quiet = 1; break;
|
|
||||||
case oVerbose: opt.verbose++; break;
|
|
||||||
case oNoVerbose: opt.verbose = 0; break;
|
|
||||||
case oFilesFrom: files_from = pargs.r.ret_str; break;
|
|
||||||
case oNull: null_names = 1; break;
|
|
||||||
|
|
||||||
case aList:
|
|
||||||
case aDecrypt:
|
|
||||||
case aEncrypt:
|
|
||||||
case aSign:
|
|
||||||
set_cmd (&cmd, pargs.r_opt);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case oRecipient:
|
|
||||||
add_to_strlist (&opt.recipients, pargs.r.ret_str);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case oUser:
|
|
||||||
log_info ("note: ignoring option --user\n");
|
|
||||||
opt.user = pargs.r.ret_str;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case oSymmetric:
|
|
||||||
log_info ("note: ignoring option --symmetric\n");
|
|
||||||
set_cmd (&cmd, aEncrypt);
|
|
||||||
opt.symmetric = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case oGpgProgram:
|
|
||||||
opt.gpg_program = pargs.r.ret_str;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case oSkipCrypto:
|
|
||||||
skip_crypto = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case oOpenPGP: /* Dummy option for now. */ break;
|
|
||||||
case oCMS: /* Dummy option for now. */ break;
|
|
||||||
|
|
||||||
default: pargs.err = 2; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((files_from && !null_names) || (!files_from && null_names))
|
if ((files_from && !null_names) || (!files_from && null_names))
|
||||||
log_error ("--files-from and --null may only be used in conjunction\n");
|
log_error ("--files-from and --null may only be used in conjunction\n");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user