libsmbconf: add delete_includes mehtod to the api (and backend implementations)
authorMichael Adam <obnox@samba.org>
Wed, 9 Apr 2008 20:21:15 +0000 (22:21 +0200)
committerMichael Adam <obnox@samba.org>
Wed, 9 Apr 2008 23:29:01 +0000 (01:29 +0200)
Michael
(This used to be commit daef50e54d58a6684b6a890ebf523ca6245f0290)

source3/lib/smbconf/smbconf.c
source3/lib/smbconf/smbconf.h
source3/lib/smbconf/smbconf_private.h
source3/lib/smbconf/smbconf_reg.c
source3/lib/smbconf/smbconf_txt_simple.c

index 7c24c55781d810f8ea0e07ce0b9a986d3d8e1d50..541b163bfb66542ab19af3b204fbf248e76128f1 100644 (file)
@@ -389,3 +389,25 @@ WERROR smbconf_set_global_includes(struct smbconf_ctx *ctx,
 
        return werr;
 }
+
+
+WERROR smbconf_delete_includes(struct smbconf_ctx *ctx, const char *service)
+{
+       if (!smbconf_share_exists(ctx, service)) {
+               return WERR_NO_SUCH_SERVICE;
+       }
+
+       return ctx->ops->delete_includes(ctx, service);
+}
+
+WERROR smbconf_delete_global_includes(struct smbconf_ctx *ctx)
+{
+       WERROR werr;
+
+       werr = smbconf_global_check(ctx);
+       if (W_ERROR_IS_OK(werr)) {
+               werr = smbconf_delete_includes(ctx, GLOBAL_NAME);
+       }
+
+       return werr;
+}
index a18b88f4e54d509cc10a62e04487231dd43790cf..ee7549ac742f88d13d5af2049c0b32666c70b931 100644 (file)
@@ -99,5 +99,7 @@ WERROR smbconf_set_includes(struct smbconf_ctx *ctx,
 WERROR smbconf_set_global_includes(struct smbconf_ctx *ctx,
                                   uint32_t num_includes,
                                   const char **includes);
+WERROR smbconf_delete_includes(struct smbconf_ctx *ctx, const char *service);
+WERROR smbconf_delete_global_includes(struct smbconf_ctx *ctx);
 
 #endif /*  _LIBSMBCONF_H_  */
index bed8f8e5edbd66a9e939929f72ced367b9191cfb..5acba5a40ad0d0d92b7c162151011789e929ee1f 100644 (file)
@@ -58,6 +58,8 @@ struct smbconf_ops {
        WERROR (*set_includes)(struct smbconf_ctx *ctx,
                               const char *service,
                               uint32_t num_includes, const char **includes);
+       WERROR (*delete_includes)(struct smbconf_ctx *ctx,
+                                 const char *service);
 };
 
 struct smbconf_ctx {
index d43c6a15f163f8832280c4c6946bc4f37192addf..b262959afc62f347c85843ffcea11ad8e4041a95 100644 (file)
@@ -999,6 +999,30 @@ done:
        return werr;
 }
 
+static WERROR smbconf_reg_delete_includes(struct smbconf_ctx *ctx,
+                                         const char *service)
+{
+       WERROR werr = WERR_OK;
+       struct registry_key *key = NULL;
+       TALLOC_CTX *tmp_ctx = talloc_stackframe();
+
+       werr = smbconf_reg_open_service_key(tmp_ctx, ctx, service,
+                                           REG_KEY_ALL, &key);
+       if (!W_ERROR_IS_OK(werr)) {
+               goto done;
+       }
+
+       if (!smbconf_value_exists(key, INCLUDES_VALNAME)) {
+               goto done;
+       }
+
+       werr = reg_deletevalue(key, INCLUDES_VALNAME);
+
+
+done:
+       TALLOC_FREE(tmp_ctx);
+       return werr;
+}
 
 struct smbconf_ops smbconf_ops_reg = {
        .init                   = smbconf_reg_init,
@@ -1017,6 +1041,7 @@ struct smbconf_ops smbconf_ops_reg = {
        .delete_parameter       = smbconf_reg_delete_parameter,
        .get_includes           = smbconf_reg_get_includes,
        .set_includes           = smbconf_reg_set_includes,
+       .delete_includes        = smbconf_reg_delete_includes,
 };
 
 
index 9164d1690a9ffe1c050851957726254179085096..1bea6cb8b9ceba7b931a9aeb6fe77645d8f1aed7 100644 (file)
@@ -568,6 +568,13 @@ static WERROR smbconf_txt_set_includes(struct smbconf_ctx *ctx,
        return WERR_NOT_SUPPORTED;
 }
 
+static WERROR smbconf_txt_delete_includes(struct smbconf_ctx *ctx,
+                                         const char *service)
+{
+       return WERR_NOT_SUPPORTED;
+}
+
+
 static struct smbconf_ops smbconf_ops_txt = {
        .init                   = smbconf_txt_init,
        .shutdown               = smbconf_txt_shutdown,
@@ -585,6 +592,7 @@ static struct smbconf_ops smbconf_ops_txt = {
        .delete_parameter       = smbconf_txt_delete_parameter,
        .get_includes           = smbconf_txt_get_includes,
        .set_includes           = smbconf_txt_set_includes,
+       .delete_includes        = smbconf_txt_delete_includes,
 };