summaryrefslogtreecommitdiffstats
path: root/source3/param/loadparm.c
diff options
context:
space:
mode:
authorGarming Sam <garming@catalyst.net.nz>2014-05-06 16:11:08 +1200
committerAndrew Bartlett <abartlet@samba.org>2014-07-07 23:32:35 +0200
commitf1c28fcc23da3f4c8061d2db41fae90b14ca0494 (patch)
tree09ce82229c0823ee1a81fecd6c5a8f8d74f8f285 /source3/param/loadparm.c
parent5b5e3ec403dab81784402490e799d92999dc027f (diff)
downloadsamba-f1c28fcc23da3f4c8061d2db41fae90b14ca0494.tar.gz
samba-f1c28fcc23da3f4c8061d2db41fae90b14ca0494.tar.xz
samba-f1c28fcc23da3f4c8061d2db41fae90b14ca0494.zip
param: use set_variable_helper in s3 loadparm
Change-Id: I1ed19ee7290f6b52f624e2aa700cf402cfcb255d Signed-off-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Nadezhda Ivanova <nivanova@samba.org>
Diffstat (limited to 'source3/param/loadparm.c')
-rw-r--r--source3/param/loadparm.c121
1 files changed, 1 insertions, 120 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 8b24e67e50..4e6953440b 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -2642,126 +2642,7 @@ bool lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
}
TALLOC_FREE(frame);
-
- /* switch on the type of variable it is */
- switch (parm_table[parmnum].type)
- {
- 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 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:
- *(int *)parm_ptr = lp_int(pszParmValue);
- break;
-
- case P_CHAR:
- *(char *)parm_ptr = *pszParmValue;
- break;
-
- case P_OCTAL:
- i = sscanf(pszParmValue, "%o", (int *)parm_ptr);
- if ( i != 1 ) {
- DEBUG ( 0, ("Invalid octal number %s\n", pszParmName ));
- return false;
- }
- break;
-
- case P_BYTES:
- {
- uint64_t val;
- if (conv_str_size_error(pszParmValue, &val)) {
- if (val <= INT_MAX) {
- *(int *)parm_ptr = (int)val;
- break;
- }
- }
-
- DEBUG(0, ("set_variable_helper(%s): value is not "
- "a valid size specifier!\n", pszParmValue));
- return false;
- }
-
- case P_CMDLIST:
- TALLOC_FREE(*(char ***)parm_ptr);
- *(const char * const **)parm_ptr
- = (const char * const *)str_list_make_v3(mem_ctx,
- pszParmValue, NULL);
- break;
-
- case P_LIST:
- {
- char **new_list = str_list_make_v3(mem_ctx,
- pszParmValue, NULL);
- if (new_list == NULL) {
- break;
- }
-
- for (i=0; new_list[i]; i++) {
- if (*(const char ***)parm_ptr != NULL &&
- new_list[i][0] == '+' &&
- new_list[i][1])
- {
- if (!str_list_check(*(const char ***)parm_ptr,
- &new_list[i][1])) {
- *(const char ***)parm_ptr = str_list_add(*(const char ***)parm_ptr,
- &new_list[i][1]);
- }
- } else if (*(const char ***)parm_ptr != NULL &&
- new_list[i][0] == '-' &&
- new_list[i][1])
- {
- str_list_remove(*(const char ***)parm_ptr,
- &new_list[i][1]);
- } else {
- if (i != 0) {
- DEBUG(0, ("Unsupported list syntax for: %s = %s\n",
- pszParmName, pszParmValue));
- return false;
- }
- *(const char * const **)parm_ptr = (const char * const *) new_list;
- break;
- }
- }
- break;
- }
-
- case P_STRING:
- lpcfg_string_set(mem_ctx, (char **)parm_ptr, pszParmValue);
- break;
-
- case P_USTRING:
- 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;
- }
-
- return true;
+ return set_variable_helper(mem_ctx, parmnum, parm_ptr, pszParmName, pszParmValue);
}
/***************************************************************************