aboutsummaryrefslogtreecommitdiffstats
path: root/tools/gpgtar-create.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-create.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 'tools/gpgtar-create.c')
-rw-r--r--tools/gpgtar-create.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/tools/gpgtar-create.c b/tools/gpgtar-create.c
index 59b88bfb9..69ba4408f 100644
--- a/tools/gpgtar-create.c
+++ b/tools/gpgtar-create.c
@@ -740,7 +740,7 @@ write_eof_mark (estream_t stream)
/* Create a new tarball using the names in the array INPATTERN. If
INPATTERN is NULL take the pattern as null terminated strings from
stdin. */
-void
+gpg_error_t
gpgtar_create (char **inpattern, int encrypt)
{
gpg_error_t err = 0;
@@ -903,16 +903,19 @@ gpgtar_create (char **inpattern, int encrypt)
leave:
if (!err)
{
+ gpg_error_t first_err;
if (outstream != es_stdout)
- err = es_fclose (outstream);
+ first_err = es_fclose (outstream);
else
- err = es_fflush (outstream);
+ first_err = es_fflush (outstream);
outstream = NULL;
if (cipher_stream != es_stdout)
err = es_fclose (cipher_stream);
else
err = es_fflush (cipher_stream);
cipher_stream = NULL;
+ if (! err)
+ err = first_err;
}
if (err)
{
@@ -931,4 +934,5 @@ gpgtar_create (char **inpattern, int encrypt)
scanctrl->flist = hdr->next;
xfree (hdr);
}
+ return err;
}