summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorPaul Barker <paul@paulbarker.me.uk>2015-09-02 11:53:15 +0200
committerPaul Barker <paul@paulbarker.me.uk>2015-09-25 17:28:14 +0100
commite3d9dfebdfe04e6e718e96f3a7602a27cabcf21e (patch)
tree46871bb02acdab477ec0bbcfc0735a0edea21d99 /examples
parent16dbeeb55272b468ee4ddbc2d64ff37b815a6076 (diff)
downloadlibarchive-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.c27
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));