From 288e29b7a9eeee59e85d0b26ca66dd1fc770c6a6 Mon Sep 17 00:00:00 2001 From: Garming Sam Date: Fri, 28 Feb 2014 13:19:16 +1300 Subject: [PATCH] param: set the flags on a s3 loadparm context 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 Reviewed-by: Andrew Bartlett Reviewed-by: Nadezhda Ivanova --- 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 7e37e3507ed..12a5bd13e49 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 ebb3417962d..1c59e36b8ee 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 77d8599db7e..04dd56564aa 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 31f6203dd56..f4ec225626f 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 8fffe13ceca..9f9ccd44c52 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; } -- 2.11.4.GIT