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_DEFAULT
, TDB_NOMMAP
,
10 TDB_CONVERT
, TDB_NOMMAP
|TDB_CONVERT
};
11 struct tdb_data key
= { (unsigned char *)&j
, sizeof(j
) };
12 struct tdb_data data
= { (unsigned char *)&j
, sizeof(j
) };
14 plan_tests(sizeof(flags
) / sizeof(flags
[0]) * 8 + 1);
15 for (i
= 0; i
< sizeof(flags
) / sizeof(flags
[0]); i
++) {
17 tdb
= tdb_open("run-features.tdb", flags
[i
],
18 O_RDWR
|O_CREAT
|O_TRUNC
, 0600, &tap_log_attr
);
23 /* Put some stuff in there. */
24 for (j
= 0; j
< 100; j
++) {
25 if (tdb_store(tdb
, key
, data
, TDB_REPLACE
) != 0)
26 fail("Storing in tdb");
29 /* Mess with features fields in hdr. */
30 features
= (~TDB_FEATURE_MASK
^ 1);
31 ok1(tdb_write_convert(tdb
, offsetof(struct tdb_header
,
33 &features
, sizeof(features
)) == 0);
34 ok1(tdb_write_convert(tdb
, offsetof(struct tdb_header
,
36 &features
, sizeof(features
)) == 0);
39 tdb
= tdb_open("run-features.tdb", flags
[i
], O_RDWR
, 0,
45 /* Should not have changed features offered. */
46 ok1(tdb_read_convert(tdb
, offsetof(struct tdb_header
,
48 &features
, sizeof(features
)) == 0);
49 ok1(features
== (~TDB_FEATURE_MASK
^ 1));
51 /* Should have cleared unknown bits in features_used. */
52 ok1(tdb_read_convert(tdb
, offsetof(struct tdb_header
,
54 &features
, sizeof(features
)) == 0);
55 ok1(features
== (1 & TDB_FEATURE_MASK
));
60 ok1(tap_log_messages
== 0);