diff options
author | Mike Kazantsev <mk.fraggod@gmail.com> | 2014-04-06 04:40:40 +0600 |
---|---|---|
committer | fraggod@sacrilege <mk.fraggod@gmail.com> | 2014-04-06 04:44:34 +0600 |
commit | c1628626209899fa841c2befd8fedb97fe182b67 (patch) | |
tree | 1b45d6137dbf588497eab04a6ee5cc9dcaa29a38 /cat | |
parent | 30e772e086d42949c6da8bda4e2e6a099f5075a8 (diff) | |
download | libarchive-c1628626209899fa841c2befd8fedb97fe182b67.tar.gz |
Change bsdcat behavior to process as many files as possible.
Change is to match "cat" behavior of printing any errors (e.g. "unable to
open file") and continue to the next file instead of exiting on first error
encountered.
Diffstat (limited to 'cat')
-rw-r--r-- | cat/bsdcat.c | 18 | ||||
-rw-r--r-- | cat/bsdcat.h | 1 |
2 files changed, 12 insertions, 7 deletions
diff --git a/cat/bsdcat.c b/cat/bsdcat.c index c453201a..46eadfa0 100644 --- a/cat/bsdcat.c +++ b/cat/bsdcat.c @@ -65,17 +65,21 @@ bsdcat_next() } void +bsdcat_print_error(void) +{ + lafe_warnc(0, "%s: %s", + bsdcat_current_path, archive_error_string(a)); +} + +void bsdcat_read_to_stdout(char* filename) { if ((archive_read_open_filename(a, filename, BYTES_PER_BLOCK) != ARCHIVE_OK) || (archive_read_next_header(a, &ae) != ARCHIVE_OK) - || (archive_read_data_into_fd(a, 1) != ARCHIVE_OK) - || (archive_read_free(a) != ARCHIVE_OK)) - goto fail; - return; -fail: - lafe_errc(1, 0, "Error: %s - %s", - bsdcat_current_path, archive_error_string(a)); + || (archive_read_data_into_fd(a, 1) != ARCHIVE_OK)) + bsdcat_print_error(); + if (archive_read_free(a) != ARCHIVE_OK) + bsdcat_print_error(); } int diff --git a/cat/bsdcat.h b/cat/bsdcat.h index 5daf3cf3..0f6e38e8 100644 --- a/cat/bsdcat.h +++ b/cat/bsdcat.h @@ -36,4 +36,5 @@ void usage(void); void bsdcat_next(void); +void bsdcat_print_error(void); void bsdcat_read_to_stdout(char* filename); |