Esempio n. 1
0
_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);
	}
}
Esempio n. 2
0
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);
	}
}
Esempio n. 3
0
_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);
	}
}
Esempio n. 4
0
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);
	}
}