[PATCH 04/37] lib/param: factor out a common portion of set_variable

abartlet at samba.org abartlet at samba.org
Fri Jun 20 05:47:26 MDT 2014


From: Garming Sam <garming at catalyst.net.nz>

Change-Id: Id8eeb480a377b4df8c3f51daf0d253f032fd0e83
Signed-off-by: Garming Sam <garming at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
---
 lib/param/loadparm.c | 44 ++++++++++++++++++++++++++++++--------------
 1 file changed, 30 insertions(+), 14 deletions(-)

diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
index 5a0ef88..836995a 100644
--- a/lib/param/loadparm.c
+++ b/lib/param/loadparm.c
@@ -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;
-- 
1.9.3



More information about the samba-technical mailing list