fstat(fd, &sbuf);
if (sbuf.st_size > BUFSIZE) {
-/* off = ftell(fp); */
- len = sbuf.st_size;/* - off; */
- p = mmap(0, len, PROT_READ, MAP_PRIVATE, fd, off);
+ off = ftell(fp);
+ len = sbuf.st_size - off;
+ p = mmap(0, len, PROT_READ, MAP_SHARED, fd, off);
if (p != (void *) MAP_FAILED) {
doc->data = malloc(len);
if(NULL == doc->data) {
free(doc);
RETURN_FALSE;
}
- memcpy(p, doc->data, len);
+ memcpy(doc->data, p, len);
munmap(p, len);
bcount = len;
doc->size = len;