[PATCH 23/37] param: set the flags on a s3 loadparm context

abartlet at samba.org abartlet at samba.org
Fri Jun 20 05:47:45 MDT 2014


From: Garming Sam <garming at catalyst.net.nz>

By setting up the flags when we initialize the context, the flags can be
accessed by lib/param at any time.

Change-Id: I60d4f3a9108560e204cf5f37da9c7d995939e146
Signed-off-by: Garming Sam <garming at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
---
 lib/param/loadparm.c         |  2 ++
 lib/param/loadparm.h         |  1 +
 lib/param/s3_param.h         |  1 +
 source3/param/loadparm.c     | 15 ++++++++++++++-
 source3/param/loadparm_ctx.c |  1 +
 5 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
index b04f3f8..0ee6e17 100644
--- a/lib/param/loadparm.c
+++ b/lib/param/loadparm.c
@@ -2619,6 +2619,8 @@ struct loadparm_context *loadparm_init_s3(TALLOC_CTX *mem_ctx,
 	}
 	loadparm_context->s3_fns = s3_fns;
 	loadparm_context->globals = s3_fns->globals;
+	loadparm_context->flags = s3_fns->flags;
+
 	return loadparm_context;
 }
 
diff --git a/lib/param/loadparm.h b/lib/param/loadparm.h
index ebb3417..1c59e36 100644
--- a/lib/param/loadparm.h
+++ b/lib/param/loadparm.h
@@ -278,6 +278,7 @@ int lp_find_security(int server_role, int security);
 bool lp_is_security_and_server_role_valid(int server_role, int security);
 
 struct loadparm_global * get_globals(void);
+unsigned int * get_flags(void);
 char * lp_string(TALLOC_CTX *, const char *);
 bool lp_string_set(char **, const char *);
 int getservicebyname(const char *, struct loadparm_service *);
diff --git a/lib/param/s3_param.h b/lib/param/s3_param.h
index 77d8599..04dd565 100644
--- a/lib/param/s3_param.h
+++ b/lib/param/s3_param.h
@@ -22,6 +22,7 @@ struct loadparm_s3_helpers
 	bool (*lp_do_parameter)(int, const char *, const char *);
 	bool (*do_section)(const char *pszSectionName, void *userdata);
 	struct loadparm_global *globals;
+	unsigned int *flags;
 };
 
 #endif /* __S3_PARAM_H__ */
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index ea02172..7dc4e99 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -660,7 +660,11 @@ static void init_globals(bool reinit_globals)
 	ZERO_STRUCT(Globals);
 
 	Globals.ctx = talloc_pooled_object(NULL, char, 272, 2048);
-	flags_list = talloc_zero_array(Globals.ctx, unsigned int, num_parameters());
+
+	/* Initialize the flags list if necessary */
+	if (flags_list == NULL) {
+		get_flags();
+	}
 
 	for (i = 0; parm_table[i].label; i++) {
 		if ((parm_table[i].type == P_STRING ||
@@ -4627,3 +4631,12 @@ struct loadparm_global * get_globals(void)
 {
 	return &Globals;
 }
+
+unsigned int * get_flags(void)
+{
+	if (flags_list == NULL) {
+		flags_list = talloc_zero_array(NULL, unsigned int, num_parameters());
+	}
+
+	return flags_list;
+}
diff --git a/source3/param/loadparm_ctx.c b/source3/param/loadparm_ctx.c
index 8fffe13..9f9ccd4 100644
--- a/source3/param/loadparm_ctx.c
+++ b/source3/param/loadparm_ctx.c
@@ -83,5 +83,6 @@ const struct loadparm_s3_helpers *loadparm_s3_helpers(void)
 	struct loadparm_s3_helpers *helpers;
 	helpers = &s3_fns;
 	helpers->globals = get_globals();
+	helpers->flags = get_flags();
 	return helpers;
 }
-- 
1.9.3



More information about the samba-technical mailing list