summaryrefslogtreecommitdiff
path: root/source4/param/loadparm.c
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2006-01-06 02:50:46 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:49:46 -0500
commitc66bc0dadbe7502f651fec53da488c838412f627 (patch)
tree90cdf06620a9b316329ac3b2aca6c575e01c916d /source4/param/loadparm.c
parent1b29552e70a78116337cf08a8d629170097427ad (diff)
downloadsamba-c66bc0dadbe7502f651fec53da488c838412f627.tar.gz
samba-c66bc0dadbe7502f651fec53da488c838412f627.tar.bz2
samba-c66bc0dadbe7502f651fec53da488c838412f627.zip
r12731: Simplify and re-implemenet support for --parameter-name=foo
--service-name=bar in testparm. Andrew Bartlett (This used to be commit be067e9a04a4dca02a9472ae7385dc0bf26735ea)
Diffstat (limited to 'source4/param/loadparm.c')
-rw-r--r--source4/param/loadparm.c41
1 files changed, 16 insertions, 25 deletions
diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c
index 3d079f3e3e..c79db6e584 100644
--- a/source4/param/loadparm.c
+++ b/source4/param/loadparm.c
@@ -2231,40 +2231,31 @@ static void dump_a_service(service * pService, FILE * f)
BOOL lp_dump_a_parameter(int snum, char *parm_name, FILE * f, BOOL isGlobal)
{
service * pService = ServicePtrs[snum];
- int i, result = False;
parm_class p_class;
unsigned flag = 0;
-
+ struct parm_struct *parm;
+ void *ptr;
if (isGlobal) {
p_class = P_GLOBAL;
flag = FLAG_GLOBAL;
} else
p_class = P_LOCAL;
- for (i = 0; parm_table[i].label; i++) {
- if (strwicmp(parm_table[i].label, parm_name) == 0 &&
- (parm_table[i].class == p_class || parm_table[i].flags & flag) &&
- parm_table[i].ptr &&
- (*parm_table[i].label != '-') &&
- (i == 0 || (parm_table[i].ptr != parm_table[i - 1].ptr)))
- {
- void *ptr;
-
- if (isGlobal)
- ptr = parm_table[i].ptr;
- else
- ptr = ((char *)pService) +
- PTR_DIFF(parm_table[i].ptr, &sDefault);
-
- print_parameter(&parm_table[i],
- ptr, f);
- fprintf(f, "\n");
- result = True;
- break;
- }
+ parm = lp_parm_struct(parm_name);
+ if (!parm) {
+ return False;
}
-
- return result;
+
+ if (isGlobal)
+ ptr = parm->ptr;
+ else
+ ptr = ((char *)pService) +
+ PTR_DIFF(parm->ptr, &sDefault);
+
+ print_parameter(parm,
+ ptr, f);
+ fprintf(f, "\n");
+ return True;
}
/***************************************************************************