smbconf: only include smbconf headers where needed.
[gd/samba-autobuild/.git] / source3 / lib / smbconf / smbconf_reg.c
index b1e34e51645bfd7246d0ccd72cf9c3e5d1c7151e..6c500785a06ccfa564c33973b176fd302e26516a 100644 (file)
@@ -19,6 +19,9 @@
 
 #include "includes.h"
 #include "lib/smbconf/smbconf_private.h"
+#include "registry.h"
+#include "lib/smbconf/smbconf_init.h"
+#include "lib/smbconf/smbconf_reg.h"
 
 #define INCLUDES_VALNAME "includes"
 
@@ -80,12 +83,20 @@ static WERROR smbconf_reg_open_service_key(TALLOC_CTX *mem_ctx,
                                           uint32 desired_access,
                                           struct registry_key **key)
 {
+       WERROR werr;
+
        if (servicename == NULL) {
                *key = rpd(ctx)->base_key;
                return WERR_OK;
        }
-       return reg_openkey(mem_ctx, rpd(ctx)->base_key, servicename,
+       werr = reg_openkey(mem_ctx, rpd(ctx)->base_key, servicename,
                           desired_access, key);
+
+       if (W_ERROR_EQUAL(werr, WERR_BADFILE)) {
+               werr = WERR_NO_SUCH_SERVICE;
+       }
+
+       return werr;
 }
 
 /**
@@ -185,7 +196,7 @@ static WERROR smbconf_reg_set_value(struct registry_key *key,
        if (!strequal(subkeyname, GLOBAL_NAME) &&
            lp_parameter_is_global(valname))
        {
-               DEBUG(5, ("Global paramter '%s' not allowed in "
+               DEBUG(5, ("Global parameter '%s' not allowed in "
                          "service definition ('%s').\n", canon_valname,
                          subkeyname));
                werr = WERR_INVALID_PARAM;
@@ -327,7 +338,7 @@ static WERROR smbconf_reg_get_includes_internal(TALLOC_CTX *mem_ctx,
        }
 
        if (value->type != REG_MULTI_SZ) {
-               /* wront type -- ignore */
+               /* wrong type -- ignore */
                goto done;
        }
 
@@ -559,7 +570,7 @@ static WERROR smbconf_reg_init(struct smbconf_ctx *ctx, const char *path)
        }
 
        werr = reg_open_path(ctx, ctx->path,
-                            SEC_RIGHTS_ENUM_SUBKEYS | REG_KEY_WRITE,
+                            KEY_ENUMERATE_SUB_KEYS | REG_KEY_WRITE,
                             token, &rpd(ctx)->base_key);
        if (!W_ERROR_IS_OK(werr)) {
                goto done;
@@ -828,9 +839,6 @@ static WERROR smbconf_reg_get_share(struct smbconf_ctx *ctx,
        werr = smbconf_reg_open_service_key(tmp_ctx, ctx, servicename,
                                            REG_KEY_READ, &key);
        if (!W_ERROR_IS_OK(werr)) {
-               if (W_ERROR_EQUAL(werr, WERR_BADFILE)) {
-                       werr = WERR_NO_SUCH_SERVICE;
-               }
                goto done;
        }
 
@@ -1066,6 +1074,21 @@ done:
        return werr;
 }
 
+static WERROR smbconf_reg_transaction_start(struct smbconf_ctx *ctx)
+{
+       return regdb_transaction_start();
+}
+
+static WERROR smbconf_reg_transaction_commit(struct smbconf_ctx *ctx)
+{
+       return regdb_transaction_commit();
+}
+
+static WERROR smbconf_reg_transaction_cancel(struct smbconf_ctx *ctx)
+{
+       return regdb_transaction_cancel();
+}
+
 struct smbconf_ops smbconf_ops_reg = {
        .init                   = smbconf_reg_init,
        .shutdown               = smbconf_reg_shutdown,
@@ -1086,6 +1109,9 @@ struct smbconf_ops smbconf_ops_reg = {
        .get_includes           = smbconf_reg_get_includes,
        .set_includes           = smbconf_reg_set_includes,
        .delete_includes        = smbconf_reg_delete_includes,
+       .transaction_start      = smbconf_reg_transaction_start,
+       .transaction_commit     = smbconf_reg_transaction_commit,
+       .transaction_cancel     = smbconf_reg_transaction_cancel,
 };