No empty .Rs/.Re
[netbsd-mini2440.git] / gnu / dist / groff / src / libs / libbib / map.c
blobc0de3488d94973c1e42a7aa2e144ae1695e90413
1 /* $NetBSD$ */
3 /* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001, 2004
4 Free Software Foundation, Inc.
5 Written by James Clark (jjc@jclark.com)
7 This file is part of groff.
9 groff is free software; you can redistribute it and/or modify it under
10 the terms of the GNU General Public License as published by the Free
11 Software Foundation; either version 2, or (at your option) any later
12 version.
14 groff is distributed in the hope that it will be useful, but WITHOUT ANY
15 WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17 for more details.
19 You should have received a copy of the GNU General Public License along
20 with groff; see the file COPYING. If not, write to the Free Software
21 Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */
23 #include <stdlib.h>
25 #ifdef HAVE_CONFIG_H
26 #include <config.h>
27 #endif
29 #ifdef HAVE_MMAP
31 #include <sys/types.h>
32 #include <sys/mman.h>
34 /* The Net-2 man pages says that a MAP_FILE flag is required. */
35 #ifndef MAP_FILE
36 #define MAP_FILE 0
37 #endif
39 #ifdef __cplusplus
40 extern "C" {
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 #ifdef __cplusplus
62 #endif
64 #else /* not HAVE_MMAP */
66 #include <errno.h>
68 #ifdef __cplusplus
69 extern "C" {
70 #endif
72 char *mapread(int fd, int nbytes)
74 errno = ENODEV;
75 return 0;
78 int unmap(char *p, int len)
80 errno = EINVAL;
81 return -1;
84 #ifdef __cplusplus
86 #endif
88 #endif /* not HAVE_MMAP */