Pass the entry down into the core write loop, so we

can include the filename when reporting errors.

Thanks to: Dan Nelson
This commit is contained in:
Tim Kientzle 2008-06-25 05:01:02 +00:00
parent 603609c7f4
commit 634d062e6a

View File

@ -142,7 +142,7 @@ static void write_entry(struct bsdtar *, struct archive *,
static void write_entry_backend(struct bsdtar *, struct archive *, static void write_entry_backend(struct bsdtar *, struct archive *,
struct archive_entry *, int); struct archive_entry *, int);
static int write_file_data(struct bsdtar *, struct archive *, static int write_file_data(struct bsdtar *, struct archive *,
int fd); struct archive_entry *, int fd);
static void write_hierarchy(struct bsdtar *, struct archive *, static void write_hierarchy(struct bsdtar *, struct archive *,
const char *); const char *);
@ -838,7 +838,7 @@ write_entry_backend(struct bsdtar *bsdtar, struct archive *a,
* that case, just skip the write. * that case, just skip the write.
*/ */
if (e >= ARCHIVE_WARN && fd >= 0 && archive_entry_size(entry) > 0) { if (e >= ARCHIVE_WARN && fd >= 0 && archive_entry_size(entry) > 0) {
if (write_file_data(bsdtar, a, fd)) if (write_file_data(bsdtar, a, entry, fd))
exit(1); exit(1);
close(fd); close(fd);
} }
@ -959,7 +959,8 @@ abort:
/* Helper function to copy file to archive, with stack-allocated buffer. */ /* Helper function to copy file to archive, with stack-allocated buffer. */
static int static int
write_file_data(struct bsdtar *bsdtar, struct archive *a, int fd) write_file_data(struct bsdtar *bsdtar, struct archive *a,
struct archive_entry *entry, int fd)
{ {
char buff[64*1024]; char buff[64*1024];
ssize_t bytes_read; ssize_t bytes_read;
@ -982,7 +983,8 @@ write_file_data(struct bsdtar *bsdtar, struct archive *a, int fd)
if (bytes_written < bytes_read) { if (bytes_written < bytes_read) {
/* Write was truncated; warn but continue. */ /* Write was truncated; warn but continue. */
bsdtar_warnc(bsdtar, 0, bsdtar_warnc(bsdtar, 0,
"Truncated write; file may have grown while being archived."); "%s: Truncated write; file may have grown while being archived.",
archive_entry_pathname(entry));
return (0); return (0);
} }
progress += bytes_written; progress += bytes_written;