From: Ralph Boehme Date: Wed, 6 Nov 2019 15:25:00 +0000 (+0100) Subject: lib/param: introduce loadparm_substitution infrastructure X-Git-Tag: ldb-2.1.0~598 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=741bbfd252c272f796d535d653c39abee3569c93;p=thirdparty%2Fsamba.git lib/param: introduce loadparm_substitution infrastructure Pair-Programmed-With: Ralph Boehme Signed-off-by: Stefan Metzmacher Signed-off-by: Ralph Boehme --- diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c index 5334e9c4e5d..759a0a8ca45 100644 --- a/lib/param/loadparm.c +++ b/lib/param/loadparm.c @@ -61,6 +61,7 @@ #include "system/network.h" /* needed for TCP_NODELAY */ #include "../lib/util/dlinklist.h" #include "lib/param/param.h" +#define LOADPARM_SUBSTITUTION_INTERNALS 1 #include "lib/param/loadparm.h" #include "auth/gensec/gensec.h" #include "lib/param/s3_param.h" @@ -3598,3 +3599,31 @@ bool lpcfg_lanman_auth(struct loadparm_context *lp_ctx) return false; } } + +static char *lpcfg_noop_substitution_fn( + TALLOC_CTX *mem_ctx, + const struct loadparm_substitution *lp_sub, + const char *raw_value, + void *private_data) +{ + return talloc_strdup(mem_ctx, raw_value); +} + +static const struct loadparm_substitution global_noop_substitution = { + .substituted_string_fn = lpcfg_noop_substitution_fn, +}; + +const struct loadparm_substitution *lpcfg_noop_substitution(void) +{ + return &global_noop_substitution; +} + +char *lpcfg_substituted_string(TALLOC_CTX *mem_ctx, + const struct loadparm_substitution *lp_sub, + const char *raw_value) +{ + return lp_sub->substituted_string_fn(mem_ctx, + lp_sub, + raw_value, + lp_sub->private_data); +} diff --git a/lib/param/loadparm.h b/lib/param/loadparm.h index d0ce3d312e1..b2d4bd0fb6e 100644 --- a/lib/param/loadparm.h +++ b/lib/param/loadparm.h @@ -310,4 +310,21 @@ bool store_lp_set_cmdline(const char *pszParmName, const char *pszParmValue); int num_parameters(void); +struct loadparm_substitution; +#ifdef LOADPARM_SUBSTITUTION_INTERNALS +struct loadparm_substitution { + char *(*substituted_string_fn)( + TALLOC_CTX *mem_ctx, + const struct loadparm_substitution *lp_sub, + const char *raw_value, + void *private_data); + void *private_data; +}; +#endif /* LOADPARM_SUBSTITUTION_INTERNALS */ + +const struct loadparm_substitution *lpcfg_noop_substitution(void); +char *lpcfg_substituted_string(TALLOC_CTX *mem_ctx, + const struct loadparm_substitution *lp_sub, + const char *raw_value); + #endif /* _LOADPARM_H */