X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Ftest%2Frun-tdb1-corrupt.c;h=f87afd8a6ab7ff210d6963fc4003d98a55145dfd;hp=2a8d31bf6610e8348a9928f85658f8e7a5f9347b;hb=c8c3b3568677e8b0105f84e4ab068c580faf4591;hpb=22d0e0dc59fc9d7e0046fec6971ef478c2d604fd diff --git a/ccan/tdb2/test/run-tdb1-corrupt.c b/ccan/tdb2/test/run-tdb1-corrupt.c index 2a8d31bf..f87afd8a 100644 --- a/ccan/tdb2/test/run-tdb1-corrupt.c +++ b/ccan/tdb2/test/run-tdb1-corrupt.c @@ -2,7 +2,7 @@ #include #include #include -#include "tdb1-logging.h" +#include "logging.h" static int check(TDB_DATA key, TDB_DATA data, void *private) { @@ -23,24 +23,24 @@ static int check(TDB_DATA key, TDB_DATA data, void *private) return 0; } -static void tdb1_flip_bit(struct tdb1_context *tdb, unsigned int bit) +static void tdb1_flip_bit(struct tdb_context *tdb, unsigned int bit) { unsigned int off = bit / CHAR_BIT; unsigned char mask = (1 << (bit % CHAR_BIT)); - if (tdb->map_ptr) - ((unsigned char *)tdb->map_ptr)[off] ^= mask; + if (tdb->file->map_ptr) + ((unsigned char *)tdb->file->map_ptr)[off] ^= mask; else { unsigned char c; - if (pread(tdb->fd, &c, 1, off) != 1) + if (pread(tdb->file->fd, &c, 1, off) != 1) err(1, "pread"); c ^= mask; - if (pwrite(tdb->fd, &c, 1, off) != 1) + if (pwrite(tdb->file->fd, &c, 1, off) != 1) err(1, "pwrite"); } } -static void check_test(struct tdb1_context *tdb) +static void check_test(struct tdb_context *tdb) { TDB_DATA key, data; unsigned int i, verifiable, corrupt, sizes[2], dsize, ksize; @@ -78,7 +78,7 @@ static void check_test(struct tdb1_context *tdb) verifiable += ksize + dsize; /* Flip one bit at a time, make sure it detects verifiable bytes. */ - for (i = 0, corrupt = 0; i < tdb->map_size * CHAR_BIT; i++) { + for (i = 0, corrupt = 0; i < tdb->file->map_size * CHAR_BIT; i++) { tdb1_flip_bit(tdb, i); memset(sizes, 0, sizeof(sizes)); if (tdb1_check(tdb, check, sizes) != 0) @@ -93,26 +93,31 @@ static void check_test(struct tdb1_context *tdb) int main(int argc, char *argv[]) { - struct tdb1_context *tdb; + struct tdb_context *tdb; + union tdb_attribute hsize; + + hsize.base.attr = TDB_ATTRIBUTE_TDB1_HASHSIZE; + hsize.base.next = &tap_log_attr; + hsize.tdb1_hashsize.hsize = 2; plan_tests(4); /* This should use mmap. */ - tdb = tdb1_open_ex("run-corrupt.tdb", 2, TDB_DEFAULT, - O_CREAT|O_TRUNC|O_RDWR, 0600, &taplogctx, NULL); + tdb = tdb_open("run-corrupt.tdb1", TDB_VERSION1, + O_CREAT|O_TRUNC|O_RDWR, 0600, &hsize); if (!tdb) abort(); check_test(tdb); - tdb1_close(tdb); + tdb_close(tdb); /* This should not. */ - tdb = tdb1_open_ex("run-corrupt.tdb", 2, TDB_NOMMAP, - O_CREAT|O_TRUNC|O_RDWR, 0600, &taplogctx, NULL); + tdb = tdb_open("run-corrupt.tdb1", TDB_VERSION1|TDB_NOMMAP, + O_CREAT|O_TRUNC|O_RDWR, 0600, &hsize); if (!tdb) abort(); check_test(tdb); - tdb1_close(tdb); + tdb_close(tdb); return exit_status(); }