aboutsummaryrefslogtreecommitdiff
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
parent19939b60f76d30433a46902523e139869d782ef1 (diff)
downloadgdbm-e8a2a215a7b73924da50b1407f107cfccd4fe979.tar.gz
gdbm-e8a2a215a7b73924da50b1407f107cfccd4fe979.tar.bz2
Protect invocations of _gdbm_mapped functions with #if HAVE_MMAP.
-rw-r--r--src/gdbmreorg.c4
-rw-r--r--src/gdbmsetopt.c10
2 files changed, 14 insertions, 0 deletions
diff --git a/src/gdbmreorg.c b/src/gdbmreorg.c
index 6bde222..7911857 100644
--- a/src/gdbmreorg.c
+++ b/src/gdbmreorg.c
@@ -144,7 +144,9 @@ gdbm_reorganize (GDBM_FILE dbf)
_gdbm_end_update (new_dbf);
gdbm_sync (new_dbf);
+#if HAVE_MMAP
_gdbm_mapped_unmap (dbf);
+#endif
/* Move the new file to old name. */
@@ -175,9 +177,11 @@ gdbm_reorganize (GDBM_FILE dbf)
free (dbf->bucket_cache);
}
+#if HAVE_MMAP
/* Re-initialize mapping if required */
if (dbf->memory_mapping)
_gdbm_mapped_init (dbf);
+#endif
dbf->desc = new_dbf->desc;
dbf->header = new_dbf->header;
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.