From: Tim Kientzle Date: Sun, 10 May 2009 19:43:44 +0000 (-0400) Subject: Handle short writes correctly. X-Git-Tag: v2.8.0~655 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d913072be46c19160ce4b7101358e529eb14bbb2;p=thirdparty%2Flibarchive.git Handle short writes correctly. SVN-Revision: 1078 --- diff --git a/libarchive/archive_check_magic.c b/libarchive/archive_check_magic.c index 4a317de5d..b94448f5a 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