From a98c08c151b04b5e4a75abdb201d6a554137de39 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Wed, 9 Apr 2008 01:20:36 +0200 Subject: net conf: fix import to correctly add includes (at the end) Michael (This used to be commit 3e81db83707e30ad46a565c9a118e7293b6cdf50) --- source3/utils/net_conf.c | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) (limited to 'source3/utils') diff --git a/source3/utils/net_conf.c b/source3/utils/net_conf.c index e2d88c019d..c01a326c64 100644 --- a/source3/utils/net_conf.c +++ b/source3/utils/net_conf.c @@ -127,6 +127,9 @@ static WERROR import_process_service(struct smbconf_ctx *conf_ctx, { uint32_t idx; WERROR werr = WERR_OK; + uint32_t num_includes = 0; + char **includes = NULL; + TALLOC_CTX *mem_ctx = talloc_stackframe(); if (opt_testmode) { d_printf("[%s]\n", servicename); @@ -148,17 +151,42 @@ static WERROR import_process_service(struct smbconf_ctx *conf_ctx, d_printf("\t%s = %s\n", param_names[idx], param_values[idx]); } else { - werr = smbconf_set_parameter(conf_ctx, - servicename, - param_names[idx], - param_values[idx]); - if (!W_ERROR_IS_OK(werr)) { - goto done; + if (strequal(param_names[idx], "include")) { + includes = TALLOC_REALLOC_ARRAY(mem_ctx, + includes, + char *, + num_includes+1); + if (includes == NULL) { + werr = WERR_NOMEM; + goto done; + } + includes[num_includes] = + talloc_strdup(includes, + param_values[idx]); + if (includes[num_includes] == NULL) { + werr = WERR_NOMEM; + goto done; + } + num_includes++; + } else { + werr = smbconf_set_parameter(conf_ctx, + servicename, + param_names[idx], + param_values[idx]); + if (!W_ERROR_IS_OK(werr)) { + goto done; + } } } } + if (!opt_testmode) { + werr = smbconf_set_includes(conf_ctx, servicename, num_includes, + (const char **)includes); + } + done: + TALLOC_FREE(mem_ctx); return werr; } -- cgit