param: setup more variables in for the temporary loadparm context for the special...
authorGarming Sam <garming@catalyst.net.nz>
Fri, 21 Feb 2014 04:59:19 +0000 (17:59 +1300)
committerJeremy Allison <jra@samba.org>
Wed, 7 May 2014 17:49:16 +0000 (19:49 +0200)
In doing so, the loadparm context definition is now also moved to the loadparm.h header.

This means that the loadparm context is no longer private to the
lib/param code and that the source3 code can now override the values
within it.

Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
lib/param/loadparm.c
lib/param/loadparm.h
source3/param/loadparm.c

index 63b8edd201af6c2d37adad9c43be38a73eff453d..2b8ea237a0624f094ce18b69e1a3ea24ad47bc69 100644 (file)
@@ -93,26 +93,6 @@ static bool defaults_saved = false;
 
 #include "lib/param/param_table.c"
 
-/* local variables */
-struct loadparm_context {
-       const char *szConfigFile;
-       struct loadparm_global *globals;
-       struct loadparm_service **services;
-       struct loadparm_service *sDefault;
-       struct smb_iconv_handle *iconv_handle;
-       int iNumServices;
-       struct loadparm_service *currentService;
-       bool bInGlobalSection;
-       struct file_lists *file_lists;
-       unsigned int flags[NUMPARAMETERS];
-       bool loaded;
-       bool refuse_free;
-       bool global; /* Is this the global context, which may set
-                     * global variables such as debug level etc? */
-       const struct loadparm_s3_helpers *s3_fns;
-};
-
-
 struct loadparm_service *lpcfg_default_service(struct loadparm_context *lp_ctx)
 {
        if (lp_ctx->s3_fns) {
@@ -2079,6 +2059,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
        lp_ctx->bInGlobalSection = true;
        lp_ctx->globals = talloc_zero(lp_ctx, struct loadparm_global);
        lp_ctx->sDefault = talloc_zero(lp_ctx, struct loadparm_service);
+       lp_ctx->flags = talloc_zero_array(lp_ctx, unsigned int, NUMPARAMETERS);
 
        lp_ctx->sDefault->iMaxPrintJobs = 1000;
        lp_ctx->sDefault->bAvailable = true;
index 70443a97ead8c6230f1f51d0e8b3a6b5bd60ae8d..3f934139d7df956dcb5e7349382811b218ebe041 100644 (file)
@@ -48,7 +48,23 @@ struct enum_list {
 };
 
 struct loadparm_service;
-struct loadparm_context;
+struct loadparm_context {
+       const char *szConfigFile;
+       struct loadparm_global *globals;
+       struct loadparm_service **services;
+       struct loadparm_service *sDefault;
+       struct smb_iconv_handle *iconv_handle;
+       int iNumServices;
+       struct loadparm_service *currentService;
+       bool bInGlobalSection;
+       struct file_lists *file_lists;
+       unsigned int *flags;
+       bool loaded;
+       bool refuse_free;
+       bool global; /* Is this the global context, which may set
+                     * global variables such as debug level etc? */
+       const struct loadparm_s3_helpers *s3_fns;
+};
 
 struct parm_struct {
        const char *label;
index 6e375aed3fcff90769da0d69ecb077f156d16f18..ff1f7250cbf08d034f9afad509f5e83479317323 100644 (file)
@@ -2768,6 +2768,8 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
                bool ok;
                struct loadparm_context *lp_ctx = loadparm_init_s3(talloc_tos(),
                                                                   loadparm_s3_helpers());
+               lp_ctx->sDefault = &sDefault;
+               lp_ctx->services = ServicePtrs;
                ok = parm_table[parmnum].special(lp_ctx, snum, pszParmValue,
                                                  (char **)parm_ptr);
                TALLOC_FREE(lp_ctx);