summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGarming Sam <garming@catalyst.net.nz>2014-02-28 12:53:32 +1300
committerAndrew Bartlett <abartlet@samba.org>2014-07-07 23:32:36 +0200
commit39fb65e54c4bf603c20ed01c1834b02e5be8c3c3 (patch)
tree7e9201d0d472d575a72f5dde6691cfd6126dd520
parent85f5f8648c4f1b927ab114ea48a510e8c7004f76 (diff)
downloadsamba-39fb65e54c4bf603c20ed01c1834b02e5be8c3c3.tar.gz
samba-39fb65e54c4bf603c20ed01c1834b02e5be8c3c3.tar.xz
samba-39fb65e54c4bf603c20ed01c1834b02e5be8c3c3.zip
param: replace lp_set_cmdline in s3 helpers to store_cmdline
Change-Id: I9a6ac66eeb8e0dd9ba356f5201f7ac09784b476d Signed-off-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org>
-rw-r--r--lib/param/loadparm.c29
-rw-r--r--lib/param/loadparm.h1
-rw-r--r--lib/param/s3_param.h2
-rw-r--r--source3/param/loadparm.c12
-rw-r--r--source3/param/loadparm_ctx.c2
5 files changed, 32 insertions, 14 deletions
diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
index cd58245148..12e402d080 100644
--- a/lib/param/loadparm.c
+++ b/lib/param/loadparm.c
@@ -1701,16 +1701,19 @@ bool lpcfg_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName,
while (isspace((unsigned char)*pszParmValue)) pszParmValue++;
- if (lp_ctx->s3_fns) {
- return lp_ctx->s3_fns->set_cmdline(pszParmName, pszParmValue);
- }
-
parmnum = lpcfg_map_parameter(pszParmName);
if (parmnum < 0 && strchr(pszParmName, ':')) {
/* set a parametric option */
- return lp_do_parameter_parametric(lp_ctx, NULL, pszParmName,
- pszParmValue, FLAG_CMDLINE);
+ bool ok;
+ ok = lp_do_parameter_parametric(lp_ctx, NULL, pszParmName,
+ pszParmValue, FLAG_CMDLINE);
+ if (lp_ctx->s3_fns != NULL) {
+ if (ok) {
+ lp_ctx->s3_fns->store_cmdline(pszParmName, pszParmValue);
+ }
+ }
+ return ok;
}
if (parmnum < 0) {
@@ -1721,8 +1724,14 @@ bool lpcfg_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName,
/* reset the CMDLINE flag in case this has been called before */
lp_ctx->flags[parmnum] &= ~FLAG_CMDLINE;
- if (!lpcfg_do_global_parameter(lp_ctx, pszParmName, pszParmValue)) {
- return false;
+ if (lp_ctx->s3_fns != NULL) {
+ if (!lp_ctx->s3_fns->lp_do_parameter(-1, pszParmName, pszParmValue)) {
+ return false;
+ }
+ } else {
+ if (!lpcfg_do_global_parameter(lp_ctx, pszParmName, pszParmValue)) {
+ return false;
+ }
}
lp_ctx->flags[parmnum] |= FLAG_CMDLINE;
@@ -1742,6 +1751,10 @@ bool lpcfg_set_cmdline(struct loadparm_context *lp_ctx, const char *pszParmName,
lp_ctx->flags[i] |= FLAG_CMDLINE;
}
+ if (lp_ctx->s3_fns != NULL) {
+ lp_ctx->s3_fns->store_cmdline(pszParmName, pszParmValue);
+ }
+
return true;
}
diff --git a/lib/param/loadparm.h b/lib/param/loadparm.h
index 1c59e36b8e..0b6eed50d1 100644
--- a/lib/param/loadparm.h
+++ b/lib/param/loadparm.h
@@ -285,6 +285,7 @@ int getservicebyname(const char *, struct loadparm_service *);
bool lp_include(struct loadparm_context *, int, const char *, char **);
void init_printer_values(TALLOC_CTX *, struct loadparm_service *);
bool lp_do_section(const char *pszSectionName, void *userdata);
+bool store_lp_set_cmdline(const char *pszParmName, const char *pszParmValue);
int num_parameters(void);
diff --git a/lib/param/s3_param.h b/lib/param/s3_param.h
index 04dd56564a..ac64d29af3 100644
--- a/lib/param/s3_param.h
+++ b/lib/param/s3_param.h
@@ -11,7 +11,7 @@ struct loadparm_s3_helpers
int (*getservicebyname)(const char *, struct loadparm_service *);
int (*get_numservices)(void);
bool (*load)(const char *filename);
- bool (*set_cmdline)(const char *pszParmName, const char *pszParmValue);
+ bool (*store_cmdline)(const char *pszParmName, const char *pszParmValue);
void (*dump)(FILE *f, bool show_defaults, int maxtoprint);
char * (*lp_string)(TALLOC_CTX *ctx, const char *in);
bool (*lp_string_set)(char **dest, const char *src);
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index f4ec225626..70085d3404 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -579,7 +579,7 @@ static struct lp_stored_option *stored_options;
re-applied when we do a globals reset, so that cmdline set options
are sticky across reloads of smb.conf
*/
-static bool store_lp_set_cmdline(const char *pszParmName, const char *pszParmValue)
+bool store_lp_set_cmdline(const char *pszParmName, const char *pszParmValue)
{
struct lp_stored_option *entry, *entry_next;
for (entry = stored_options; entry != NULL; entry = entry_next) {
@@ -2710,12 +2710,16 @@ bool lp_set_cmdline(const char *pszParmName, const char *pszParmValue)
{
bool ret;
TALLOC_CTX *frame = talloc_stackframe();
+ struct loadparm_context *lp_ctx;
- ret = lp_set_cmdline_helper(pszParmName, pszParmValue);
- if (ret) {
- store_lp_set_cmdline(pszParmName, pszParmValue);
+ lp_ctx = loadparm_init_s3(talloc_tos(), loadparm_s3_helpers());
+ if (lp_ctx == NULL) {
+ DEBUG(0, ("loadparm_init_s3 failed\n"));
+ return false;
}
+ ret = lpcfg_set_cmdline(lp_ctx, pszParmName, pszParmValue);
+
TALLOC_FREE(frame);
return ret;
}
diff --git a/source3/param/loadparm_ctx.c b/source3/param/loadparm_ctx.c
index 9f9ccd44c5..a3a7284920 100644
--- a/source3/param/loadparm_ctx.c
+++ b/source3/param/loadparm_ctx.c
@@ -66,7 +66,7 @@ static struct loadparm_s3_helpers s3_fns =
.get_default_loadparm_service = lp_default_loadparm_service,
.get_numservices = lp_numservices,
.load = lp_load_for_s4_ctx,
- .set_cmdline = lp_set_cmdline,
+ .store_cmdline = store_lp_set_cmdline,
.dump = lp_dump,
.lp_string = lp_string,
.lp_string_set = lp_string_set,