-/* $Id: preconv.c,v 1.4 2011/05/26 21:13:07 kristaps Exp $ */
+/* $Id: preconv.c,v 1.6 2013/06/02 03:52:21 schwarze Exp $ */
/*
* Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
#include "config.h"
#endif
+#ifdef HAVE_MMAP
#include <sys/stat.h>
#include <sys/mman.h>
+#endif
#include <assert.h>
#include <fcntl.h>
/*
* The read_whole_file() and resize_buf() functions are copied from
- * read.c, including all dependency code (MAP_FILE, etc.).
+ * read.c, including all dependency code.
*/
-#ifndef MAP_FILE
-#define MAP_FILE 0
-#endif
-
enum enc {
ENC_UTF_8, /* UTF-8 */
ENC_US_ASCII, /* US-ASCII */
read_whole_file(const char *f, int fd,
struct buf *fb, int *with_mmap)
{
- struct stat st;
size_t off;
ssize_t ssz;
+#ifdef HAVE_MMAP
+ struct stat st;
if (-1 == fstat(fd, &st)) {
perror(f);
return(0);
if (S_ISREG(st.st_mode)) {
*with_mmap = 1;
fb->sz = (size_t)st.st_size;
- fb->buf = mmap(NULL, fb->sz, PROT_READ,
- MAP_FILE|MAP_SHARED, fd, 0);
+ fb->buf = mmap(NULL, fb->sz, PROT_READ, MAP_SHARED, fd, 0);
if (fb->buf != MAP_FAILED)
return(1);
}
+#endif
/*
* If this isn't a regular file (like, say, stdin), then we must
rc = EXIT_SUCCESS;
out:
+#ifdef HAVE_MMAP
if (map)
munmap(b.buf, b.sz);
else
+#endif
free(b.buf);
if (fd > STDIN_FILENO)