summaryrefslogtreecommitdiffstats
path: root/lib/libarchive/archive_write_disk.c
diff options
context:
space:
mode:
authorkientzle <kientzle@FreeBSD.org>2007-09-18 04:20:21 +0000
committerkientzle <kientzle@FreeBSD.org>2007-09-18 04:20:21 +0000
commit064bc8a7f983dccc1cd1f2fa2b2f056e81404780 (patch)
tree4681d895d4a25e95a3337e09f26885b841ee8920 /lib/libarchive/archive_write_disk.c
parent4e0e5f8feeeb06cfd82f8d93d667eeb4876790ec (diff)
downloadFreeBSD-src-064bc8a7f983dccc1cd1f2fa2b2f056e81404780.zip
FreeBSD-src-064bc8a7f983dccc1cd1f2fa2b2f056e81404780.tar.gz
Correct the return value from archive_write_data()
(when used to restore files to disk) to match: * The documentation * The return values of this function when used to write files into an archive. Approved by: re (bmah) Pointy hat: \me MFC after: 5 days
Diffstat (limited to 'lib/libarchive/archive_write_disk.c')
-rw-r--r--lib/libarchive/archive_write_disk.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/libarchive/archive_write_disk.c b/lib/libarchive/archive_write_disk.c
index f5fb3aa..0c15b77 100644
--- a/lib/libarchive/archive_write_disk.c
+++ b/lib/libarchive/archive_write_disk.c
@@ -444,12 +444,14 @@ _archive_write_data_block(struct archive *_a,
const void *buff, size_t size, off_t offset)
{
struct archive_write_disk *a = (struct archive_write_disk *)_a;
- ssize_t bytes_written = 0;
+ ssize_t bytes_written = 0, total_written = 0;
__archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC,
ARCHIVE_STATE_DATA, "archive_write_disk_block");
- if (a->fd < 0)
- return (ARCHIVE_OK);
+ if (a->fd < 0) {
+ archive_set_error(&a->archive, 0, "File not open");
+ return (ARCHIVE_WARN);
+ }
archive_clear_error(&a->archive);
/* Seek if necessary to the specified offset. */
@@ -470,8 +472,9 @@ _archive_write_data_block(struct archive *_a,
}
size -= bytes_written;
a->offset += bytes_written;
+ total_written += bytes_written;
}
- return (ARCHIVE_OK);
+ return (total_written);
}
static ssize_t
OpenPOWER on IntegriCloud