]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:param: split out lp_parm_substituted_string()
authorStefan Metzmacher <metze@samba.org>
Tue, 15 Oct 2019 10:29:08 +0000 (12:29 +0200)
committerStefan Metzmacher <metze@samba.org>
Wed, 27 Nov 2019 10:25:31 +0000 (10:25 +0000)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/include/proto.h
source3/param/loadparm.c

index 15ed176d11c8ba98e50dc4cba9694924623223a9..93467167189b4ffb1060e4d1e7bdc41aae8cedd4 100644 (file)
@@ -733,6 +733,13 @@ NTSTATUS trust_pw_change(struct netlogon_creds_cli_context *context,
 
 const struct loadparm_substitution *loadparm_s3_global_substitution(void);
 
+char *lp_parm_substituted_string(TALLOC_CTX *mem_ctx,
+                                const struct loadparm_substitution *lp_sub,
+                                int snum,
+                                const char *type,
+                                const char *option,
+                                const char *def);
+
 #include "source3/param/param_proto.h"
 
 char *lp_servicename(TALLOC_CTX *ctx, int);
index 15abf281dd7d7a0d94cd866e94edbbcab7f98753..d7421d38fd66595ea96c21e0546ab591466b377c 100644 (file)
@@ -1232,19 +1232,40 @@ static int lp_enum(const char *s,const struct enum_list *_enum)
 
 /* Return parametric option from a given service. Type is a part of option before ':' */
 /* Parametric option has following syntax: 'Type: option = value' */
-char *lp_parm_talloc_string(TALLOC_CTX *ctx, int snum, const char *type, const char *option, const char *def)
+char *lp_parm_substituted_string(TALLOC_CTX *mem_ctx,
+                                const struct loadparm_substitution *lp_sub,
+                                int snum,
+                                const char *type,
+                                const char *option,
+                                const char *def)
 {
        struct parmlist_entry *data = get_parametrics(snum, type, option);
 
+       SMB_ASSERT(lp_sub != NULL);
+
        if (data == NULL||data->value==NULL) {
                if (def) {
-                       return lp_string(ctx, def);
+                       return lpcfg_substituted_string(mem_ctx, lp_sub, def);
                } else {
                        return NULL;
                }
        }
 
-       return lp_string(ctx, data->value);
+       return lpcfg_substituted_string(mem_ctx, lp_sub, data->value);
+}
+
+char *lp_parm_talloc_string(TALLOC_CTX *mem_ctx,
+                           int snum,
+                           const char *type,
+                           const char *option,
+                           const char *def)
+{
+       return lp_parm_substituted_string(mem_ctx,
+                                         &s3_global_substitution,
+                                         snum,
+                                         type,
+                                         option,
+                                         def);
 }
 
 /* Return parametric option from a given service. Type is a part of option before ':' */