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