param: replace lp_set_cmdline in s3 helpers to store_cmdline
authorGarming Sam <garming@catalyst.net.nz>
Thu, 27 Feb 2014 23:53:32 +0000 (12:53 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 7 Jul 2014 21:32:36 +0000 (23:32 +0200)
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>
lib/param/loadparm.c
lib/param/loadparm.h
lib/param/s3_param.h
source3/param/loadparm.c
source3/param/loadparm_ctx.c

index cd582451485cb76090c5995ee0da3957429bca52..12e402d08052fb2262f902c3f9c972cc87259bc6 100644 (file)
@@ -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;
 }
 
index 1c59e36b8ee95c1f9cb9f6edb3e8a0542cfc018f..0b6eed50d13cff1fbaa1be6e660832f55b084f54 100644 (file)
@@ -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);
 
index 04dd56564aa07f397d0cbe130e809623f5d065b8..ac64d29af3226be7164d3ba97ea208ad6594ffbc 100644 (file)
@@ -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);
index f4ec225626f53743bfa9c62633c0ffd856b91d3d..70085d3404eb8308e228d0ec99fad97932e4758f 100644 (file)
@@ -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;
 }
index 9f9ccd44c524e2c490e815e91c13050943929ded..a3a728492088610380cbc120d0d726ae6bd19779 100644 (file)
@@ -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,