1 #include "tdb2-source.h"
2 #include <ccan/tap/tap.h>
5 int main(int argc, char *argv[])
8 struct tdb_context *tdb;
9 int flags[] = { TDB_INTERNAL, TDB_DEFAULT, TDB_NOMMAP,
10 TDB_INTERNAL|TDB_CONVERT, TDB_CONVERT,
11 TDB_NOMMAP|TDB_CONVERT };
14 for (i = 0; i < sizeof(flags) / sizeof(flags[0]); i++) {
15 tdb = tdb_open("run-add-remove-flags.tdb", flags[i],
16 O_RDWR|O_CREAT|O_TRUNC, 0600, &tap_log_attr);
21 ok1(tdb_get_flags(tdb) == tdb->flags);
23 tdb_add_flag(tdb, TDB_NOLOCK);
24 if (flags[i] & TDB_INTERNAL)
25 ok1(tap_log_messages == 1);
27 ok1(tap_log_messages == 0);
28 ok1(tdb_get_flags(tdb) & TDB_NOLOCK);
32 tdb_add_flag(tdb, TDB_NOMMAP);
33 if (flags[i] & TDB_INTERNAL)
34 ok1(tap_log_messages == 1);
36 ok1(tap_log_messages == 0);
37 ok1(tdb_get_flags(tdb) & TDB_NOMMAP);
38 ok1(tdb->file->map_ptr == NULL);
42 tdb_add_flag(tdb, TDB_NOSYNC);
43 if (flags[i] & TDB_INTERNAL)
44 ok1(tap_log_messages == 1);
46 ok1(tap_log_messages == 0);
47 ok1(tdb_get_flags(tdb) & TDB_NOSYNC);
50 ok1(tdb_get_flags(tdb) == tdb->flags);
53 tdb_remove_flag(tdb, TDB_NOLOCK);
54 if (flags[i] & TDB_INTERNAL)
55 ok1(tap_log_messages == 1);
57 ok1(tap_log_messages == 0);
58 ok1(!(tdb_get_flags(tdb) & TDB_NOLOCK));
62 tdb_remove_flag(tdb, TDB_NOMMAP);
63 if (flags[i] & TDB_INTERNAL)
64 ok1(tap_log_messages == 1);
66 ok1(tap_log_messages == 0);
67 ok1(!(tdb_get_flags(tdb) & TDB_NOMMAP));
68 ok1(tdb->file->map_ptr != NULL);
72 tdb_remove_flag(tdb, TDB_NOSYNC);
73 if (flags[i] & TDB_INTERNAL)
74 ok1(tap_log_messages == 1);
76 ok1(tap_log_messages == 0);
77 ok1(!(tdb_get_flags(tdb) & TDB_NOSYNC));
83 ok1(tap_log_messages == 0);