s3:registry: add a create_subkey method to the backend ops.
authorMichael Adam <obnox@samba.org>
Wed, 25 Feb 2009 20:59:54 +0000 (21:59 +0100)
committerMichael Adam <obnox@samba.org>
Thu, 26 Feb 2009 12:22:54 +0000 (13:22 +0100)
This is to provide a more atomic means of adding a subkey of a key.

Michael

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

index 2a99b4af6234013840999a81d7f4be0208826904..a4187dc2c6cd7405d5311fb14bce3c45da1020de 100644 (file)
@@ -5095,6 +5095,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 );
 
 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);
 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,
 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 421db72d29f4e39859483fed96a2f2807242a4ec..29cd4c563d92cd6c71280f49dab639c4b46e8152 100644 (file)
@@ -131,6 +131,7 @@ typedef struct {
        int     (*fetch_subkeys)( const char *key, struct regsubkey_ctr *subkeys);
        int     (*fetch_values) ( const char *key, REGVAL_CTR *val );
        bool    (*store_subkeys)( const char *key, struct regsubkey_ctr *subkeys );
        int     (*fetch_subkeys)( const char *key, struct regsubkey_ctr *subkeys);
        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);
        bool    (*store_values)( const char *key, REGVAL_CTR *val );
        bool    (*reg_access_check)( const char *keyname, uint32 requested,
                                     uint32 *granted,
        bool    (*store_values)( const char *key, REGVAL_CTR *val );
        bool    (*reg_access_check)( const char *keyname, uint32 requested,
                                     uint32 *granted,
index 0db9e1b14662e15526af4db681114603fe68007c..555e821bf1a33a3c71ed416d23a0e0336f9efaa6 100644 (file)
@@ -100,6 +100,15 @@ bool store_reg_values( REGISTRY_KEY *key, REGVAL_CTR *val )
        return false;
 }
 
        return false;
 }
 
+WERROR create_reg_subkey(REGISTRY_KEY *key, const char *subkey)
+{
+       if (key->ops && key->ops->create_subkey) {
+               return key->ops->create_subkey(key->name, subkey);
+       }
+
+       return WERR_NOT_SUPPORTED;
+}
+
 /***********************************************************************
  High level wrapper function for enumerating registry subkeys
  Initialize the TALLOC_CTX if necessary
 /***********************************************************************
  High level wrapper function for enumerating registry subkeys
  Initialize the TALLOC_CTX if necessary