Adapt src/lib-bib (src/libs/libbib)
[s-roff.git] / src / lib-bib / map.c
blobec7ca1aa6f0bc5c35689c700bc7b77574167bf67
1 /*@
2 * Copyright (c) 2014 Steffen (Daode) Nurpmeso <sdaoden@users.sf.net>.
4 * Copyright (C) 1989 - 1992, 2000, 2001, 2004
5 * Free Software Foundation, Inc.
6 * Written by James Clark (jjc@jclark.com)
8 * groff is free software; you can redistribute it and/or modify it under
9 * the terms of the GNU General Public License as published by the Free
10 * Software Foundation; either version 2, or (at your option) any later
11 * version.
13 * groff is distributed in the hope that it will be useful, but WITHOUT ANY
14 * WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 * for more details.
18 * You should have received a copy of the GNU General Public License along
19 * with groff; see the file COPYING. If not, write to the Free Software
20 * Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
23 #include "config.h"
24 #include "lib.h"
26 #include <stdlib.h>
28 #ifdef HAVE_MMAP /* FIXME */
29 # include <sys/types.h>
30 # include <sys/mman.h>
31 #else
32 # include <errno.h>
33 #endif
35 #include "bib.h"
37 #ifdef HAVE_MMAP /* FIXME */
38 /* The Net-2 man pages says that a MAP_FILE flag is required. */
39 # ifndef MAP_FILE
40 # define MAP_FILE 0
41 # endif
43 char *mapread(int fd, int nbytes)
45 char *p = (char *)mmap((void *)0, (size_t)nbytes, PROT_READ,
46 MAP_FILE|MAP_PRIVATE, fd, (off_t)0);
47 if (p == (char *)-1)
48 return 0;
49 /* mmap() shouldn't return 0 since MAP_FIXED wasn't specified. */
50 if (p == 0)
51 abort();
52 return p;
55 int unmap(char *p, int len)
57 return munmap((void *)p, len);
60 #else // HAVE_MMAP
61 char *mapread(int fd, int nbytes)
63 errno = ENODEV;
64 return 0;
67 int unmap(char *p, int len)
69 errno = EINVAL;
70 return -1;
72 #endif // HAVE_MMAP
74 // s-it2-mode