summaryrefslogtreecommitdiff
path: root/libarchive/archive_check_magic.c
diff options
context:
space:
mode:
authorTim Kientzle <kientzle@gmail.com>2009-05-10 15:43:44 -0400
committerTim Kientzle <kientzle@gmail.com>2009-05-10 15:43:44 -0400
commitd913072be46c19160ce4b7101358e529eb14bbb2 (patch)
tree9940971adfa2ce4ac8464f23ffeaadbb0ea9b1e5 /libarchive/archive_check_magic.c
parent38d310617fd661610467a8e735df88c6bc9be8e1 (diff)
downloadlibarchive-d913072be46c19160ce4b7101358e529eb14bbb2.tar.gz
Handle short writes correctly.
SVN-Revision: 1078
Diffstat (limited to 'libarchive/archive_check_magic.c')
-rw-r--r--libarchive/archive_check_magic.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/libarchive/archive_check_magic.c b/libarchive/archive_check_magic.c
index 4a317de5..b94448f5 100644
--- a/libarchive/archive_check_magic.c
+++ b/libarchive/archive_check_magic.c
@@ -50,8 +50,16 @@ __FBSDID("$FreeBSD: src/lib/libarchive/archive_check_magic.c,v 1.9 2008/12/06 05
static void
errmsg(const char *m)
{
- size_t s = write(2, m, strlen(m));
- (void)s; /* UNUSED */
+ size_t s = strlen(m);
+ ssize_t written;
+
+ while (s > 0) {
+ written = write(2, m, strlen(m));
+ if (written <= 0)
+ return;
+ m += written;
+ s -= written;
+ }
}
static void