_PUBLIC_ void ntdb_remove_flag(struct ntdb_context *ntdb, unsigned flag) { if (ntdb->flags & NTDB_INTERNAL) { ntdb_logerr(ntdb, NTDB_ERR_EINVAL, NTDB_LOG_USE_ERROR, "ntdb_remove_flag: internal db"); return; } switch (flag) { case NTDB_NOLOCK: ntdb->flags &= ~NTDB_NOLOCK; break; case NTDB_NOMMAP: ntdb->flags &= ~NTDB_NOMMAP; #ifndef HAVE_INCOHERENT_MMAP /* If mmap incoherent, we were mmaping anyway. */ ntdb_mmap(ntdb); #endif break; case NTDB_NOSYNC: ntdb->flags &= ~NTDB_NOSYNC; break; case NTDB_SEQNUM: ntdb->flags &= ~NTDB_SEQNUM; break; case NTDB_ALLOW_NESTING: ntdb->flags &= ~NTDB_ALLOW_NESTING; break; case NTDB_RDONLY: if ((ntdb->open_flags & O_ACCMODE) == O_RDONLY) { ntdb_logerr(ntdb, NTDB_ERR_EINVAL, NTDB_LOG_USE_ERROR, "ntdb_remove_flag: can't" " remove NTDB_RDONLY on ntdb" " opened with O_RDONLY"); break; } if (readonly_changable(ntdb, "ntdb_remove_flag")) ntdb->flags &= ~NTDB_RDONLY; break; default: ntdb_logerr(ntdb, NTDB_ERR_EINVAL, NTDB_LOG_USE_ERROR, "ntdb_remove_flag: Unknown flag %u", flag); } }
void tdb_remove_flag(struct tdb_context *tdb, unsigned flag) { if (tdb->flags & TDB_INTERNAL) { tdb->last_error = tdb_logerr(tdb, TDB_ERR_EINVAL, TDB_LOG_USE_ERROR, "tdb_remove_flag: internal db"); return; } switch (flag) { case TDB_NOLOCK: tdb->flags &= ~TDB_NOLOCK; break; case TDB_NOMMAP: tdb->flags &= ~TDB_NOMMAP; tdb_mmap(tdb); break; case TDB_NOSYNC: tdb->flags &= ~TDB_NOSYNC; break; case TDB_SEQNUM: tdb->flags &= ~TDB_SEQNUM; break; case TDB_ALLOW_NESTING: tdb->flags &= ~TDB_ALLOW_NESTING; break; case TDB_RDONLY: if ((tdb->open_flags & O_ACCMODE) == O_RDONLY) { tdb->last_error = tdb_logerr(tdb, TDB_ERR_EINVAL, TDB_LOG_USE_ERROR, "tdb_remove_flag: can't" " remove TDB_RDONLY on tdb" " opened with O_RDONLY"); break; } if (readonly_changable(tdb, "tdb_remove_flag")) tdb->flags &= ~TDB_RDONLY; break; default: tdb->last_error = tdb_logerr(tdb, TDB_ERR_EINVAL, TDB_LOG_USE_ERROR, "tdb_remove_flag: Unknown flag %u", flag); } }
_PUBLIC_ void ntdb_add_flag(struct ntdb_context *ntdb, unsigned flag) { if (ntdb->flags & NTDB_INTERNAL) { ntdb_logerr(ntdb, NTDB_ERR_EINVAL, NTDB_LOG_USE_ERROR, "ntdb_add_flag: internal db"); return; } switch (flag) { case NTDB_NOLOCK: ntdb->flags |= NTDB_NOLOCK; break; case NTDB_NOMMAP: if (ntdb->file->direct_count) { ntdb_logerr(ntdb, NTDB_ERR_EINVAL, NTDB_LOG_USE_ERROR, "ntdb_add_flag: Can't get NTDB_NOMMAP from" " ntdb_parse_record!"); return; } ntdb->flags |= NTDB_NOMMAP; #ifndef HAVE_INCOHERENT_MMAP ntdb_munmap(ntdb); #endif break; case NTDB_NOSYNC: ntdb->flags |= NTDB_NOSYNC; break; case NTDB_SEQNUM: ntdb->flags |= NTDB_SEQNUM; break; case NTDB_ALLOW_NESTING: ntdb->flags |= NTDB_ALLOW_NESTING; break; case NTDB_RDONLY: if (readonly_changable(ntdb, "ntdb_add_flag")) ntdb->flags |= NTDB_RDONLY; break; default: ntdb_logerr(ntdb, NTDB_ERR_EINVAL, NTDB_LOG_USE_ERROR, "ntdb_add_flag: Unknown flag %u", flag); } }
void tdb_add_flag(struct tdb_context *tdb, unsigned flag) { if (tdb->flags & TDB_INTERNAL) { tdb->last_error = tdb_logerr(tdb, TDB_ERR_EINVAL, TDB_LOG_USE_ERROR, "tdb_add_flag: internal db"); return; } switch (flag) { case TDB_NOLOCK: tdb->flags |= TDB_NOLOCK; break; case TDB_NOMMAP: tdb->flags |= TDB_NOMMAP; tdb_munmap(tdb->file); break; case TDB_NOSYNC: tdb->flags |= TDB_NOSYNC; break; case TDB_SEQNUM: tdb->flags |= TDB_SEQNUM; break; case TDB_ALLOW_NESTING: tdb->flags |= TDB_ALLOW_NESTING; break; case TDB_RDONLY: if (readonly_changable(tdb, "tdb_add_flag")) tdb->flags |= TDB_RDONLY; break; default: tdb->last_error = tdb_logerr(tdb, TDB_ERR_EINVAL, TDB_LOG_USE_ERROR, "tdb_add_flag: Unknown flag %u", flag); } }