s3:registry: add a delete_subkey method to the backend ops.
authorMichael Adam <obnox@samba.org>
Thu, 26 Feb 2009 01:54:50 +0000 (02:54 +0100)
committerMichael Adam <obnox@samba.org>
Thu, 19 Mar 2009 17:04:01 +0000 (18:04 +0100)
This is to provide a more atomic means of deleting a subkey of a key.

Michael

Signed-off-by: Michael Adam <obnox@samba.org>
source/include/proto.h
source/include/reg_objects.h
source/registry/reg_dispatcher.c

index b75ab76ef9724ef4ffea17bbd6b445e10ed81461..c2b318ee0dba7b26043c483ed7c723d3b4d9b301 100644 (file)
@@ -6768,6 +6768,7 @@ void reghook_dump_cache( int debuglevel );
 bool store_reg_keys( REGISTRY_KEY *key, struct regsubkey_ctr *subkeys );
 bool store_reg_values( REGISTRY_KEY *key, REGVAL_CTR *val );
 WERROR create_reg_subkey(REGISTRY_KEY *key, const char *subkey);
+WERROR delete_reg_subkey(REGISTRY_KEY *key, const char *subkey);
 int fetch_reg_keys( REGISTRY_KEY *key, struct regsubkey_ctr *subkey_ctr );
 int fetch_reg_values( REGISTRY_KEY *key, REGVAL_CTR *val );
 bool regkey_access_check( REGISTRY_KEY *key, uint32 requested, uint32 *granted,
index 29cd4c563d92cd6c71280f49dab639c4b46e8152..a03ac1bff461f0e4b45f4b42ee75ca50dbd2233a 100644 (file)
@@ -132,6 +132,7 @@ typedef struct {
        int     (*fetch_values) ( const char *key, REGVAL_CTR *val );
        bool    (*store_subkeys)( const char *key, struct regsubkey_ctr *subkeys );
        WERROR  (*create_subkey)(const char *key, const char *subkey);
+       WERROR  (*delete_subkey)(const char *key, const char *subkey);
        bool    (*store_values)( const char *key, REGVAL_CTR *val );
        bool    (*reg_access_check)( const char *keyname, uint32 requested,
                                     uint32 *granted,
index 555e821bf1a33a3c71ed416d23a0e0336f9efaa6..106d38e9a537d0088c662aa356d9676b8826714b 100644 (file)
@@ -109,6 +109,15 @@ WERROR create_reg_subkey(REGISTRY_KEY *key, const char *subkey)
        return WERR_NOT_SUPPORTED;
 }
 
+WERROR delete_reg_subkey(REGISTRY_KEY *key, const char *subkey)
+{
+       if (key->ops && key->ops->delete_subkey) {
+               return key->ops->delete_subkey(key->name, subkey);
+       }
+
+       return WERR_NOT_SUPPORTED;
+}
+
 /***********************************************************************
  High level wrapper function for enumerating registry subkeys
  Initialize the TALLOC_CTX if necessary