diff options
author | Tim Kientzle <kientzle@gmail.com> | 2009-05-10 15:43:44 -0400 |
---|---|---|
committer | Tim Kientzle <kientzle@gmail.com> | 2009-05-10 15:43:44 -0400 |
commit | d913072be46c19160ce4b7101358e529eb14bbb2 (patch) | |
tree | 9940971adfa2ce4ac8464f23ffeaadbb0ea9b1e5 /libarchive/archive_check_magic.c | |
parent | 38d310617fd661610467a8e735df88c6bc9be8e1 (diff) | |
download | libarchive-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.c | 12 |
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 |