diff options
author | Justus Winter <[email protected]> | 2015-11-26 10:46:35 +0000 |
---|---|---|
committer | Justus Winter <[email protected]> | 2015-11-26 10:46:35 +0000 |
commit | 35c0c8b211bc891335e822379b33ea34fbc1f84f (patch) | |
tree | ffe13c119ff430f7979c15454bad31980b302e40 | |
parent | tests: Add tests for gpgtar and gpg-zip. (diff) | |
download | gnupg-35c0c8b211bc891335e822379b33ea34fbc1f84f.tar.gz gnupg-35c0c8b211bc891335e822379b33ea34fbc1f84f.zip |
tools/gpgtar: Rework argument parsing.
* tools/gpgtar.c (main): Move argument parsing into its own function.
Signed-off-by: Justus Winter <[email protected]>
-rw-r--r-- | tools/gpgtar.c | 92 |
1 files changed, 52 insertions, 40 deletions
diff --git a/tools/gpgtar.c b/tools/gpgtar.c index 991fbedf6..04d23b578 100644 --- a/tools/gpgtar.c +++ b/tools/gpgtar.c @@ -160,65 +160,46 @@ set_cmd (enum cmd_and_opt_values *ret_cmd, enum cmd_and_opt_values new_cmd) ASSUAN_SYSTEM_NPTH_IMPL; -/* gpgtar main. */ -int -main (int argc, char **argv) -{ - gpg_error_t err; - ARGPARSE_ARGS pargs; - const char *fname; - int no_more_options = 0; - enum cmd_and_opt_values cmd = 0; - int skip_crypto = 0; - const char *files_from = NULL; - int null_names = 0; +/* Global flags. */ +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); - gnupg_reopen_std (GPGTAR_NAME); - set_strusage (my_strusage); - log_set_prefix (GPGTAR_NAME, 1); - - /* Make sure that our subsystems are ready. */ - i18n_init(); - init_common_subsystems (&argc, &argv); - npth_init (); - assuan_set_assuan_log_prefix (log_get_prefix (NULL)); - assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT); - assuan_set_system_hooks (ASSUAN_SYSTEM_NPTH); - assuan_sock_init (); +/* Command line parsing. */ +static void +parse_arguments (ARGPARSE_ARGS *pargs) +{ + int no_more_options = 0; - /* Parse the command line. */ - pargs.argc = &argc; - pargs.argv = &argv; - pargs.flags = ARGPARSE_FLAG_KEEP; - while (!no_more_options && optfile_parse (NULL, NULL, NULL, &pargs, opts)) + while (!no_more_options && optfile_parse (NULL, NULL, NULL, pargs, opts)) { - switch (pargs.r_opt) + 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 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 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); + set_cmd (&cmd, pargs->r_opt); break; case oRecipient: - add_to_strlist (&opt.recipients, pargs.r.ret_str); + 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; + opt.user = pargs->r.ret_str; break; case oSymmetric: @@ -228,7 +209,7 @@ main (int argc, char **argv) break; case oGpgProgram: - opt.gpg_program = pargs.r.ret_str; + opt.gpg_program = pargs->r.ret_str; break; case oSkipCrypto: @@ -238,9 +219,40 @@ main (int argc, char **argv) case oOpenPGP: /* Dummy option for now. */ break; case oCMS: /* Dummy option for now. */ break; - default: pargs.err = 2; break; + default: pargs->err = 2; break; } } +} + + +/* gpgtar main. */ +int +main (int argc, char **argv) +{ + gpg_error_t err; + const char *fname; + ARGPARSE_ARGS pargs; + + assert (sizeof (struct ustar_raw_header) == 512); + + gnupg_reopen_std (GPGTAR_NAME); + set_strusage (my_strusage); + log_set_prefix (GPGTAR_NAME, 1); + + /* Make sure that our subsystems are ready. */ + i18n_init(); + init_common_subsystems (&argc, &argv); + npth_init (); + assuan_set_assuan_log_prefix (log_get_prefix (NULL)); + assuan_set_gpg_err_source (GPG_ERR_SOURCE_DEFAULT); + assuan_set_system_hooks (ASSUAN_SYSTEM_NPTH); + assuan_sock_init (); + + /* Parse the command line. */ + pargs.argc = &argc; + pargs.argv = &argv; + pargs.flags = ARGPARSE_FLAG_KEEP; + parse_arguments (&pargs); if ((files_from && !null_names) || (!files_from && null_names)) log_error ("--files-from and --null may only be used in conjunction\n"); |