diff options
author | Paul Barker <paul@paulbarker.me.uk> | 2015-09-02 11:53:15 +0200 |
---|---|---|
committer | Paul Barker <paul@paulbarker.me.uk> | 2015-09-25 17:28:14 +0100 |
commit | e3d9dfebdfe04e6e718e96f3a7602a27cabcf21e (patch) | |
tree | 46871bb02acdab477ec0bbcfc0735a0edea21d99 /examples | |
parent | 16dbeeb55272b468ee4ddbc2d64ff37b815a6076 (diff) | |
download | libarchive-e3d9dfebdfe04e6e718e96f3a7602a27cabcf21e.tar.gz |
Cleanup error message printing in minitar example
* An error message should not be printed if EOF is reached in copy_data. However
an error message should be printed if any other error is encountered.
* A newline should be printed in extract if an error message was printed.
* If a file name is printed in extract (verbose operation) it should be followed
by a space incase there is an error message.
Signed-off-by: Paul Barker <paul@paulbarker.me.uk>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/minitar/minitar.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/examples/minitar/minitar.c b/examples/minitar/minitar.c index 6b8b4f19..81e5e11c 100644 --- a/examples/minitar/minitar.c +++ b/examples/minitar/minitar.c @@ -367,6 +367,7 @@ extract(const char *filename, int do_extract, int flags) exit(r); } for (;;) { + int needcr = 0; r = archive_read_next_header(a, &entry); if (r == ARCHIVE_EOF) break; @@ -377,16 +378,24 @@ extract(const char *filename, int do_extract, int flags) } if (verbose && do_extract) msg("x "); - if (verbose || !do_extract) + if (verbose || !do_extract) { msg(archive_entry_pathname(entry)); + msg(" "); + needcr = 1; + } if (do_extract) { r = archive_write_header(ext, entry); - if (r != ARCHIVE_OK) + if (r != ARCHIVE_OK) { errmsg(archive_error_string(a)); - else - copy_data(a, ext); + needcr = 1; + } + else { + r = copy_data(a, ext); + if (r != ARCHIVE_OK) + needcr = 1; + } } - if (verbose || !do_extract) + if (needcr) msg("\n"); } archive_read_close(a); @@ -404,12 +413,12 @@ copy_data(struct archive *ar, struct archive *aw) for (;;) { r = archive_read_data_block(ar, &buff, &size, &offset); - if (r == ARCHIVE_EOF) { - errmsg(archive_error_string(ar)); + if (r == ARCHIVE_EOF) return (ARCHIVE_OK); - } - if (r != ARCHIVE_OK) + if (r != ARCHIVE_OK) { + errmsg(archive_error_string(ar)); return (r); + } r = archive_write_data_block(aw, buff, size, offset); if (r != ARCHIVE_OK) { errmsg(archive_error_string(ar)); |