[PATCH 22/37] param: flag fixes in s3 loadparm
abartlet at samba.org
abartlet at samba.org
Fri Jun 20 05:47:44 MDT 2014
From: Garming Sam <garming at catalyst.net.nz>
In s3 loadparm, the flags are stored in the param table, while in
lib/param, it is individual to a loadparm context.
Change-Id: I23d72eeec6b935c1897b34b8fc49d5a9992f2993
Signed-off-by: Garming Sam <garming at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
---
lib/param/loadparm.c | 10 ++++++++++
source3/param/loadparm.c | 26 +++++++++++++++++++++++++-
2 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
index 23309ec..b04f3f8 100644
--- a/lib/param/loadparm.c
+++ b/lib/param/loadparm.c
@@ -2053,6 +2053,9 @@ void lpcfg_dump_a_service(struct loadparm_service * pService, struct loadparm_se
}
if (pService->param_opt != NULL) {
for (data = pService->param_opt; data; data = data->next) {
+ if (!show_defaults && (data->priority & FLAG_DEFAULT)) {
+ continue;
+ }
fprintf(f, "\t%s = %s\n", data->key, data->value);
}
}
@@ -2575,6 +2578,13 @@ struct loadparm_context *loadparm_init(TALLOC_CTX *mem_ctx)
}
}
+ for (parm=lp_ctx->sDefault->param_opt; parm; parm=parm->next) {
+ if (!(parm->priority & FLAG_CMDLINE)) {
+ parm->priority |= FLAG_DEFAULT;
+ }
+ }
+
+
return lp_ctx;
}
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 464e7c2..ea02172 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -257,6 +257,7 @@ static struct db_context *ServiceHash;
static bool bInGlobalSection = true;
static bool bGlobalOnly = false;
static struct file_lists *file_lists = NULL;
+static unsigned int *flags_list = NULL;
static void set_allowed_client_auth(void);
@@ -659,6 +660,7 @@ 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());
for (i = 0; parm_table[i].label; i++) {
if ((parm_table[i].type == P_STRING ||
@@ -2887,6 +2889,10 @@ static void dump_globals(FILE *f, bool show_defaults)
if (Globals.param_opt != NULL) {
data = Globals.param_opt;
while(data) {
+ if (!show_defaults && (data->priority & FLAG_DEFAULT)) {
+ data = data->next;
+ continue;
+ }
fprintf(f, "\t%s = %s\n", data->key, data->value);
data = data->next;
}
@@ -2900,7 +2906,7 @@ static void dump_globals(FILE *f, bool show_defaults)
static void dump_a_service(struct loadparm_service *pService, FILE * f, bool show_defaults)
{
- return lpcfg_dump_a_service(pService, &sDefault, f, NULL, show_defaults);
+ return lpcfg_dump_a_service(pService, &sDefault, f, flags_list, show_defaults);
}
/***************************************************************************
@@ -3093,7 +3099,12 @@ void lp_killservice(int iServiceIn)
static void lp_save_defaults(void)
{
int i;
+ struct parmlist_entry * parm;
for (i = 0; parm_table[i].label; i++) {
+ if (!(parm_table[i].flags & FLAG_CMDLINE)) {
+ flags_list[i] |= FLAG_DEFAULT;
+ }
+
if (i > 0 && parm_table[i].offset == parm_table[i - 1].offset
&& parm_table[i].p_class == parm_table[i - 1].p_class)
continue;
@@ -3130,6 +3141,19 @@ static void lp_save_defaults(void)
break;
}
}
+
+ for (parm=Globals.param_opt; parm; parm=parm->next) {
+ if (!(parm->priority & FLAG_CMDLINE)) {
+ parm->priority |= FLAG_DEFAULT;
+ }
+ }
+
+ for (parm=sDefault.param_opt; parm; parm=parm->next) {
+ if (!(parm->priority & FLAG_CMDLINE)) {
+ parm->priority |= FLAG_DEFAULT;
+ }
+ }
+
defaults_saved = true;
}
--
1.9.3
More information about the samba-technical
mailing list