run-zero-append.c 951 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #define _XOPEN_SOURCE 500
  2. #include <ccan/tdb/tdb.h>
  3. #include <ccan/tdb/io.c>
  4. #include <ccan/tdb/tdb.c>
  5. #include <ccan/tdb/lock.c>
  6. #include <ccan/tdb/freelist.c>
  7. #include <ccan/tdb/traverse.c>
  8. #include <ccan/tdb/transaction.c>
  9. #include <ccan/tdb/error.c>
  10. #include <ccan/tdb/open.c>
  11. #include <ccan/tdb/check.c>
  12. #include <ccan/tap/tap.h>
  13. #include <stdlib.h>
  14. #include <err.h>
  15. #include "logging.h"
  16. int main(int argc, char *argv[])
  17. {
  18. struct tdb_context *tdb;
  19. TDB_DATA key, data;
  20. plan_tests(4);
  21. tdb = tdb_open_ex(NULL, 1024, TDB_INTERNAL, O_CREAT|O_TRUNC|O_RDWR,
  22. 0600, &taplogctx, NULL);
  23. ok1(tdb);
  24. /* Tickle bug on appending zero length buffer to zero length buffer. */
  25. key.dsize = strlen("hi");
  26. key.dptr = (void *)"hi";
  27. data.dptr = (void *)"world";
  28. data.dsize = 0;
  29. ok1(tdb_append(tdb, key, data) == 0);
  30. ok1(tdb_append(tdb, key, data) == 0);
  31. data = tdb_fetch(tdb, key);
  32. ok1(data.dsize == 0);
  33. tdb_close(tdb);
  34. return exit_status();
  35. }