summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorkientzle <kientzle@FreeBSD.org>2004-10-17 23:47:30 +0000
committerkientzle <kientzle@FreeBSD.org>2004-10-17 23:47:30 +0000
commit28af6eb5e1fe00d175f72dd8b6427ee50ecd9be4 (patch)
tree0b768b00cd950bf199f79233f829ac65eb6efdb2 /lib
parent2f1227d293d3abebbf9fb61d07ab6ad5c410f952 (diff)
downloadFreeBSD-src-28af6eb5e1fe00d175f72dd8b6427ee50ecd9be4.zip
FreeBSD-src-28af6eb5e1fe00d175f72dd8b6427ee50ecd9be4.tar.gz
Correctly report write errors from the lowest-level
output routines back to the compression layer.
Diffstat (limited to 'lib')
-rw-r--r--lib/libarchive/archive_write_open_fd.c9
-rw-r--r--lib/libarchive/archive_write_open_file.c9
-rw-r--r--lib/libarchive/archive_write_open_filename.c9
3 files changed, 21 insertions, 6 deletions
diff --git a/lib/libarchive/archive_write_open_fd.c b/lib/libarchive/archive_write_open_fd.c
index ae8c2e2..58bfbd3 100644
--- a/lib/libarchive/archive_write_open_fd.c
+++ b/lib/libarchive/archive_write_open_fd.c
@@ -111,10 +111,15 @@ static ssize_t
file_write(struct archive *a, void *client_data, void *buff, size_t length)
{
struct write_fd_data *mine;
+ ssize_t bytesWritten;
- (void)a; /* UNUSED */
mine = client_data;
- return (write(mine->fd, buff, length));
+ bytesWritten = write(mine->fd, buff, length);
+ if (bytesWritten <= 0) {
+ archive_set_error(a, errno, "Write error");
+ return (-1);
+ }
+ return (bytesWritten);
}
static int
diff --git a/lib/libarchive/archive_write_open_file.c b/lib/libarchive/archive_write_open_file.c
index cfce0a5..71a77b8 100644
--- a/lib/libarchive/archive_write_open_file.c
+++ b/lib/libarchive/archive_write_open_file.c
@@ -135,10 +135,15 @@ static ssize_t
file_write(struct archive *a, void *client_data, void *buff, size_t length)
{
struct write_file_data *mine;
+ ssize_t bytesWritten;
- (void)a; /* UNUSED */
mine = client_data;
- return (write(mine->fd, buff, length));
+ bytesWritten = write(mine->fd, buff, length);
+ if (bytesWritten <= 0) {
+ archive_set_error(a, errno, "Write error");
+ return (-1);
+ }
+ return (bytesWritten);
}
static int
diff --git a/lib/libarchive/archive_write_open_filename.c b/lib/libarchive/archive_write_open_filename.c
index cfce0a5..71a77b8 100644
--- a/lib/libarchive/archive_write_open_filename.c
+++ b/lib/libarchive/archive_write_open_filename.c
@@ -135,10 +135,15 @@ static ssize_t
file_write(struct archive *a, void *client_data, void *buff, size_t length)
{
struct write_file_data *mine;
+ ssize_t bytesWritten;
- (void)a; /* UNUSED */
mine = client_data;
- return (write(mine->fd, buff, length));
+ bytesWritten = write(mine->fd, buff, length);
+ if (bytesWritten <= 0) {
+ archive_set_error(a, errno, "Write error");
+ return (-1);
+ }
+ return (bytesWritten);
}
static int
OpenPOWER on IntegriCloud