On Mon, Jun 18, 2007 at 05:20:13PM +0100, Richard W.M. Jones 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 ...? Yes please :-) Our documentation for virsh is lagging behind I'm afraid, and the help command doesn't really replace a complete man page or a getting started kind of tutorial. Daniel -- Red Hat Virtualization group http://redhat.com/virtualization/ Daniel Veillard | virtualization library http://libvirt.org/ veillard@xxxxxxxxxx | libxml GNOME XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/