r2989 - trunk/varnish-cache/bin/varnishd

phk at projects.linpro.no phk at projects.linpro.no
Tue Jul 22 11:57:11 CEST 2008


Author: phk
Date: 2008-07-22 11:57:11 +0200 (Tue, 22 Jul 2008)
New Revision: 2989

Modified:
   trunk/varnish-cache/bin/varnishd/varnishd.c
Log:
renovate tackle_warg()



Modified: trunk/varnish-cache/bin/varnishd/varnishd.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/varnishd.c	2008-07-22 09:42:06 UTC (rev 2988)
+++ trunk/varnish-cache/bin/varnishd/varnishd.c	2008-07-22 09:57:11 UTC (rev 2989)
@@ -98,6 +98,19 @@
 
 /*--------------------------------------------------------------------*/
 
+static unsigned long
+arg_ul(const char *p)
+{
+	char *q;
+	unsigned long ul;
+
+	ul = strtoul(p, &q, 0);
+	if (*q != '\0')
+		ARGV_ERR("Invalid number: \"%s\"\n", p);
+	return (ul);
+}
+
+/*--------------------------------------------------------------------*/
 extern struct stevedore sma_stevedore;
 extern struct stevedore smf_stevedore;
 
@@ -224,47 +237,35 @@
 static void
 tackle_warg(const char *argv)
 {
+	char **av;
 	unsigned int u;
-	char *ep, *eq;
 
-	u = strtoul(argv, &ep, 0);
-	if (ep == argv)
-		usage();
-	while (isspace(*ep))
-		ep++;
-	if (u < 1)
-		usage();
-	params->wthread_min = u;
+	av = ParseArgv(argv, ARGV_COMMA);
+	AN(av);
 
-	if (*ep == '\0') {
-		params->wthread_max = params->wthread_min;
-		return;
-	}
+	if (av[0] != NULL) 
+		ARGV_ERR("%s\n", av[0]);
 
-	if (*ep != ',')
+	if (av[1] == NULL) 
 		usage();
-	u = strtoul(++ep, &eq, 0);
-	if (eq == ep)
+
+	u = arg_ul(av[1]);
+	if (u < 1)
 		usage();
-	if (u < params->wthread_min)
-		usage();
-	while (isspace(*eq))
-		eq++;
-	params->wthread_max = u;
+	params->wthread_max = params->wthread_min = u;
 
-	if (*eq == '\0')
-		return;
+	if (av[2] != NULL) {
+		u = arg_ul(av[2]);
+		if (u < params->wthread_min)
+			usage();
+		params->wthread_max = u;
 
-	if (*eq != ',')
-		usage();
-	u = strtoul(++eq, &ep, 0);
-	if (ep == eq)
-		usage();
-	while (isspace(*ep))
-		ep++;
-	if (*ep != '\0')
-		usage();
-	params->wthread_timeout = u;
+		if (av[3] != NULL) {
+			u = arg_ul(av[3]);
+			params->wthread_timeout = u;
+		}
+	}
+	FreeArgv(av);
 }
 
 /*--------------------------------------------------------------------




More information about the varnish-commit mailing list