summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2009-02-26 02:54:50 +0100
committerMichael Adam <obnox@samba.org>2009-02-26 13:22:55 +0100
commit97508eefb78598fcf15c07b4c0cb92dbf21c30f7 (patch)
tree1dbe3cfc92c06c47135900debb2b0bafb22b27dd
parent61bdfd09edbdea38486bbca3c148d224c7d523fc (diff)
downloadsamba-97508eefb78598fcf15c07b4c0cb92dbf21c30f7.tar.gz
samba-97508eefb78598fcf15c07b4c0cb92dbf21c30f7.tar.bz2
samba-97508eefb78598fcf15c07b4c0cb92dbf21c30f7.zip
s3:registry: add a delete_subkey method to the backend ops.
This is to provide a more atomic means of deleting a subkey of a key. Michael
-rw-r--r--source3/include/proto.h1
-rw-r--r--source3/include/reg_objects.h1
-rw-r--r--source3/registry/reg_dispatcher.c9
3 files changed, 11 insertions, 0 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index a4187dc2c6..27b4ce9604 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -5096,6 +5096,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,
diff --git a/source3/include/reg_objects.h b/source3/include/reg_objects.h
index 29cd4c563d..a03ac1bff4 100644
--- a/source3/include/reg_objects.h
+++ b/source3/include/reg_objects.h
@@ -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,
diff --git a/source3/registry/reg_dispatcher.c b/source3/registry/reg_dispatcher.c
index 555e821bf1..106d38e9a5 100644
--- a/source3/registry/reg_dispatcher.c
+++ b/source3/registry/reg_dispatcher.c
@@ -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