diff options
Diffstat (limited to 'tools/gpgtar-list.c')
-rw-r--r-- | tools/gpgtar-list.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/tools/gpgtar-list.c b/tools/gpgtar-list.c index 25c70d2a5..930712a7f 100644 --- a/tools/gpgtar-list.c +++ b/tools/gpgtar-list.c @@ -27,6 +27,7 @@ #include "i18n.h" #include "gpgtar.h" #include "../common/exectool.h" +#include "../common/ccparray.h" @@ -299,8 +300,8 @@ gpgtar_list (const char *filename, int decrypt) if (decrypt) { - int i; strlist_t arg; + ccparray_t ccp; const char **argv; cipher_stream = stream; @@ -311,19 +312,19 @@ gpgtar_list (const char *filename, int decrypt) goto leave; } - argv = xtrycalloc (strlist_length (opt.gpg_arguments) + 2, - sizeof *argv); - if (argv == NULL) + ccparray_init (&ccp, 0); + + ccparray_put (&ccp, "--decrypt"); + for (arg = opt.gpg_arguments; arg; arg = arg->next) + ccparray_put (&ccp, arg->d); + + ccparray_put (&ccp, NULL); + argv = ccparray_get (&ccp, NULL); + if (!argv) { err = gpg_error_from_syserror (); goto leave; } - i = 0; - argv[i++] = "--decrypt"; - for (arg = opt.gpg_arguments; arg; arg = arg->next) - argv[i++] = arg->d; - argv[i++] = NULL; - assert (i == strlist_length (opt.gpg_arguments) + 2); err = gnupg_exec_tool_stream (opt.gpg_program, argv, cipher_stream, stream); |