svn commit: samba r24572 - in branches: SAMBA_3_2/source/param SAMBA_3_2_0/source/param

obnox at samba.org obnox at samba.org
Mon Aug 20 09:32:31 GMT 2007


Author: obnox
Date: 2007-08-20 09:32:30 +0000 (Mon, 20 Aug 2007)
New Revision: 24572

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24572

Log:
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


Modified:
   branches/SAMBA_3_2/source/param/loadparm.c
   branches/SAMBA_3_2_0/source/param/loadparm.c


Changeset:
Modified: branches/SAMBA_3_2/source/param/loadparm.c
===================================================================
--- branches/SAMBA_3_2/source/param/loadparm.c	2007-08-20 07:59:22 UTC (rev 24571)
+++ branches/SAMBA_3_2/source/param/loadparm.c	2007-08-20 09:32:30 UTC (rev 24572)
@@ -2818,6 +2818,22 @@
 }
 
 /**************************************************************************
+ 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.
  Indicate when it is an inverse (boolean) synonym instead of a
  "usual" synonym.
@@ -2924,21 +2940,25 @@
 static int map_parameter_canonical(const char *pszParmName, BOOL *inverse)
 {
 	int parm_num, canon_num;
+	BOOL loc_inverse = False;
 
-	*inverse = False;
-
 	parm_num = map_parameter(pszParmName);
 	if ((parm_num < 0) || !(parm_table[parm_num].flags & FLAG_HIDE)) {
 		/* invalid, parametric or no canidate for synonyms ... */
-		return parm_num;
+		goto done;
 	}
 
 	for (canon_num = 0; parm_table[canon_num].label; canon_num++) {
-		if (is_synonym_of(parm_num, canon_num, inverse)) {
-			return canon_num;
+		if (is_synonym_of(parm_num, canon_num, &loc_inverse)) {
+			parm_num = canon_num;
+			goto done;
 		}
 	}
 
+done:
+	if (inverse != NULL) {
+		*inverse = loc_inverse;
+	}
 	return parm_num;
 }
 
@@ -2955,12 +2975,14 @@
 	    (parm_table[parm1].flags & FLAG_HIDE) &&
 	    !(parm_table[parm2].flags & FLAG_HIDE))
 	{
-		if ((parm_table[parm1].type == P_BOOLREV) &&
-		    (parm_table[parm2].type == P_BOOL))
-		{
-			*inverse = True;
-		} else {
-			*inverse = False;
+		if (inverse != NULL) {
+			if ((parm_table[parm1].type == P_BOOLREV) &&
+			    (parm_table[parm2].type == P_BOOL))
+			{
+				*inverse = True;
+			} else {
+				*inverse = False;
+			}
 		}
 		return True;
 	}

Modified: branches/SAMBA_3_2_0/source/param/loadparm.c
===================================================================
--- branches/SAMBA_3_2_0/source/param/loadparm.c	2007-08-20 07:59:22 UTC (rev 24571)
+++ branches/SAMBA_3_2_0/source/param/loadparm.c	2007-08-20 09:32:30 UTC (rev 24572)
@@ -2823,6 +2823,22 @@
 }
 
 /**************************************************************************
+ 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.
  Indicate when it is an inverse (boolean) synonym instead of a
  "usual" synonym.
@@ -2929,21 +2945,25 @@
 static int map_parameter_canonical(const char *pszParmName, BOOL *inverse)
 {
 	int parm_num, canon_num;
+	BOOL loc_inverse = False;
 
-	*inverse = False;
-
 	parm_num = map_parameter(pszParmName);
 	if ((parm_num < 0) || !(parm_table[parm_num].flags & FLAG_HIDE)) {
 		/* invalid, parametric or no canidate for synonyms ... */
-		return parm_num;
+		goto done;
 	}
 
 	for (canon_num = 0; parm_table[canon_num].label; canon_num++) {
-		if (is_synonym_of(parm_num, canon_num, inverse)) {
-			return canon_num;
+		if (is_synonym_of(parm_num, canon_num, &loc_inverse)) {
+			parm_num = canon_num;
+			goto done;
 		}
 	}
 
+done:
+	if (inverse != NULL) {
+		*inverse = loc_inverse;
+	}
 	return parm_num;
 }
 
@@ -2960,12 +2980,14 @@
 	    (parm_table[parm1].flags & FLAG_HIDE) &&
 	    !(parm_table[parm2].flags & FLAG_HIDE))
 	{
-		if ((parm_table[parm1].type == P_BOOLREV) &&
-		    (parm_table[parm2].type == P_BOOL))
-		{
-			*inverse = True;
-		} else {
-			*inverse = False;
+		if (inverse != NULL) {
+			if ((parm_table[parm1].type == P_BOOLREV) &&
+			    (parm_table[parm2].type == P_BOOL))
+			{
+				*inverse = True;
+			} else {
+				*inverse = False;
+			}
 		}
 		return True;
 	}



More information about the samba-cvs mailing list