svn commit: samba r15187 - in branches/SAMBA_4_0/source: param script/tests scripting/ejs

jpeach at samba.org jpeach at samba.org
Mon Apr 24 00:38:59 GMT 2006


Author: jpeach
Date: 2006-04-24 00:38:53 +0000 (Mon, 24 Apr 2006)
New Revision: 15187

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

Log:
Introduce new param type P_BYTES. This lets config options which specify
byte counts be given in convenient units.

Modified:
   branches/SAMBA_4_0/source/param/loadparm.c
   branches/SAMBA_4_0/source/param/loadparm.h
   branches/SAMBA_4_0/source/script/tests/selftest.sh
   branches/SAMBA_4_0/source/scripting/ejs/smbcalls_config.c


Changeset:
Modified: branches/SAMBA_4_0/source/param/loadparm.c
===================================================================
--- branches/SAMBA_4_0/source/param/loadparm.c	2006-04-24 00:16:51 UTC (rev 15186)
+++ branches/SAMBA_4_0/source/param/loadparm.c	2006-04-24 00:38:53 UTC (rev 15187)
@@ -460,7 +460,7 @@
 	{"announce version", P_STRING, P_GLOBAL, &Globals.szAnnounceVersion, NULL, NULL, FLAG_DEVELOPER},
 	{"announce as", P_ENUM, P_GLOBAL, &Globals.announce_as, NULL, enum_announce_as, FLAG_DEVELOPER},
 	{"max mux", P_INTEGER, P_GLOBAL, &Globals.max_mux, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
-	{"max xmit", P_INTEGER, P_GLOBAL, &Globals.max_xmit, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+	{"max xmit", P_BYTES, P_GLOBAL, &Globals.max_xmit, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
 
 	{"name resolve order", P_LIST, P_GLOBAL, &Globals.szNameResolveOrder, NULL, NULL, FLAG_ADVANCED | FLAG_WIZARD | FLAG_DEVELOPER},
 	{"max wins ttl", P_INTEGER, P_GLOBAL, &Globals.max_wins_ttl, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
@@ -1061,6 +1061,26 @@
 	return default_v;
 }
 
+/* Return parametric option from a given service. Type is a part of
+ * option before ':'.
+ * Parametric option has following syntax: 'Type: option = value'.
+ */
+
+int lp_parm_bytes(int lookup_service, const char *type, const char *option, int default_v)
+{
+	uint64_t bval;
+
+	const char *value = lp_get_parametric(lookup_service, type, option);
+
+	if (value && conv_str_size(value, &bval)) {
+		if (bval <= INT_MAX) {
+			return (int)bval;
+		}
+	}
+
+	return default_v;
+}
+
 /* Return parametric option from a given service. Type is a part of option before ':' */
 /* Parametric option has following syntax: 'Type: option = value' */
 
@@ -1829,6 +1849,21 @@
 			*(int *)parm_ptr = atoi(pszParmValue);
 			break;
 
+		case P_BYTES:
+		{
+			uint64_t val;
+			if (conv_str_size(pszParmValue, &val)) {
+				if (val <= INT_MAX) {
+					*(int *)parm_ptr = (int)val;
+					break;
+				}
+			}
+
+			DEBUG(0,("lp_do_parameter(%s): value is not "
+			    "a valid size specifier!\n", pszParmValue));
+			return False;
+		}
+
 		case P_LIST:
 			*(const char ***)parm_ptr = str_list_make(talloc_autofree_context(), 
 								  pszParmValue, NULL);
@@ -2004,6 +2039,7 @@
 			break;
 
 		case P_INTEGER:
+		case P_BYTES:
 			fprintf(f, "%d", *(int *)ptr);
 			break;
 
@@ -2039,6 +2075,7 @@
 			return (*((BOOL *)ptr1) == *((BOOL *)ptr2));
 
 		case P_INTEGER:
+		case P_BYTES:
 		case P_ENUM:
 			return (*((int *)ptr1) == *((int *)ptr2));
 
@@ -2127,6 +2164,7 @@
 			return parm_table[i].def.bvalue ==
 				*(BOOL *)parm_table[i].ptr;
 		case P_INTEGER:
+		case P_BYTES:
 		case P_ENUM:
 			return parm_table[i].def.ivalue ==
 				*(int *)parm_table[i].ptr;

Modified: branches/SAMBA_4_0/source/param/loadparm.h
===================================================================
--- branches/SAMBA_4_0/source/param/loadparm.h	2006-04-24 00:16:51 UTC (rev 15186)
+++ branches/SAMBA_4_0/source/param/loadparm.h	2006-04-24 00:38:53 UTC (rev 15187)
@@ -30,7 +30,7 @@
 
 /* the following are used by loadparm for option lists */
 typedef enum {
-	P_BOOL,P_INTEGER,P_LIST,P_STRING,P_USTRING,P_ENUM,P_SEP
+	P_BOOL,P_INTEGER,P_BYTES,P_LIST,P_STRING,P_USTRING,P_ENUM,P_SEP
 } parm_type;
 
 typedef enum {

Modified: branches/SAMBA_4_0/source/script/tests/selftest.sh
===================================================================
--- branches/SAMBA_4_0/source/script/tests/selftest.sh	2006-04-24 00:16:51 UTC (rev 15186)
+++ branches/SAMBA_4_0/source/script/tests/selftest.sh	2006-04-24 00:38:53 UTC (rev 15187)
@@ -122,6 +122,7 @@
 	panic action = $SRCDIR/script/gdb_backtrace %PID% %PROG%
 	wins support = yes
 	server role = pdc
+	max xmit = 32K
 
 [tmp]
 	path = $TMPDIR

Modified: branches/SAMBA_4_0/source/scripting/ejs/smbcalls_config.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/smbcalls_config.c	2006-04-24 00:16:51 UTC (rev 15186)
+++ branches/SAMBA_4_0/source/scripting/ejs/smbcalls_config.c	2006-04-24 00:38:53 UTC (rev 15187)
@@ -126,7 +126,7 @@
 		/* its a global parameter */
 		parm = lp_parm_struct(argv[0]);
 		if (parm == NULL) return -1;
-		parm_ptr = parm->ptr;
+		parm_ptr = lp_parm_ptr(-1, parm);
 	}
 
 	if (parm == NULL || parm_ptr == NULL) {
@@ -143,6 +143,7 @@
 		mpr_Return(eid, mprCreateBoolVar(*(BOOL *)parm_ptr));
 		break;
 	case P_INTEGER:
+	case P_BYTES:
 		mpr_Return(eid, mprCreateIntegerVar(*(int *)parm_ptr));
 		break;
 	case P_ENUM:



More information about the samba-cvs mailing list