Hi Rich Thank you for a reviewing and improvement. It looks good to me. > I want to commit this one if we're all happy with it ...? > If this patch is applied, our team member become happy. Thanks Masayuki Sunou In message <4676B0BD.4030307@xxxxxxxxxx> "Re: [PATCH] Fix the check of <cpumap> in virsh vcpupin" ""Richard W.M. Jones" <rjones@xxxxxxxxxx>" wrote: > Richard W.M. Jones wrote: > > Index: src/virsh.c > > =================================================================== > > RCS file: /data/cvs/libvirt/src/virsh.c,v > > retrieving revision 1.85 > > diff -u -r1.85 virsh.c > > --- src/virsh.c 18 Jun 2007 08:33:08 -0000 1.85 > > +++ src/virsh.c 18 Jun 2007 11:00:59 -0000 > > @@ -1505,7 +1505,7 @@ > > * "vcpupin" command > > */ > > static vshCmdInfo info_vcpupin[] = { > > - {"syntax", "vcpupin <domain>"}, > > + {"syntax", "vcpupin <domain> <vcpu> <cpulist>"}, > > {"help", gettext_noop("control domain vcpu affinity")}, > > {"desc", gettext_noop("Pin domain VCPUs to host physical CPUs.")}, > > {NULL, NULL} > > @@ -1530,6 +1530,8 @@ > > int vcpufound = 0; > > unsigned char *cpumap; > > int cpumaplen; > > + int i; > > + enum { expect_num, expect_num_or_comma } state; > > > > if (!vshConnectionUsability(ctl, ctl->conn, TRUE)) > > return FALSE; > > @@ -1563,6 +1565,42 @@ > > return FALSE; > > } > > > > + /* Check that the cpulist parameter is a comma-separated list of > > + * numbers and give an intelligent error message if not. > > + */ > > + if (cpulist[0] == '\0') { > > + vshError(ctl, FALSE, _("cpulist: Invalid format. Empty string.")); > > + virDomainFree (dom); > > + return FALSE; > > + } > > + > > + state = expect_num; > > + for (i = 0; cpulist[i]; i++) { > > + switch (state) { > > + case expect_num: > > + if (!isdigit (cpulist[i])) { > > + vshError( ctl, FALSE, _("cpulist: %s: Invalid format. Expecting digit at position %d (near '%c')."), cpulist, i, cpulist[i]); > > + virDomainFree (dom); > > + return FALSE; > > + } > > + state = expect_num_or_comma; > > + break; > > + case expect_num_or_comma: > > + if (cpulist[i] == ',') > > + state = expect_num; > > + else if (!isdigit (cpulist[i])) { > > + vshError(ctl, FALSE, _("cpulist: %s: Invalid format. Expecting digit or comma at position %d (near '%c')."), cpulist, i, cpulist[i]); > > + virDomainFree (dom); > > + return FALSE; > > + } > > + } > > + } > > + if (state == expect_num) { > > + vshError(ctl, FALSE, _("cpulist: %s: Invalid format. Trailing comma at position %d."), cpulist, i); > > + virDomainFree (dom); > > + return FALSE; > > + } > > + > > cpumaplen = VIR_CPU_MAPLEN(VIR_NODEINFO_MAXCPUS(nodeinfo)); > > cpumap = vshCalloc(ctl, 1, cpumaplen); > > I want to commit this one if we're all happy with it ...? > > Rich. > > -- > Emerging Technologies, Red Hat - http://et.redhat.com/~rjones/ > Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod > Street, Windsor, Berkshire, SL4 1TE, United Kingdom. Registered in > England and Wales under Company Registration No. 03798903 >