diff options
author | Werner Koch <[email protected]> | 2016-05-24 13:54:48 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2016-05-24 14:07:09 +0000 |
commit | 91bc7833836f19256d56984c94cacf44853ff5c8 (patch) | |
tree | 60e051b155da3da800f797ba683753550bddb5b4 /tools/gpgtar-create.c | |
parent | common: Add simple dynamic array function. (diff) | |
download | gnupg-91bc7833836f19256d56984c94cacf44853ff5c8.tar.gz gnupg-91bc7833836f19256d56984c94cacf44853ff5c8.zip |
gpgtar: Simplify code by using ccparray.
* tools/gpgtar-create.c (gpgtar_create): Use ccparray functions.
* tools/gpgtar-extract.c (gpgtar_extract): Ditto.
* tools/gpgtar-list.c (gpgtar_list): Ditto.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'tools/gpgtar-create.c')
-rw-r--r-- | tools/gpgtar-create.c | 50 |
1 files changed, 22 insertions, 28 deletions
diff --git a/tools/gpgtar-create.c b/tools/gpgtar-create.c index 968dca695..f7c8b1aa3 100644 --- a/tools/gpgtar-create.c +++ b/tools/gpgtar-create.c @@ -38,6 +38,7 @@ #include "i18n.h" #include "../common/exectool.h" #include "../common/sysutils.h" +#include "../common/ccparray.h" #include "gpgtar.h" #ifndef HAVE_LSTAT @@ -888,8 +889,8 @@ gpgtar_create (char **inpattern, int encrypt, int sign) if (encrypt || sign) { - int i; strlist_t arg; + ccparray_t ccp; const char **argv; err = es_fseek (outstream, 0, SEEK_SET); @@ -899,43 +900,36 @@ gpgtar_create (char **inpattern, int encrypt, int sign) /* '--encrypt' may be combined with '--symmetric', but 'encrypt' is set either way. Clear it if no recipients are specified. XXX: Fix command handling. */ - if (opt.symmetric && opt.recipients == NULL) - encrypt = 0; - - argv = xtrycalloc (strlist_length (opt.gpg_arguments) - + 2 * strlist_length (opt.recipients) - + 1 + !!encrypt + !!sign + 2 * !!opt.user - + !!opt.symmetric, - sizeof *argv); - if (argv == NULL) - { - err = gpg_error_from_syserror (); - goto leave; - } - i = 0; + if (opt.symmetric && opt.recipients == NULL) + encrypt = 0; + + ccparray_init (&ccp, 0); if (encrypt) - argv[i++] = "--encrypt"; + ccparray_put (&ccp, "--encrypt"); if (sign) - argv[i++] = "--sign"; + ccparray_put (&ccp, "--sign"); if (opt.user) { - argv[i++] = "--local-user"; - argv[i++] = opt.user; + ccparray_put (&ccp, "--local-user"); + ccparray_put (&ccp, opt.user); } if (opt.symmetric) - argv[i++] = "--symmetric"; + ccparray_put (&ccp, "--symmetric"); for (arg = opt.recipients; arg; arg = arg->next) { - argv[i++] = "--recipient"; - argv[i++] = arg->d; + ccparray_put (&ccp, "--recipient"); + ccparray_put (&ccp, arg->d); } for (arg = opt.gpg_arguments; arg; arg = arg->next) - argv[i++] = arg->d; - argv[i++] = NULL; - assert (i == strlist_length (opt.gpg_arguments) - + 2 * strlist_length (opt.recipients) - + 1 + !!encrypt + !!sign + 2 * !!opt.user - + !!opt.symmetric); + ccparray_put (&ccp, arg->d); + + ccparray_put (&ccp, NULL); + argv = ccparray_get (&ccp, NULL); + if (!argv) + { + err = gpg_error_from_syserror (); + goto leave; + } err = gnupg_exec_tool_stream (opt.gpg_program, argv, outstream, cipher_stream); |