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:
parent
603609c7f4
commit
634d062e6a
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user