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
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature