diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/gpgtar-extract.c | 5 | ||||
-rw-r--r-- | tools/gpgtar-list.c | 10 |
2 files changed, 11 insertions, 4 deletions
diff --git a/tools/gpgtar-extract.c b/tools/gpgtar-extract.c index 5ec22e8f7..d23ccc579 100644 --- a/tools/gpgtar-extract.c +++ b/tools/gpgtar-extract.c @@ -492,7 +492,8 @@ gpgtar_extract (const char *filename, int decrypt) #endif err = gpgrt_process_spawn (opt.gpg_program, argv, ((filename ? 0 : GPGRT_PROCESS_STDIN_KEEP) - | GPGRT_PROCESS_STDOUT_PIPE), act, &proc); + | GPGRT_PROCESS_STDOUT_PIPE + | GPGRT_PROCESS_STDERR_KEEP), act, &proc); gpgrt_spawn_actions_release (act); xfree (argv); if (err) @@ -525,6 +526,8 @@ gpgtar_extract (const char *filename, int decrypt) for (;;) { err = gpgtar_read_header (stream, tarinfo, &header, &extheader); + if (!err && !header) + break; /* End of archive. */ if (err || header == NULL) goto leave; diff --git a/tools/gpgtar-list.c b/tools/gpgtar-list.c index 07056575d..9f2eca318 100644 --- a/tools/gpgtar-list.c +++ b/tools/gpgtar-list.c @@ -527,7 +527,8 @@ gpgtar_list (const char *filename, int decrypt) #endif err = gpgrt_process_spawn (opt.gpg_program, argv, ((filename ? 0 : GPGRT_PROCESS_STDIN_KEEP) - | GPGRT_PROCESS_STDOUT_PIPE), act, &proc); + | GPGRT_PROCESS_STDOUT_PIPE + | GPGRT_PROCESS_STDERR_KEEP), act, &proc); gpgrt_spawn_actions_release (act); xfree (argv); if (err) @@ -559,6 +560,8 @@ gpgtar_list (const char *filename, int decrypt) for (;;) { err = read_header (stream, tarinfo, &header, &extheader); + if (!err && !header) + break; /* End of archive. */ if (err || header == NULL) goto leave; @@ -585,8 +588,9 @@ gpgtar_list (const char *filename, int decrypt) int exitcode; gpgrt_process_ctl (proc, GPGRT_PROCESS_GET_EXIT_ID, &exitcode); - log_error ("running %s failed (exitcode=%d): %s", - opt.gpg_program, exitcode, gpg_strerror (err)); + if (exitcode) + log_error ("running %s failed (exitcode=%d): %s", + opt.gpg_program, exitcode, gpg_strerror (err)); } gpgrt_process_release (proc); proc = NULL; |