]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ldb: ldbdump key and pack format version comments
authorAaron Haslett <aaronhaslett@catalyst.net.nz>
Mon, 20 May 2019 04:19:51 +0000 (16:19 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 22 May 2019 05:58:17 +0000 (05:58 +0000)
For testing we need to know the actual KV level key of records and each
record's pack format version. This patch makes ldbdump add comments with
that info. We will parse it out in python tests.

Signed-off-by: Aaron Haslett <aaronhaslett@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Wed May 22 05:58:17 UTC 2019 on sn-devel-184

lib/ldb/tools/ldbdump.c

index eb237e89b4405f3fd43acffd1a38be36f86f8507..5cdb7d850a323b593f655fb8ec44fe70c34a01d8 100644 (file)
@@ -36,6 +36,26 @@ static struct ldb_context *ldb;
 bool show_index = false;
 bool validate_contents = false;
 
+static void print_data(TDB_DATA d)
+{
+       unsigned char *p = (unsigned char *)d.dptr;
+       int len = d.dsize;
+       while (len--) {
+               if (isprint(*p) && !strchr("\"\\", *p)) {
+                       fputc(*p, stdout);
+               } else {
+                       printf("\\%02X", *p);
+               }
+               p++;
+       }
+}
+
+static unsigned int pull_uint32(uint8_t *p)
+{
+       return p[0] | (p[1]<<8) | (p[2]<<16) | (p[3]<<24);
+}
+
+
 static int traverse_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA _dbuf, void *state)
 {
        int ret, i, j;
@@ -79,6 +99,10 @@ static int traverse_fn(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA _dbuf, void *sta
                }
        }
 
+       printf("# key: ");
+       print_data(key);
+       printf("\n# pack format: %#010x\n", pull_uint32(_dbuf.dptr));
+
        if (!validate_contents || ldb_dn_is_special(msg->dn)) {
                ldb_ldif_write_file(ldb, stdout, &ldif);
                TALLOC_FREE(msg);