param: set the flags on a s3 loadparm context
authorGarming Sam <garming@catalyst.net.nz>
Fri, 28 Feb 2014 00:19:16 +0000 (13:19 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 7 Jul 2014 21:32:36 +0000 (23:32 +0200)
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@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Nadezhda Ivanova <nivanova@samba.org>
lib/param/loadparm.c
lib/param/loadparm.h
lib/param/s3_param.h
source3/param/loadparm.c
source3/param/loadparm_ctx.c

index 7e37e3507edd500f9a05019c8e507abb512767fe..12a5bd13e493c0ca1873417ff84cfac1d2aa8982 100644 (file)
@@ -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;
 }
 
index ebb3417962dc7eb211818e64dbd48028f6cdc7f1..1c59e36b8ee95c1f9cb9f6edb3e8a0542cfc018f 100644 (file)
@@ -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 *);
index 77d8599db7ea4aab40703ac3b7d9473d1de4bb8f..04dd56564aa07f397d0cbe130e809623f5d065b8 100644 (file)
@@ -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__ */
index 31f6203dd56b8159de227a81785f0e5e1090baca..f4ec225626f53743bfa9c62633c0ffd856b91d3d 100644 (file)
@@ -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;
+}
index 8fffe13cecad7b128fd739eb9ff17d1f528f8a54..9f9ccd44c524e2c490e815e91c13050943929ded 100644 (file)
@@ -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;
 }