diff options
| author | Tim Kientzle <kientzle@FreeBSD.org> | 2007-09-27 03:45:24 +0000 |
|---|---|---|
| committer | Tim Kientzle <kientzle@FreeBSD.org> | 2007-09-27 03:45:24 +0000 |
| commit | 3dc9a9c808e34f312337c019e7b5cd879affbad6 (patch) | |
| tree | b2f8cc54d9fc86361ee9f81e005fb5f217c71a54 /lib | |
| parent | b997a48b8499b0d827ed2b1e18539cfd5dac4d57 (diff) | |
Notes
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/libarchive/archive_write_disk.c | 13 |
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 |
