[PATCH 10/37] param: make some more changes to lp_do_parameter to match set_variable_helper
abartlet at samba.org
abartlet at samba.org
Fri Jun 20 05:47:32 MDT 2014
From: Garming Sam <garming at catalyst.net.nz>
Attempting to make the code match exactly before moving it over.
Change-Id: Ie7a30d5477f3fbf95f8f43e1ac1f76b581d87709
Signed-off-by: Garming Sam <garming at catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
---
lib/param/loadparm.c | 2 +-
source3/param/loadparm.c | 48 ++++++++++++++++++++++++++++++------------------
2 files changed, 31 insertions(+), 19 deletions(-)
diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c
index 44eb0a3..139a11c 100644
--- a/lib/param/loadparm.c
+++ b/lib/param/loadparm.c
@@ -543,7 +543,7 @@ bool lpcfg_string_set(TALLOC_CTX *mem_ctx, char **dest, const char *src)
* Set a string value, deallocating any existing space, and allocing the space
* for the string
*/
-static bool lpcfg_string_set_upper(TALLOC_CTX *mem_ctx, char **dest, const char *src)
+bool lpcfg_string_set_upper(TALLOC_CTX *mem_ctx, char **dest, const char *src)
{
talloc_free(*dest);
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 7637444..22c7e48 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -2643,15 +2643,29 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
TALLOC_FREE(frame);
- /* 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:
- *(bool *)parm_ptr = lp_bool(pszParmValue);
+ case P_BOOL: {
+ bool b;
+ if (!set_boolean(pszParmValue, &b)) {
+ DEBUG(0, ("set_variable_helper(%s): value is not "
+ "boolean!\n", pszParmValue));
+ return false;
+ }
+ *(bool *)parm_ptr = b;
+ }
break;
- case P_BOOLREV:
- *(bool *)parm_ptr = !lp_bool(pszParmValue);
+ case P_BOOLREV: {
+ bool b;
+ if (!set_boolean(pszParmValue, &b)) {
+ DEBUG(0, ("set_variable_helper(%s): value is not "
+ "boolean!\n", pszParmValue));
+ return false;
+ }
+ *(bool *)parm_ptr = !b;
+ }
break;
case P_INTEGER:
@@ -2665,7 +2679,7 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
case P_OCTAL:
i = sscanf(pszParmValue, "%o", (int *)parm_ptr);
if ( i != 1 ) {
- DEBUG ( 0, ("Invalid octal number %s\n", pszParmName ));
+ DEBUG ( 0, ("Invalid octal number %s\n", pszParmName ));
return false;
}
break;
@@ -2680,8 +2694,8 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
}
}
- DEBUG(0,("lp_do_parameter(%s): value is not "
- "a valid size specifier!\n", pszParmValue));
+ DEBUG(0, ("set_variable_helper(%s): value is not "
+ "a valid size specifier!\n", pszParmValue));
return false;
}
@@ -2722,28 +2736,26 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
break;
}
case P_CMDLIST:
- TALLOC_FREE(*((char ***)parm_ptr));
- *(char ***)parm_ptr = str_list_make_v3(
- NULL, pszParmValue, NULL);
+ TALLOC_FREE(*(char ***)parm_ptr);
+ *(const char * const **)parm_ptr
+ = (const char * const *)str_list_make_v3(mem_ctx,
+ pszParmValue, NULL);
break;
case P_STRING:
- string_set(mem_ctx, (char **)parm_ptr, pszParmValue);
+ lpcfg_string_set(mem_ctx, (char **)parm_ptr, pszParmValue);
break;
case P_USTRING:
- {
- char *upper_string = strupper_talloc(talloc_tos(),
- pszParmValue);
- string_set(mem_ctx, (char **)parm_ptr, upper_string);
- TALLOC_FREE(upper_string);
+ lpcfg_string_set_upper(mem_ctx, (char **)parm_ptr, pszParmValue);
break;
- }
+
case P_ENUM:
if (!lp_set_enum_parm(&parm_table[parmnum], pszParmValue, (int*)parm_ptr)) {
return false;
}
break;
+
case P_SEP:
break;
}
--
1.9.3
More information about the samba-technical
mailing list