
On 04/08/2013 05:35 PM, John Ferlan wrote:
--- tools/virsh-domain.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-)
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index e6e6877..6d760f2 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -6144,15 +6144,35 @@ cmdCPUStats(vshControl *ctl, const vshCmd *cmd) bool show_total = false, show_per_cpu = false; unsigned int flags = 0; bool ret = false; + int rv = 0;
if (!(dom = vshCommandOptDomain(ctl, cmd, NULL))) return false;
show_total = vshCommandOptBool(cmd, "total"); - if (vshCommandOptInt(cmd, "start", &cpu) > 0) + + if ((rv = vshCommandOptInt(cmd, "start", &cpu)) < 0) { + vshError(ctl, "%s", _("Unable to parse integer parameter for start")); + goto cleanup; + } else if (rv > 0) { + if (cpu < 0) { + vshError(ctl, "%s", _("Invalid value for start CPU")); + goto cleanup; + }
Since we don't allow negative -start values now, you can initialize cpu to 0 instead of -1 and get rid of this hunk: /* check cpu, show_count, and ignore wrong argument */ if (cpu < 0) cpu = 0;
show_per_cpu = true; - if (vshCommandOptInt(cmd, "count", &show_count) > 0) + } + + if ((rv = vshCommandOptInt(cmd, "count", &show_count)) < 0) { + vshError(ctl, "%s", + _("Unable to parse integer parameter for CPUs to show")); + goto cleanup; + } else if (rv > 0) { + if (show_count < 0) { + vshError(ctl, "%s", _("Invalid value for number of CPUs to show")); + goto cleanup; + } show_per_cpu = true; + }
/* default show per_cpu and total */ if (!show_total && !show_per_cpu) { @@ -6170,8 +6190,11 @@ cmdCPUStats(vshControl *ctl, const vshCmd *cmd) /* get number of cpus on the node */ if ((max_id = virDomainGetCPUStats(dom, NULL, 0, 0, 0, flags)) < 0) goto failed_stats; - if (show_count < 0 || show_count > max_id) + if (show_count < 0 || show_count > max_id) { + if (show_count > max_id) + vshPrint(ctl, _("Only %d CPUs available to show\n"), max_id); show_count = max_id; + }
/* get percpu information */ if ((nparams = virDomainGetCPUStats(dom, NULL, 0, 0, 1, flags)) < 0)
ACK Jan