summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Kientzle <kientzle@acm.org>2015-09-26 10:16:28 -0700
committerTim Kientzle <kientzle@acm.org>2015-09-26 10:16:28 -0700
commitb9d0b46eb05b0f1e6c832512c2c6b5d782db58d1 (patch)
tree46871bb02acdab477ec0bbcfc0735a0edea21d99
parent16dbeeb55272b468ee4ddbc2d64ff37b815a6076 (diff)
parente3d9dfebdfe04e6e718e96f3a7602a27cabcf21e (diff)
downloadlibarchive-b9d0b46eb05b0f1e6c832512c2c6b5d782db58d1.tar.gz
Merge pull request #606 from betafive/pbarker/minitar
Cleanup error message printing in minitar example
-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));