s3:registry: add function regsubkey_ctr_reinit()
authorMichael Adam <obnox@samba.org>
Wed, 15 Jul 2009 10:47:12 +0000 (12:47 +0200)
committerMichael Adam <obnox@samba.org>
Wed, 15 Jul 2009 12:01:57 +0000 (14:01 +0200)
This reinitializes an already allocated regsubkey_ctr structure,
emptying out the subkey array and hash table.

Michael

source3/include/proto.h
source3/registry/reg_objects.c

index 56bffd5ce703d39efaa1ffc244b03718bb4a1c55..7bbdc04ae7d8a2aa05d63873d4ff334d6e3d7f3d 100644 (file)
@@ -5097,6 +5097,7 @@ WERROR registry_init_smbconf(const char *keyname);
 /* The following definitions come from registry/reg_objects.c  */
 
 WERROR regsubkey_ctr_init(TALLOC_CTX *mem_ctx, struct regsubkey_ctr **ctr);
+WERROR regsubkey_ctr_reinit(struct regsubkey_ctr *ctr);
 WERROR regsubkey_ctr_set_seqnum(struct regsubkey_ctr *ctr, int seqnum);
 int regsubkey_ctr_get_seqnum(struct regsubkey_ctr *ctr);
 WERROR regsubkey_ctr_addkey( struct regsubkey_ctr *ctr, const char *keyname );
index a592c76e1d1433a5cc9ddde832249b1eb1ef2e7d..0c0455aadadb21bca029c37412d3daea4f336c01 100644 (file)
@@ -63,6 +63,29 @@ WERROR regsubkey_ctr_init(TALLOC_CTX *mem_ctx, struct regsubkey_ctr **ctr)
        return WERR_OK;
 }
 
+/**
+ * re-initialize the list of subkeys (to the emtpy list)
+ * in an already allocated regsubkey_ctr
+ */
+
+WERROR regsubkey_ctr_reinit(struct regsubkey_ctr *ctr)
+{
+       if (ctr == NULL) {
+               return WERR_INVALID_PARAM;
+       }
+
+       talloc_free(ctr->subkeys_hash);
+       ctr->subkeys_hash = db_open_rbt(ctr);
+       W_ERROR_HAVE_NO_MEMORY(ctr->subkeys_hash);
+
+       TALLOC_FREE(ctr->subkeys);
+
+       ctr->num_subkeys = 0;
+       ctr->seqnum = 0;
+
+       return WERR_OK;
+}
+
 WERROR regsubkey_ctr_set_seqnum(struct regsubkey_ctr *ctr, int seqnum)
 {
        if (ctr == NULL) {