Add tdb_data_cmp
authorVolker Lendecke <vl@samba.org>
Mon, 13 Jul 2009 15:03:52 +0000 (17:03 +0200)
committerVolker Lendecke <vl@samba.org>
Wed, 15 Jul 2009 08:55:20 +0000 (10:55 +0200)
source3/include/util_tdb.h
source3/lib/util_tdb.c

index c79436434f3209b350992a686df59aa11d07de99..80b95921d7c1c7f509f06cc6513ae4ef26dc5f36 100644 (file)
@@ -59,4 +59,6 @@ struct tdb_wrap *tdb_wrap_open(TALLOC_CTX *mem_ctx,
 
 NTSTATUS map_nt_error_from_tdb(enum TDB_ERROR err);
 
+int tdb_data_cmp(TDB_DATA t1, TDB_DATA t2);
+
 #endif /* __TDBUTIL_H__ */
index 78fa7cd0a15e9503445835eb4733c56fa3dacc6c..5b3d94dabe3b640af76f5fa19ac89c04fa5b8f5b 100644 (file)
@@ -630,3 +630,22 @@ NTSTATUS map_nt_error_from_tdb(enum TDB_ERROR err)
 
        return NT_STATUS_INTERNAL_ERROR;
 }
+
+int tdb_data_cmp(TDB_DATA t1, TDB_DATA t2)
+{
+       int ret;
+       if (t1.dptr == NULL && t2.dptr != NULL) {
+               return -1;
+       }
+       if (t1.dptr != NULL && t2.dptr == NULL) {
+               return 1;
+       }
+       if (t1.dptr == t2.dptr) {
+               return t1.dsize - t2.dsize;
+       }
+       ret = memcmp(t1.dptr, t2.dptr, MIN(t1.dsize, t2.dsize));
+       if (ret == 0) {
+               return t1.dsize - t2.dsize;
+       }
+       return ret;
+}