summaryrefslogtreecommitdiff
path: root/lib/tdb2/io.c
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2011-09-14 07:14:13 +0930
committerRusty Russell <rusty@rustcorp.com.au>2011-09-14 07:14:13 +0930
commit2cf3f7c07499f565101e1bcb835c73fc297ea72e (patch)
treedd1f4507984e47302b29cd6312ef12cf0c9afe1f /lib/tdb2/io.c
parent376511ed4defeeeabcfaa83acd230afd4a46b6fd (diff)
downloadsamba-2cf3f7c07499f565101e1bcb835c73fc297ea72e.tar.gz
samba-2cf3f7c07499f565101e1bcb835c73fc297ea72e.tar.bz2
samba-2cf3f7c07499f565101e1bcb835c73fc297ea72e.zip
tdb2: save open_flags instead of mmap_flags.
It's more consistent with what tdb1 does, and slightly more encapsulated. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (Imported from CCAN commit 6b7c3c840eafbec211b9f58751c5ff754302a68e)
Diffstat (limited to 'lib/tdb2/io.c')
-rw-r--r--lib/tdb2/io.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/tdb2/io.c b/lib/tdb2/io.c
index 4166cd4c67..d422d96326 100644
--- a/lib/tdb2/io.c
+++ b/lib/tdb2/io.c
@@ -42,16 +42,23 @@ void tdb_munmap(struct tdb_file *file)
void tdb_mmap(struct tdb_context *tdb)
{
+ int mmap_flags;
+
if (tdb->flags & TDB_INTERNAL)
return;
if (tdb->flags & TDB_NOMMAP)
return;
+ if ((tdb->open_flags & O_ACCMODE) == O_RDONLY)
+ mmap_flags = PROT_READ;
+ else
+ mmap_flags = PROT_READ | PROT_WRITE;
+
/* size_t can be smaller than off_t. */
if ((size_t)tdb->file->map_size == tdb->file->map_size) {
tdb->file->map_ptr = mmap(NULL, tdb->file->map_size,
- tdb->mmap_flags,
+ mmap_flags,
MAP_SHARED, tdb->file->fd, 0);
} else
tdb->file->map_ptr = MAP_FAILED;