diff options
author | Andrew Bartlett <abartlet@samba.org> | 2014-01-15 13:39:14 +1300 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2014-01-30 00:42:08 +0100 |
commit | 36c88ca9c194d49f51894bc00d3a1778d3800690 (patch) | |
tree | ee2f2dc0570d8fcb5efc94e765d718c5e021b084 /source3 | |
parent | 5c2aac0f8e52e097965d9e2aaeb305b28c0feef0 (diff) | |
download | samba-36c88ca9c194d49f51894bc00d3a1778d3800690.tar.gz |
lib/param: Make lpcfg_print_parameter() common
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'source3')
-rw-r--r-- | source3/param/loadparm.c | 89 |
1 files changed, 5 insertions, 84 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 8552f37388e..0264b1ddbd4 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -57,6 +57,7 @@ #include "system/filesys.h" #include "util_tdb.h" #include "lib/param/loadparm.h" +#include "lib/param/param.h" #include "printing.h" #include "lib/smbconf/smbconf.h" #include "lib/smbconf/smbconf_init.h" @@ -3413,86 +3414,6 @@ bool lp_set_option(const char *option) return ret; } -/************************************************************************** - Print a parameter of the specified type. -***************************************************************************/ - -static void print_parameter(struct parm_struct *p, void *ptr, FILE * f) -{ - /* For the seperation of lists values that we print below */ - const char *list_sep = ", "; - int i; - switch (p->type) - { - case P_ENUM: - for (i = 0; p->enum_list[i].name; i++) { - if (*(int *)ptr == p->enum_list[i].value) { - fprintf(f, "%s", - p->enum_list[i].name); - break; - } - } - break; - - case P_BOOL: - fprintf(f, "%s", BOOLSTR(*(bool *)ptr)); - break; - - case P_BOOLREV: - fprintf(f, "%s", BOOLSTR(!*(bool *)ptr)); - break; - - case P_INTEGER: - case P_BYTES: - fprintf(f, "%d", *(int *)ptr); - break; - - case P_CHAR: - fprintf(f, "%c", *(char *)ptr); - break; - - case P_OCTAL: { - int val = *(int *)ptr; - if (val == -1) { - fprintf(f, "-1"); - } else { - fprintf(f, "0%03o", val); - } - break; - } - - case P_CMDLIST: - list_sep = " "; - /* fall through */ - case P_LIST: - if ((char ***)ptr && *(char ***)ptr) { - char **list = *(char ***)ptr; - for (; *list; list++) { - /* surround strings with whitespace in double quotes */ - if (*(list+1) == NULL) { - /* last item, no extra separator */ - list_sep = ""; - } - if ( strchr_m( *list, ' ' ) ) { - fprintf(f, "\"%s\"%s", *list, list_sep); - } else { - fprintf(f, "%s%s", *list, list_sep); - } - } - } - break; - - case P_STRING: - case P_USTRING: - if (*(char **)ptr) { - fprintf(f, "%s", *(char **)ptr); - } - break; - case P_SEP: - break; - } -} - /*************************************************************************** Check if two parameters are equal. ***************************************************************************/ @@ -3684,8 +3605,8 @@ static void dump_globals(FILE *f) if (defaults_saved && is_default(i)) continue; fprintf(f, "\t%s = ", parm_table[i].label); - print_parameter(&parm_table[i], lp_parm_ptr(NULL, - &parm_table[i]), + lpcfg_print_parameter(&parm_table[i], lp_parm_ptr(NULL, + &parm_table[i]), f); fprintf(f, "\n"); } @@ -3740,7 +3661,7 @@ static void dump_a_service(struct loadparm_service *pService, FILE * f) } fprintf(f, "\t%s = ", parm_table[i].label); - print_parameter(&parm_table[i], + lpcfg_print_parameter(&parm_table[i], lp_parm_ptr(pService, &parm_table[i]), f); fprintf(f, "\n"); @@ -3809,7 +3730,7 @@ bool dump_a_parameter(int snum, char *parm_name, FILE * f, bool isGlobal) &parm_table[i]); } - print_parameter(&parm_table[i], + lpcfg_print_parameter(&parm_table[i], ptr, f); fprintf(f, "\n"); result = true; |