summaryrefslogtreecommitdiffstats
path: root/source4/param/loadparm.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/param/loadparm.c')
-rw-r--r--source4/param/loadparm.c53
1 files changed, 27 insertions, 26 deletions
diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c
index f684830fc7..330a245e51 100644
--- a/source4/param/loadparm.c
+++ b/source4/param/loadparm.c
@@ -260,7 +260,7 @@ struct loadparm_service sDefault = {
/* local variables */
struct loadparm_context {
- struct loadparm_global Globals;
+ struct loadparm_global *globals;
struct loadparm_service **ServicePtrs;
int iNumServices;
struct loadparm_service *currentService;
@@ -623,19 +623,19 @@ static const char *lp_string(const char *s)
*/
#define FN_GLOBAL_STRING(fn_name,var_name) \
- const char *fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->Globals.var_name ? lp_string(lp_ctx->Globals.var_name) : "";}
+ const char *fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->globals->var_name ? lp_string(lp_ctx->globals->var_name) : "";}
#define FN_GLOBAL_CONST_STRING(fn_name,var_name) \
- const char *fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->Globals.var_name ? lp_ctx->Globals.var_name : "";}
+ const char *fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->globals->var_name ? lp_ctx->globals->var_name : "";}
#define FN_GLOBAL_LIST(fn_name,var_name) \
- const char **fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->Globals.var_name;}
+ const char **fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return NULL; return lp_ctx->globals->var_name;}
#define FN_GLOBAL_BOOL(fn_name,var_name) \
- bool fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return false; return lp_ctx->Globals.var_name;}
+ bool fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return false; return lp_ctx->globals->var_name;}
#if 0 /* unused */
#define FN_GLOBAL_CHAR(fn_name,ptr) \
char fn_name(void) {return(*(char *)(ptr));}
#endif
#define FN_GLOBAL_INTEGER(fn_name,var_name) \
- int fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return 0; return lp_ctx->Globals.var_name;}
+ int fn_name(struct loadparm_context *lp_ctx) {if (lp_ctx == NULL) return 0; return lp_ctx->globals->var_name;}
#define FN_LOCAL_STRING(fn_name,val) \
const char *fn_name(struct loadparm_service *service) {return(lp_string((const char *)((service != NULL && service->val != NULL) ? service->val : sDefault.val)));}
@@ -790,7 +790,7 @@ const char *lp_get_parametric(struct loadparm_context *lp_ctx,
char *vfskey;
struct param_opt *data;
- data = (service == NULL ? lp_ctx->Globals.param_opt : service->param_opt);
+ data = (service == NULL ? lp_ctx->globals->param_opt : service->param_opt);
asprintf(&vfskey, "%s:%s", type, option);
strlower(vfskey);
@@ -805,8 +805,8 @@ const char *lp_get_parametric(struct loadparm_context *lp_ctx,
if (service != NULL) {
/* Try to fetch the same option but from globals */
- /* but only if we are not already working with Globals */
- for (data = lp_ctx->Globals.param_opt; data;
+ /* but only if we are not already working with globals */
+ for (data = lp_ctx->globals->param_opt; data;
data = data->next) {
if (strcmp(data->key, vfskey) == 0) {
free(vfskey);
@@ -1153,7 +1153,7 @@ static bool lp_add_hidden(struct loadparm_context *lp_ctx, const char *name,
string_set(service, &service->szPath, tmpdir());
service->comment = talloc_asprintf(service, "%s Service (%s)",
- fstype, lp_ctx->Globals.szServerString);
+ fstype, lp_ctx->globals->szServerString);
string_set(service, &service->fstype, fstype);
service->iMaxConnections = -1;
service->bAvailable = true;
@@ -1251,7 +1251,7 @@ void *lp_parm_ptr(struct loadparm_context *lp_ctx,
if (parm->class == P_LOCAL)
return ((char *)&sDefault)+parm->offset;
else if (parm->class == P_GLOBAL)
- return ((char *)&(lp_ctx->Globals))+parm->offset;
+ return ((char *)lp_ctx->globals)+parm->offset;
else return NULL;
} else {
return ((char *)service) + parm->offset;
@@ -1587,8 +1587,8 @@ static bool lp_do_parameter_parametric(struct loadparm_context *lp_ctx,
strlower(name);
if (service == NULL) {
- data = lp_ctx->Globals.param_opt;
- mem_ctx = lp_ctx;
+ data = lp_ctx->globals->param_opt;
+ mem_ctx = lp_ctx->globals;
} else {
data = service->param_opt;
mem_ctx = service;
@@ -1619,7 +1619,7 @@ static bool lp_do_parameter_parametric(struct loadparm_context *lp_ctx,
paramo->value = talloc_strdup(paramo, pszParmValue);
paramo->flags = flags;
if (service == NULL) {
- DLIST_ADD(lp_ctx->Globals.param_opt, paramo);
+ DLIST_ADD(lp_ctx->globals->param_opt, paramo);
} else {
DLIST_ADD(service->param_opt, paramo);
}
@@ -2098,8 +2098,8 @@ static void dump_globals(struct loadparm_context *lp_ctx, FILE *f, bool show_def
print_parameter(&parm_table[i], lp_parm_ptr(lp_ctx, NULL, &parm_table[i]), f);
fprintf(f, "\n");
}
- if (lp_ctx->Globals.param_opt != NULL) {
- for (data = lp_ctx->Globals.param_opt; data;
+ if (lp_ctx->globals->param_opt != NULL) {
+ for (data = lp_ctx->globals->param_opt; data;
data = data->next) {
fprintf(f, "\t%s = %s\n", data->key, data->value);
}
@@ -2264,12 +2264,12 @@ static int lp_destructor(struct loadparm_context *lp_ctx)
{
struct param_opt *data;
- if (lp_ctx->Globals.param_opt != NULL) {
+ if (lp_ctx->globals->param_opt != NULL) {
struct param_opt *next;
- for (data = lp_ctx->Globals.param_opt; data; data=next) {
+ for (data = lp_ctx->globals->param_opt; data; data=next) {
next = data->next;
if (data->flags & FLAG_CMDLINE) continue;
- DLIST_REMOVE(lp_ctx->Globals.param_opt, data);
+ DLIST_REMOVE(lp_ctx->globals->param_opt, data);
talloc_free(data);
}
}
@@ -2286,12 +2286,13 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
char *myname;
struct loadparm_context *lp_ctx;
- lp_ctx = talloc(mem_ctx, struct loadparm_context);
+ lp_ctx = talloc_zero(mem_ctx, struct loadparm_context);
if (lp_ctx == NULL)
return NULL;
talloc_set_destructor(lp_ctx, lp_destructor);
lp_ctx->bInGlobalSection = true;
+ lp_ctx->globals = talloc_zero(lp_ctx, struct loadparm_global);
DEBUG(3, ("Initialising global parameters\n"));
@@ -2300,7 +2301,7 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
parm_table[i].type == P_USTRING) &&
parm_table[i].offset != -1 &&
!(parm_table[i].flags & FLAG_CMDLINE)) {
- char **r = ((char *)(parm_table[i].class == P_LOCAL)?&sDefault:&(lp_ctx->Globals)) + parm_table[i].offset;
+ char **r = ((char *)(parm_table[i].class == P_LOCAL)?&sDefault:lp_ctx->globals) + parm_table[i].offset;
*r = talloc_strdup(lp_ctx, "");
}
}
@@ -2465,13 +2466,13 @@ bool lp_load(TALLOC_CTX *mem_ctx, const char *filename, struct loadparm_context
filename = talloc_strdup(lp_ctx, filename);
- lp_ctx->Globals.szConfigFile = filename;
+ lp_ctx->globals->szConfigFile = filename;
lp_ctx->bInGlobalSection = true;
- n2 = standard_sub_basic(lp_ctx, lp_ctx->Globals.szConfigFile);
+ n2 = standard_sub_basic(lp_ctx, lp_ctx->globals->szConfigFile);
DEBUG(2, ("lp_load: refreshing parameters from %s\n", n2));
- add_to_file_list(lp_ctx, lp_ctx->Globals.szConfigFile, n2);
+ add_to_file_list(lp_ctx, lp_ctx->globals->szConfigFile, n2);
/* We get sections first, so have to start 'behind' to make up */
lp_ctx->currentService = NULL;
@@ -2490,11 +2491,11 @@ bool lp_load(TALLOC_CTX *mem_ctx, const char *filename, struct loadparm_context
bLoaded = true;
- if (!lp_ctx->Globals.szWINSservers && lp_ctx->Globals.bWINSsupport) {
+ if (!lp_ctx->globals->szWINSservers && lp_ctx->globals->bWINSsupport) {
lp_do_global_parameter(lp_ctx, "wins server", "127.0.0.1");
}
- panic_action = lp_ctx->Globals.panic_action;
+ panic_action = lp_ctx->globals->panic_action;
reload_charcnv();