diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-08-10 23:41:24 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-08-10 23:41:24 +0000 |
commit | e8a2a215a7b73924da50b1407f107cfccd4fe979 (patch) | |
tree | 191eaa9f00632ba7c06a2e38aa3bdc7d9d91f45e | |
parent | 19939b60f76d30433a46902523e139869d782ef1 (diff) | |
download | gdbm-e8a2a215a7b73924da50b1407f107cfccd4fe979.tar.gz gdbm-e8a2a215a7b73924da50b1407f107cfccd4fe979.tar.bz2 |
Protect invocations of _gdbm_mapped functions with #if HAVE_MMAP.
-rw-r--r-- | src/gdbmreorg.c | 4 | ||||
-rw-r--r-- | src/gdbmsetopt.c | 10 |
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)) |