From 846ac8422390ed9aa1f572a6089f2a7fc41f4aed Mon Sep 17 00:00:00 2001 From: "Klessing, Daniel" Date: Sun, 30 Oct 2011 13:05:38 +0700 Subject: fixdep: fix mmap() on msys --- scripts/basic/fixdep.c | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c index 02678a4cc..fd2e2375f 100644 --- a/scripts/basic/fixdep.c +++ b/scripts/basic/fixdep.c @@ -134,14 +134,36 @@ void *mmap(void *start UNUSED, size_t size, int prot UNUSED, int flags UNUSED, int fd, off_t offset UNUSED) { - void *p = malloc(size); + void *p; + void *curP; + ssize_t readB; + + p = malloc(size); if (!p) - return NULL; - if (read(fd, p, size) != size) { - perror("fixdep: read config"); - free(p); - return NULL; + return (void*)((long)-1); + + curP = p; + + while (size > 0) + { + readB = read(fd, curP, size); + + if (readB == 0) + { + /* EOF reached */ + break; + } + else if (readB < 0) + { + perror("fixdep: read config"); + free(p); + return (void*)((long)-1); + } + + size -= readB; + curP += readB; } + return p; } void munmap(void *p, size_t size UNUSED) -- cgit v1.2.3-55-g6feb