mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
r24572: Allow for functions map_parameter_canonical() and is_synonym_of() to
be called with inverse == NULL. Add a new function lp_parameter_is_canonical() to check whether a parameter name is the canonical name (as apposed to an alias). Michael
This commit is contained in:
parent
888e657d75
commit
07dc0fecf5
@ -2817,6 +2817,22 @@ BOOL lp_parameter_is_global(const char *pszParmName)
|
|||||||
return False;
|
return False;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
Check whether the given name is the canonical name of a parameter.
|
||||||
|
Returns False if it is not a valid parameter Name.
|
||||||
|
For parametric options, True is returned.
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
BOOL lp_parameter_is_canonical(const char *parm_name)
|
||||||
|
{
|
||||||
|
if (!lp_parameter_is_valid(parm_name)) {
|
||||||
|
return False;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (map_parameter(parm_name) ==
|
||||||
|
map_parameter_canonical(parm_name, NULL));
|
||||||
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
Determine the canonical name for a parameter.
|
Determine the canonical name for a parameter.
|
||||||
Indicate when it is an inverse (boolean) synonym instead of a
|
Indicate when it is an inverse (boolean) synonym instead of a
|
||||||
@ -2924,21 +2940,25 @@ static int map_parameter(const char *pszParmName)
|
|||||||
static int map_parameter_canonical(const char *pszParmName, BOOL *inverse)
|
static int map_parameter_canonical(const char *pszParmName, BOOL *inverse)
|
||||||
{
|
{
|
||||||
int parm_num, canon_num;
|
int parm_num, canon_num;
|
||||||
|
BOOL loc_inverse = False;
|
||||||
*inverse = False;
|
|
||||||
|
|
||||||
parm_num = map_parameter(pszParmName);
|
parm_num = map_parameter(pszParmName);
|
||||||
if ((parm_num < 0) || !(parm_table[parm_num].flags & FLAG_HIDE)) {
|
if ((parm_num < 0) || !(parm_table[parm_num].flags & FLAG_HIDE)) {
|
||||||
/* invalid, parametric or no canidate for synonyms ... */
|
/* invalid, parametric or no canidate for synonyms ... */
|
||||||
return parm_num;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (canon_num = 0; parm_table[canon_num].label; canon_num++) {
|
for (canon_num = 0; parm_table[canon_num].label; canon_num++) {
|
||||||
if (is_synonym_of(parm_num, canon_num, inverse)) {
|
if (is_synonym_of(parm_num, canon_num, &loc_inverse)) {
|
||||||
return canon_num;
|
parm_num = canon_num;
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (inverse != NULL) {
|
||||||
|
*inverse = loc_inverse;
|
||||||
|
}
|
||||||
return parm_num;
|
return parm_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2955,12 +2975,14 @@ static BOOL is_synonym_of(int parm1, int parm2, BOOL *inverse)
|
|||||||
(parm_table[parm1].flags & FLAG_HIDE) &&
|
(parm_table[parm1].flags & FLAG_HIDE) &&
|
||||||
!(parm_table[parm2].flags & FLAG_HIDE))
|
!(parm_table[parm2].flags & FLAG_HIDE))
|
||||||
{
|
{
|
||||||
if ((parm_table[parm1].type == P_BOOLREV) &&
|
if (inverse != NULL) {
|
||||||
(parm_table[parm2].type == P_BOOL))
|
if ((parm_table[parm1].type == P_BOOLREV) &&
|
||||||
{
|
(parm_table[parm2].type == P_BOOL))
|
||||||
*inverse = True;
|
{
|
||||||
} else {
|
*inverse = True;
|
||||||
*inverse = False;
|
} else {
|
||||||
|
*inverse = False;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return True;
|
return True;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user