summaryrefslogtreecommitdiffstats
path: root/lib/libarchive/archive_write_open_filename.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libarchive/archive_write_open_filename.c')
-rw-r--r--lib/libarchive/archive_write_open_filename.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/libarchive/archive_write_open_filename.c b/lib/libarchive/archive_write_open_filename.c
index 1db11f9..0c1e189 100644
--- a/lib/libarchive/archive_write_open_filename.c
+++ b/lib/libarchive/archive_write_open_filename.c
@@ -142,12 +142,16 @@ file_write(struct archive *a, void *client_data, const void *buff, size_t length
ssize_t bytesWritten;
mine = (struct write_file_data *)client_data;
- bytesWritten = write(mine->fd, buff, length);
- if (bytesWritten <= 0) {
- archive_set_error(a, errno, "Write error");
- return (-1);
+ for (;;) {
+ bytesWritten = write(mine->fd, buff, length);
+ if (bytesWritten <= 0) {
+ if (errno == EINTR)
+ continue;
+ archive_set_error(a, errno, "Write error");
+ return (-1);
+ }
+ return (bytesWritten);
}
- return (bytesWritten);
}
static int
OpenPOWER on IntegriCloud