aboutsummaryrefslogtreecommitdiffstats
path: root/tools/gpgtar-extract.c
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2015-11-25 12:39:50 +0000
committerJustus Winter <[email protected]>2015-11-25 13:34:16 +0000
commitf76fb047c15914ba44dc9423d235484758bcd721 (patch)
treea3ea6388c08ff2544a36409c7f4a1c3fcc3a3d24 /tools/gpgtar-extract.c
parenttools: Add encryption and decryption support to gpgtar. (diff)
downloadgnupg-f76fb047c15914ba44dc9423d235484758bcd721.tar.gz
gnupg-f76fb047c15914ba44dc9423d235484758bcd721.zip
tools/gpgtar: Improve error handling.
* tools/gpgtar-create.c (gpgtar_create): Return an error code, fix error handling. * tools/gpgtar-extract.c (gpgtar_extract): Likewise. * tools/gpgtar-list.c (read_header): Return an error code. (gpgtar_list): Return an error code, fix error handling. (gpgtar_read_header): Return an error code. * tools/gpgtar.c: Add missing include. (main): Print an generic error message if a command failed and no error has been printed yet. * tools/gpgtar.h (gpgtar_{create,extract,list,read_header}): Fix the prototypes accordingly. Signed-off-by: Justus Winter <[email protected]>
Diffstat (limited to '')
-rw-r--r--tools/gpgtar-extract.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/tools/gpgtar-extract.c b/tools/gpgtar-extract.c
index 19db0eb42..594f2571b 100644
--- a/tools/gpgtar-extract.c
+++ b/tools/gpgtar-extract.c
@@ -265,7 +265,7 @@ create_directory (const char *dirprefix)
-void
+gpg_error_t
gpgtar_extract (const char *filename, int decrypt)
{
gpg_error_t err;
@@ -285,7 +285,7 @@ gpgtar_extract (const char *filename, int decrypt)
{
err = gpg_error_from_syserror ();
log_error ("error opening '%s': %s\n", filename, gpg_strerror (err));
- return;
+ return err;
}
}
else
@@ -344,11 +344,12 @@ gpgtar_extract (const char *filename, int decrypt)
for (;;)
{
- header = gpgtar_read_header (stream);
- if (!header)
+ err = gpgtar_read_header (stream, &header);
+ if (err || header == NULL)
goto leave;
- if (extract (stream, dirname, header))
+ err = extract (stream, dirname, header);
+ if (err)
goto leave;
xfree (header);
header = NULL;
@@ -362,5 +363,5 @@ gpgtar_extract (const char *filename, int decrypt)
es_fclose (stream);
if (stream != cipher_stream)
es_fclose (cipher_stream);
- return;
+ return err;
}