]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
libsmbconf: add get_includes() and set_includes() to the API.
authorMichael Adam <obnox@samba.org>
Mon, 7 Apr 2008 23:56:32 +0000 (01:56 +0200)
committerMichael Adam <obnox@samba.org>
Wed, 9 Apr 2008 23:28:57 +0000 (01:28 +0200)
Includes have to get a special treatment, at least for registry.
Includes are not like other smbconf parameters: they are some kind
of metainformation. "include" has two effects when stated twice so
it can not be stored boldly into registry, since there can only be
one value named "include" in registry per key.

I will provide special handling for includes for the registry backend.

This patch provides the necessary methods in the smbconf API.

Michael

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

index 453e228c2c7e2b1d8bc8823708a571f09d2ccce5..1ce761ebd4e1151241ed22b709947030ae2f966c 100644 (file)
@@ -335,3 +335,25 @@ WERROR smbconf_delete_global_parameter(struct smbconf_ctx *ctx,
 
        return werr;
 }
+
+WERROR smbconf_get_includes(struct smbconf_ctx *ctx,
+                           const char *service,
+                           uint32_t *num_includes, char ***includes)
+{
+       if (!smbconf_share_exists(ctx, service)) {
+               return WERR_NO_SUCH_SERVICE;
+       }
+
+       return ctx->ops->get_includes(ctx, service, num_includes, includes);
+}
+
+WERROR smbconf_set_includes(struct smbconf_ctx *ctx,
+                           const char *service,
+                           uint32_t num_includes, const char **includes)
+{
+       if (!smbconf_share_exists(ctx, service)) {
+               return WERR_NO_SUCH_SERVICE;
+       }
+
+       return ctx->ops->set_includes(ctx, service, num_includes, includes);
+}
index d333f6c88c6eaf0debca8df9cca6b1aefbb9df6b..626d48e9620e46220e97fb3d61666ccb92156dfc 100644 (file)
@@ -86,5 +86,11 @@ WERROR smbconf_delete_parameter(struct smbconf_ctx *ctx,
                                const char *service, const char *param);
 WERROR smbconf_delete_global_parameter(struct smbconf_ctx *ctx,
                                       const char *param);
+WERROR smbconf_get_includes(struct smbconf_ctx *ctx,
+                           const char *service,
+                           uint32_t *num_includes, char ***includes);
+WERROR smbconf_set_includes(struct smbconf_ctx *ctx,
+                           const char *service,
+                           uint32_t num_includes, const char **includes);
 
 #endif /*  _LIBSMBCONF_H_  */
index 44229e26ec34d97ba46823208dff8c804d8a8162..1f26fca1ea546bd11656c6b44af25e958961ac80 100644 (file)
@@ -51,6 +51,12 @@ struct smbconf_ops {
                                char **valstr);
        WERROR (*delete_parameter)(struct smbconf_ctx *ctx,
                                   const char *service, const char *param);
+       WERROR (*get_includes)(struct smbconf_ctx *ctx,
+                              const char *service,
+                              uint32_t *num_includes, char ***includes);
+       WERROR (*set_includes)(struct smbconf_ctx *ctx,
+                              const char *service,
+                              uint32_t num_includes, const char **includes);
 };
 
 struct smbconf_ctx {
index 6d24aecbff7a0284cde8f635cf78bb8842eafeda..0f499e3146dd0df77346fa19f88c99058daf2318 100644 (file)
@@ -776,6 +776,23 @@ done:
        return werr;
 }
 
+static WERROR smbconf_reg_get_includes(struct smbconf_ctx *ctx,
+                                      const char *service,
+                                      uint32_t *num_includes,
+                                      char ***includes)
+{
+       return WERR_NOT_SUPPORTED;
+}
+
+static WERROR smbconf_reg_set_includes(struct smbconf_ctx *ctx,
+                                      const char *service,
+                                      uint32_t num_includes,
+                                      const char **includes)
+{
+       return WERR_NOT_SUPPORTED;
+}
+
+
 struct smbconf_ops smbconf_ops_reg = {
        .init                   = smbconf_reg_init,
        .shutdown               = smbconf_reg_shutdown,
@@ -790,7 +807,9 @@ struct smbconf_ops smbconf_ops_reg = {
        .delete_share           = smbconf_reg_delete_share,
        .set_parameter          = smbconf_reg_set_parameter,
        .get_parameter          = smbconf_reg_get_parameter,
-       .delete_parameter       = smbconf_reg_delete_parameter
+       .delete_parameter       = smbconf_reg_delete_parameter,
+       .get_includes           = smbconf_reg_get_includes,
+       .set_includes           = smbconf_reg_set_includes,
 };
 
 
index e87cd04d16f638a7357cd6b9c8d79d238bbc4c1a..9273b7947b91def78a045f1aa5867d0a135c1615 100644 (file)
@@ -494,6 +494,22 @@ static WERROR smbconf_txt_delete_parameter(struct smbconf_ctx *ctx,
        return WERR_NOT_SUPPORTED;
 }
 
+static WERROR smbconf_txt_get_includes(struct smbconf_ctx *ctx,
+                                      const char *service,
+                                      uint32_t *num_includes,
+                                      char ***includes)
+{
+       return WERR_NOT_SUPPORTED;
+}
+
+static WERROR smbconf_txt_set_includes(struct smbconf_ctx *ctx,
+                                      const char *service,
+                                      uint32_t num_includes,
+                                      const char **includes)
+{
+       return WERR_NOT_SUPPORTED;
+}
+
 static struct smbconf_ops smbconf_ops_txt = {
        .init                   = smbconf_txt_init,
        .shutdown               = smbconf_txt_shutdown,
@@ -508,7 +524,9 @@ static struct smbconf_ops smbconf_ops_txt = {
        .delete_share           = smbconf_txt_delete_share,
        .set_parameter          = smbconf_txt_set_parameter,
        .get_parameter          = smbconf_txt_get_parameter,
-       .delete_parameter       = smbconf_txt_delete_parameter
+       .delete_parameter       = smbconf_txt_delete_parameter,
+       .get_includes           = smbconf_txt_get_includes,
+       .set_includes           = smbconf_txt_set_includes,
 };