From 3f1b7c57a01244dbc6b5ba8ebd029aff45edfb3c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 26 Aug 2003 23:50:11 +0000 Subject: extract added git-svn-id: file:///home/lennart/svn/public/syrep/trunk@5 07ea20a6-d2c5-0310-9e02-9ef735347d72 --- src/md5util.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/md5util.c') diff --git a/src/md5util.c b/src/md5util.c index 41a5a31..a49e5d5 100644 --- a/src/md5util.c +++ b/src/md5util.c @@ -21,6 +21,8 @@ #include #include #include +#include +#include #include "md5util.h" #include "md5.h" @@ -49,7 +51,7 @@ int fdmd5(int fd, size_t l, char *md) { m = l < MMAPSIZE ? l : MMAPSIZE; - while (l > 0 && (d = mmap(NULL, m, PROT_READ, MAP_SHARED, fd, o))) { + while (l > 0 && ((d = mmap(NULL, m, PROT_READ, MAP_SHARED, fd, o)) != MAP_FAILED)) { md5_append(&s, d, m); munmap(d, m); @@ -61,7 +63,7 @@ int fdmd5(int fd, size_t l, char *md) { if (l > 0) { void *p; - fprintf(stderr, "mmap() failed\n"); + fprintf(stderr, "mmap() failed: %s\n", strerror(errno)); if (!(p = malloc(BUFSIZE))) r = -1; @@ -70,7 +72,13 @@ int fdmd5(int fd, size_t l, char *md) { for (;;) { ssize_t r; - if ((r = read(fd, p, BUFSIZE)) <= 0) + if ((r = read(fd, p, BUFSIZE)) < 0) { + fprintf(stderr, "read(): %s\n", strerror(errno)); + free(p); + return -1; + } + + if (!r) break; md5_append(&s, p, r); -- cgit