summaryrefslogtreecommitdiff
path: root/lib/libarchive/archive_write_disk.c
diff options
context:
space:
mode:
authorTim Kientzle <kientzle@FreeBSD.org>2007-09-21 04:52:43 +0000
committerTim Kientzle <kientzle@FreeBSD.org>2007-09-21 04:52:43 +0000
commit016e328d16229c49307abf7b0d7b51b985ff5d56 (patch)
tree9a6acbcc524ee1351ee95a0c02082c99d2d75858 /lib/libarchive/archive_write_disk.c
parentbaf3da661c8c6aef482dda1966e099aa86158bc3 (diff)
Notes
Diffstat (limited to 'lib/libarchive/archive_write_disk.c')
-rw-r--r--lib/libarchive/archive_write_disk.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/libarchive/archive_write_disk.c b/lib/libarchive/archive_write_disk.c
index f5fb3aa8937b..435522ceac61 100644
--- a/lib/libarchive/archive_write_disk.c
+++ b/lib/libarchive/archive_write_disk.c
@@ -448,8 +448,10 @@ _archive_write_data_block(struct archive *_a,
__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. */
@@ -478,12 +480,17 @@ static ssize_t
_archive_write_data(struct archive *_a, const void *buff, size_t size)
{
struct archive_write_disk *a = (struct archive_write_disk *)_a;
+ int r;
+
__archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC,
ARCHIVE_STATE_DATA, "archive_write_data");
if (a->fd < 0)
return (ARCHIVE_OK);
- return (_archive_write_data_block(_a, buff, size, a->offset));
+ r = _archive_write_data_block(_a, buff, size, a->offset);
+ if (r < ARCHIVE_OK)
+ return (r);
+ return (size);
}
static int