aboutsummaryrefslogtreecommitdiff
path: root/src/gdbmsetopt.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2011-08-10 23:41:24 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2011-08-10 23:41:24 +0000
commite8a2a215a7b73924da50b1407f107cfccd4fe979 (patch)
tree191eaa9f00632ba7c06a2e38aa3bdc7d9d91f45e /src/gdbmsetopt.c
parent19939b60f76d30433a46902523e139869d782ef1 (diff)
downloadgdbm-e8a2a215a7b73924da50b1407f107cfccd4fe979.tar.gz
gdbm-e8a2a215a7b73924da50b1407f107cfccd4fe979.tar.bz2
Protect invocations of _gdbm_mapped functions with #if HAVE_MMAP.
Diffstat (limited to 'src/gdbmsetopt.c')
-rw-r--r--src/gdbmsetopt.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/gdbmsetopt.c b/src/gdbmsetopt.c
index f9494d0..7961304 100644
--- a/src/gdbmsetopt.c
+++ b/src/gdbmsetopt.c
@@ -151,6 +151,7 @@ gdbm_setopt (GDBM_FILE dbf, int optflag, void *optval, int optlen)
/* Mmap mode */
case GDBM_SETMMAP:
+#if HAVE_MMAP
if ((n = getbool (optval, optlen)) == -1)
return -1;
__fsync (dbf);
@@ -168,6 +169,10 @@ gdbm_setopt (GDBM_FILE dbf, int optflag, void *optval, int optlen)
_gdbm_mapped_unmap (dbf);
dbf->memory_mapping = FALSE;
}
+#else
+ gdbm_errno = GDBM_OPT_ILLEGAL;
+ return -1;
+#endif
break;
case GDBM_GETMMAP:
@@ -181,6 +186,7 @@ gdbm_setopt (GDBM_FILE dbf, int optflag, void *optval, int optlen)
/* Maximum size of a memory mapped region */
case GDBM_SETMAXMAPSIZE:
+#if HAVE_MMAP
{
size_t page_size = sysconf (_SC_PAGESIZE);
@@ -191,6 +197,10 @@ gdbm_setopt (GDBM_FILE dbf, int optflag, void *optval, int optlen)
_gdbm_mapped_init (dbf);
break;
}
+#else
+ gdbm_errno = GDBM_OPT_ILLEGAL;
+ return -1;
+#endif
case GDBM_GETMAXMAPSIZE:
if (!optval || optlen != sizeof (size_t))

Return to:

Send suggestions and report system problems to the System administrator.