lib/param: factor out a common portion of set_variable
authorGarming Sam <garming@catalyst.net.nz>
Tue, 25 Feb 2014 23:28:49 +0000 (12:28 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 7 Jul 2014 21:32:35 +0000 (23:32 +0200)
Change-Id: Id8eeb480a377b4df8c3f51daf0d253f032fd0e83
Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Nadezhda Ivanova <nivanova@samba.org>
lib/param/loadparm.c

index c8f34e709d4f16dc4ad8c9765b03425b1a5df80c..42dbacebd2b0ed6b7fdbfb9acc8ebb2ebeab1c96 100644 (file)
@@ -1399,23 +1399,12 @@ static bool lp_do_parameter_parametric(struct loadparm_context *lp_ctx,
        return true;
 }
 
-static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr,
-                        const char *pszParmName, const char *pszParmValue,
-                        struct loadparm_context *lp_ctx, bool on_globals)
+bool set_variable_helper(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr,
+                        const char *pszParmName, const char *pszParmValue)
 {
        int i;
-       /* if it is a special case then go ahead */
-       if (parm_table[parmnum].special) {
-               bool ret;
-               ret = parm_table[parmnum].special(lp_ctx, -1, pszParmValue,
-                                                 (char **)parm_ptr);
-               if (!ret) {
-                       return false;
-               }
-               goto mark_non_default;
-       }
 
-       /* now switch on the type of variable it is */
+       /* switch on the type of variable it is */
        switch (parm_table[parmnum].type)
        {
                case P_BOOL: {
@@ -1527,6 +1516,33 @@ static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr,
                        break;
        }
 
+       return true;
+
+}
+
+static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr,
+                        const char *pszParmName, const char *pszParmValue,
+                        struct loadparm_context *lp_ctx, bool on_globals)
+{
+       int i;
+       bool ok;
+
+       /* if it is a special case then go ahead */
+       if (parm_table[parmnum].special) {
+               ok = parm_table[parmnum].special(lp_ctx, -1, pszParmValue,
+                                                 (char **)parm_ptr);
+               if (!ok) {
+                       return false;
+               }
+               goto mark_non_default;
+       }
+
+       ok = set_variable_helper(mem_ctx, parmnum, parm_ptr, pszParmName, pszParmValue);
+
+       if (!ok) {
+               return false;
+       }
+
 mark_non_default:
        if (on_globals && (lp_ctx->flags[parmnum] & FLAG_DEFAULT)) {
                lp_ctx->flags[parmnum] &= ~FLAG_DEFAULT;