diff --git a/tools/Makefile.am b/tools/Makefile.am index a793ccaf4..a26881174 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -142,9 +142,8 @@ gpgtar_SOURCES = \ gpgtar-extract.c \ gpgtar-list.c \ no-libgcrypt.c -gpgtar_CFLAGS = $(GPG_ERROR_CFLAGS) $(NPTH_CFLAGS) $(LIBASSUAN_CFLAGS) -gpgtar_LDADD = $(libcommonpth) $(GPG_ERROR_LIBS) \ - $(NPTH_LIBS) $(LIBASSUAN_LIBS) \ +gpgtar_CFLAGS = $(GPG_ERROR_CFLAGS) +gpgtar_LDADD = $(libcommon) $(GPG_ERROR_LIBS) \ $(LIBINTL) $(NETLIBS) $(LIBICONV) $(W32SOCKLIBS) diff --git a/tools/gpgtar-create.c b/tools/gpgtar-create.c index cc82889ab..8975fc6ba 100644 --- a/tools/gpgtar-create.c +++ b/tools/gpgtar-create.c @@ -36,7 +36,7 @@ #include #include "i18n.h" -#include "../common/call-gpg.h" +#include "../common/sh-exectool.h" #include "../common/sysutils.h" #include "gpgtar.h" @@ -888,16 +888,40 @@ gpgtar_create (char **inpattern, int encrypt) if (encrypt) { + int i; + strlist_t arg; + const char **argv; + err = es_fseek (outstream, 0, SEEK_SET); if (err) goto leave; - err = gpg_encrypt_stream (NULL, - opt.gpg_program, - opt.gpg_arguments, - outstream, - opt.recipients, - cipher_stream); + argv = xtrycalloc (strlist_length (opt.gpg_arguments) + + 2 * strlist_length (opt.recipients) + + 2, + sizeof *argv); + if (argv == NULL) + { + err = gpg_error_from_syserror (); + goto leave; + } + i = 0; + argv[i++] = "--encrypt"; + for (arg = opt.recipients; arg; arg = arg->next) + { + argv[i++] = "--recipient"; + argv[i++] = 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) + + 2); + + err = sh_exec_tool_stream (opt.gpg_program, argv, + outstream, cipher_stream); + xfree (argv); if (err) goto leave; } diff --git a/tools/gpgtar-extract.c b/tools/gpgtar-extract.c index 728737d78..cb8074ca0 100644 --- a/tools/gpgtar-extract.c +++ b/tools/gpgtar-extract.c @@ -28,7 +28,7 @@ #include #include "i18n.h" -#include "../common/call-gpg.h" +#include "../common/sh-exectool.h" #include "../common/sysutils.h" #include "gpgtar.h" @@ -299,6 +299,10 @@ gpgtar_extract (const char *filename, int decrypt) if (decrypt) { + int i; + strlist_t arg; + const char **argv; + cipher_stream = stream; stream = es_fopenmem (0, "rwb"); if (! stream) @@ -306,8 +310,24 @@ gpgtar_extract (const char *filename, int decrypt) err = gpg_error_from_syserror (); goto leave; } - err = gpg_decrypt_stream (NULL, opt.gpg_program, opt.gpg_arguments, - cipher_stream, stream); + + argv = xtrycalloc (strlist_length (opt.gpg_arguments) + 2, + sizeof *argv); + if (argv == NULL) + { + 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 = sh_exec_tool_stream (opt.gpg_program, argv, + cipher_stream, stream); + xfree (argv); if (err) goto leave; diff --git a/tools/gpgtar-list.c b/tools/gpgtar-list.c index cb2ca5dac..7bf4d494b 100644 --- a/tools/gpgtar-list.c +++ b/tools/gpgtar-list.c @@ -26,7 +26,7 @@ #include "i18n.h" #include "gpgtar.h" -#include "../common/call-gpg.h" +#include "../common/sh-exectool.h" @@ -299,6 +299,10 @@ gpgtar_list (const char *filename, int decrypt) if (decrypt) { + int i; + strlist_t arg; + const char **argv; + cipher_stream = stream; stream = es_fopenmem (0, "rwb"); if (! stream) @@ -306,8 +310,24 @@ gpgtar_list (const char *filename, int decrypt) err = gpg_error_from_syserror (); goto leave; } - err = gpg_decrypt_stream (NULL, opt.gpg_program, opt.gpg_arguments, - cipher_stream, stream); + + argv = xtrycalloc (strlist_length (opt.gpg_arguments) + 2, + sizeof *argv); + if (argv == NULL) + { + 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 = sh_exec_tool_stream (opt.gpg_program, argv, + cipher_stream, stream); + xfree (argv); if (err) goto leave; diff --git a/tools/gpgtar.c b/tools/gpgtar.c index a09d2f004..100fb160e 100644 --- a/tools/gpgtar.c +++ b/tools/gpgtar.c @@ -27,7 +27,6 @@ gpg. So here we go. */ #include -#include #include #include #include @@ -39,7 +38,6 @@ #include "util.h" #include "i18n.h" #include "sysutils.h" -#include "../common/asshelp.h" #include "../common/openpgpdefs.h" #include "../common/init.h" #include "../common/strlist.h" @@ -281,11 +279,6 @@ shell_parse_argv (const char *s, int *r_argc, char ***r_argv) (*r_argv)[i] = list->d, list = list->next; return 0; } - -/* Define Assuan hooks for NPTH. */ - -ASSUAN_SYSTEM_NPTH_IMPL; - /* Global flags. */ enum cmd_and_opt_values cmd = 0; @@ -412,11 +405,6 @@ main (int argc, char **argv) /* 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; @@ -442,9 +430,11 @@ main (int argc, char **argv) log_info (_("NOTE: '%s' is not considered an option\n"), argv[i]); } + if (! opt.gpg_program) + opt.gpg_program = gnupg_module_name (GNUPG_MODULE_NAME_GPG); + if (opt.verbose > 1) opt.debug_level = 1024; - setup_libassuan_logging (&opt.debug_level); switch (cmd) {