diff --git a/tests/vcpupin b/tests/vcpupin index ab0d38fd38..b6b8b31ee5 100755 --- a/tests/vcpupin +++ b/tests/vcpupin @@ -34,7 +34,7 @@ fail=0 $abs_top_builddir/tools/virsh --connect test:///default vcpupin test a 0,1 > out 2>&1 test $? = 1 || fail=1 cat <<\EOF > exp || fail=1 -error: Numeric value for option is malformed or out of range +error: Numeric value 'a' for option is malformed or out of range EOF compare exp out || fail=1 @@ -52,7 +52,7 @@ compare exp out || fail=1 $abs_top_builddir/tools/virsh --connect test:///default vcpupin test -100 0,1 > out 2>&1 test $? = 1 || fail=1 cat <<\EOF > exp || fail=1 -error: Numeric value for option is malformed or out of range +error: Numeric value '-100' for option is malformed or out of range EOF compare exp out || fail=1 diff --git a/tests/virsh-optparse b/tests/virsh-optparse index 952fcc4e9f..e032094691 100755 --- a/tests/virsh-optparse +++ b/tests/virsh-optparse @@ -141,7 +141,7 @@ compare exp-err err || fail=1 # Non-numeric value cat <<\EOF > exp-err || framework_failure -error: Numeric value for option is malformed or out of range +error: Numeric value 'abc' for option is malformed or out of range EOF virsh -q -c $test_url cpu-stats test --start abc >out 2>err && fail=1 test -s out && fail=1 @@ -149,7 +149,7 @@ compare exp-err err || fail=1 # Numeric value with invalid suffix cat <<\EOF > exp-err || framework_failure -error: Numeric value for option is malformed or out of range +error: Numeric value '42WB' for option is malformed or out of range EOF virsh -q -c $test_url cpu-stats test --start 42WB >out 2>err && fail=1 test -s out && fail=1 @@ -158,7 +158,7 @@ compare exp-err err || fail=1 # Numeric value with valid suffix. Suffixes are not supported for # regular numeric options, so this value is rejected cat <<\EOF > exp-err || framework_failure -error: Numeric value for option is malformed or out of range +error: Numeric value '42MB' for option is malformed or out of range EOF virsh -q -c $test_url cpu-stats test --start 42MB >out 2>err && fail=1 test -s out && fail=1 @@ -166,7 +166,7 @@ compare exp-err err || fail=1 # Numeric value bigger than INT_MAX cat <<\EOF > exp-err || framework_failure -error: Numeric value for option is malformed or out of range +error: Numeric value '2147483648' for option is malformed or out of range EOF virsh -q -c $test_url cpu-stats test --start 2147483648 >out 2>err && fail=1 test -s out && fail=1 @@ -205,7 +205,7 @@ compare exp-err err || fail=1 # Non-numeric value cat <<\EOF > exp-err || framework_failure -error: Numeric value for option is malformed or out of range +error: Numeric value 'abc' for option is malformed or out of range EOF virsh -q -c $test_url setmaxmem test abc >out 2>err && fail=1 test -s out && fail=1 @@ -213,7 +213,7 @@ compare exp-err err || fail=1 # Numeric value with invalid suffix cat <<\EOF > exp-err || framework_failure -error: Numeric value for option is malformed or out of range +error: Numeric value '42WB' for option is malformed or out of range EOF virsh -q -c $test_url setmaxmem test 42WB >out 2>err && fail=1 test -s out && fail=1 @@ -232,7 +232,7 @@ test -s err && fail=1 # Negative numeric value cat <<\EOF > exp-err || framework_failure -error: Numeric value for option is malformed or out of range +error: Numeric value '-1' for option is malformed or out of range EOF virsh -q -c $test_url setmaxmem test -1 >out 2>err && fail=1 test -s out && fail=1 @@ -257,7 +257,7 @@ test -s err && fail=1 # Non-numeric value cat <<\EOF > exp-err || framework_failure -error: Numeric value for option is malformed or out of range +error: Numeric value 'abc' for option is malformed or out of range EOF virsh -q -c $test_url event --all --timeout abc >out 2>err && fail=1 test -s out && fail=1 @@ -266,7 +266,7 @@ compare exp-err err || fail=1 # Numeric value that's too big to be converted to ms and still # fit inside an int cat <<\EOF > exp-err || framework_failure -error: Numeric value for option is malformed or out of range +error: Numeric value '2147484' for option is malformed or out of range EOF virsh -q -c $test_url event --all --timeout 2147484 >out 2>err && fail=1 test -s out && fail=1 @@ -274,7 +274,7 @@ compare exp-err err || fail=1 # Numeric value with invalid suffix cat <<\EOF > exp-err || framework_failure -error: Numeric value for option is malformed or out of range +error: Numeric value '42WB' for option is malformed or out of range EOF virsh -q -c $test_url event --all --timeout 42WB >out 2>err && fail=1 test -s out && fail=1 @@ -283,7 +283,7 @@ compare exp-err err || fail=1 # Numeric value with valid suffix. Suffixes are not supported for # the option, so this value is rejected cat <<\EOF > exp-err || framework_failure -error: Numeric value for option is malformed or out of range +error: Numeric value '42MB' for option is malformed or out of range EOF virsh -q -c $test_url event --all --timeout 42MB >out 2>err && fail=1 test -s out && fail=1 @@ -291,7 +291,7 @@ compare exp-err err || fail=1 # Negative value cat <<\EOF > exp-err || framework_failure -error: Numeric value for option is malformed or out of range +error: Numeric value '-1' for option is malformed or out of range EOF virsh -q -c $test_url event --all --timeout -1 >out 2>err && fail=1 test -s out && fail=1 @@ -300,7 +300,7 @@ compare exp-err err || fail=1 # Zero. This is not a valid timeout, but the value is parsed # correctly cat <<\EOF > exp-err || framework_failure -error: Numeric value for option is malformed or out of range +error: Numeric value '0' for option is malformed or out of range EOF virsh -q -c $test_url event --all --timeout 0 >out 2>err && fail=1 test -s out && fail=1 diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c index d8b217bf3d..1d4dc25cf6 100644 --- a/tools/virsh-domain-monitor.c +++ b/tools/virsh-domain-monitor.c @@ -340,12 +340,8 @@ cmdDomMemStat(vshControl *ctl, const vshCmd *cmd) /* Providing a period will adjust the balloon driver collection period. * This is not really an unsigned long, but it */ - if ((rv = vshCommandOptInt(ctl, cmd, "period", &period)) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "period"); + if ((rv = vshCommandOptInt(ctl, cmd, "period", &period)) < 0) goto cleanup; - } if (rv > 0) { if (period < 0) { vshError(ctl, _("Invalid collection period value '%d'"), period); @@ -1440,9 +1436,6 @@ cmdDomTime(vshControl *ctl, const vshCmd *cmd) if (rv < 0) { /* invalid integer format */ - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "time"); goto cleanup; } else if (rv > 0) { /* valid integer to set */ diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 79a9a9bec8..49709488b1 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -1552,9 +1552,6 @@ cmdBlkiotune(vshControl * ctl, const vshCmd * cmd) return false; if ((rv = vshCommandOptInt(ctl, cmd, "weight", &weight)) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "weight"); goto cleanup; } else if (rv > 0) { if (weight <= 0) { @@ -1692,12 +1689,8 @@ blockJobImpl(vshControl *ctl, const vshCmd *cmd, if (vshCommandOptStringReq(ctl, cmd, "path", &path) < 0) goto cleanup; - if (vshCommandOptULWrap(ctl, cmd, "bandwidth", &bandwidth) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "bandwidth"); + if (vshCommandOptULWrap(ctl, cmd, "bandwidth", &bandwidth) < 0) goto cleanup; - } switch (mode) { case VSH_CMD_BLOCK_JOB_ABORT: @@ -2216,24 +2209,12 @@ cmdBlockCopy(vshControl *ctl, const vshCmd *cmd) * MiB/s, and either reject negative input or treat it as 0 rather * than trying to guess which value will work well across both * APIs with their different sizes and scales. */ - if (vshCommandOptULWrap(ctl, cmd, "bandwidth", &bandwidth) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "bandwidth"); + if (vshCommandOptULWrap(ctl, cmd, "bandwidth", &bandwidth) < 0) goto cleanup; - } - if (vshCommandOptUInt(ctl, cmd, "granularity", &granularity) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "granularity"); + if (vshCommandOptUInt(ctl, cmd, "granularity", &granularity) < 0) goto cleanup; - } - if (vshCommandOptULongLong(ctl, cmd, "buf-size", &buf_size) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "buf-size"); + if (vshCommandOptULongLong(ctl, cmd, "buf-size", &buf_size) < 0) goto cleanup; - } if (xml) { if (virFileReadAll(xml, VSH_MAX_XML_FILE, &xmlstr) < 0) { @@ -2800,12 +2781,8 @@ cmdBlockResize(vshControl *ctl, const vshCmd *cmd) if (vshCommandOptStringReq(ctl, cmd, "path", (const char **) &path) < 0) return false; - if (vshCommandOptScaledInt(ctl, cmd, "size", &size, 1024, ULLONG_MAX) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "size"); + if (vshCommandOptScaledInt(ctl, cmd, "size", &size, 1024, ULLONG_MAX) < 0) return false; - } /* Prefer the older interface of KiB. */ if (size % 1024 == 0) @@ -3406,12 +3383,8 @@ cmdDomPMSuspend(vshControl *ctl, const vshCmd *cmd) if (!(dom = vshCommandOptDomain(ctl, cmd, &name))) return false; - if (vshCommandOptULongLong(ctl, cmd, "duration", &duration) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "duration"); + if (vshCommandOptULongLong(ctl, cmd, "duration", &duration) < 0) goto cleanup; - } if (vshCommandOptStringReq(ctl, cmd, "target", &target) < 0) goto cleanup; @@ -5330,12 +5303,8 @@ cmdScreenshot(vshControl *ctl, const vshCmd *cmd) if (vshCommandOptStringReq(ctl, cmd, "file", (const char **) &file) < 0) return false; - if (vshCommandOptUInt(ctl, cmd, "screen", &screen) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "screen"); + if (vshCommandOptUInt(ctl, cmd, "screen", &screen) < 0) return false; - } if (!(dom = vshCommandOptDomain(ctl, cmd, &name))) return false; @@ -6497,12 +6466,8 @@ cmdVcpuPin(vshControl *ctl, const vshCmd *cmd) if (!cpulist) VSH_EXCLUSIVE_OPTIONS_VAR(live, config); - if ((got_vcpu = vshCommandOptUInt(ctl, cmd, "vcpu", &vcpu)) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "vcpu"); + if ((got_vcpu = vshCommandOptUInt(ctl, cmd, "vcpu", &vcpu)) < 0) return false; - } /* In pin mode, "vcpu" is necessary */ if (cpulist && got_vcpu == 0) { @@ -6766,12 +6731,8 @@ cmdSetvcpus(vshControl *ctl, const vshCmd *cmd) if (!(dom = vshCommandOptDomain(ctl, cmd, NULL))) return false; - if (vshCommandOptInt(ctl, cmd, "count", &count) < 0 || count <= 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "count"); + if (vshCommandOptInt(ctl, cmd, "count", &count) < 0 || count <= 0) goto cleanup; - } /* none of the options were specified */ if (!current && flags == 0) { @@ -6946,12 +6907,8 @@ cmdIOThreadPin(vshControl *ctl, const vshCmd *cmd) if (!(dom = vshCommandOptDomain(ctl, cmd, NULL))) return false; - if (vshCommandOptUInt(ctl, cmd, "iothread", &iothread_id) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "iothread"); + if (vshCommandOptUInt(ctl, cmd, "iothread", &iothread_id) < 0) goto cleanup; - } if (vshCommandOptString(ctl, cmd, "cpulist", &cpulist) < 0) { vshError(ctl, "%s", _("iothreadpin: invalid cpulist.")); @@ -7037,12 +6994,8 @@ cmdIOThreadAdd(vshControl *ctl, const vshCmd *cmd) if (!(dom = vshCommandOptDomain(ctl, cmd, NULL))) return false; - if (vshCommandOptInt(ctl, cmd, "id", &iothread_id) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "id"); + if (vshCommandOptInt(ctl, cmd, "id", &iothread_id) < 0) goto cleanup; - } if (iothread_id <= 0) { vshError(ctl, _("Invalid IOThread id value: '%d'"), iothread_id); goto cleanup; @@ -7119,12 +7072,8 @@ cmdIOThreadDel(vshControl *ctl, const vshCmd *cmd) if (!(dom = vshCommandOptDomain(ctl, cmd, NULL))) return false; - if (vshCommandOptInt(ctl, cmd, "id", &iothread_id) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "id"); + if (vshCommandOptInt(ctl, cmd, "id", &iothread_id) < 0) goto cleanup; - } if (iothread_id <= 0) { vshError(ctl, _("Invalid IOThread id value: '%d'"), iothread_id); goto cleanup; @@ -7409,9 +7358,6 @@ cmdCPUStats(vshControl *ctl, const vshCmd *cmd) show_total = vshCommandOptBool(cmd, "total"); if ((rv = vshCommandOptInt(ctl, cmd, "start", &cpu)) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "start"); goto cleanup; } else if (rv > 0) { if (cpu < 0) { @@ -7422,9 +7368,6 @@ cmdCPUStats(vshControl *ctl, const vshCmd *cmd) } if ((rv = vshCommandOptInt(ctl, cmd, "count", &show_count)) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "count"); goto cleanup; } else if (rv > 0) { if (show_count < 0) { @@ -8211,12 +8154,8 @@ cmdSendKey(vshControl *ctl, const vshCmd *cmd) if (vshCommandOptString(ctl, cmd, "codeset", &codeset_option) <= 0) codeset_option = "linux"; - if (vshCommandOptUInt(ctl, cmd, "holdtime", &holdtime) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "holdtime"); + if (vshCommandOptUInt(ctl, cmd, "holdtime", &holdtime) < 0) goto cleanup; - } codeset = virKeycodeSetTypeFromString(codeset_option); if (codeset < 0) { @@ -8337,12 +8276,8 @@ cmdSendProcessSignal(vshControl *ctl, const vshCmd *cmd) if (!(dom = vshCommandOptDomain(ctl, cmd, NULL))) return false; - if (vshCommandOptLongLong(ctl, cmd, "pid", &pid_value) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "pid"); + if (vshCommandOptLongLong(ctl, cmd, "pid", &pid_value) < 0) goto cleanup; - } if (vshCommandOptStringReq(ctl, cmd, "signame", &signame) < 0) goto cleanup; @@ -8439,9 +8374,6 @@ cmdSetmem(vshControl *ctl, const vshCmd *cmd) else max = ULONG_MAX; if (vshCommandOptScaledInt(ctl, cmd, "size", &bytes, 1024, max) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "size"); virDomainFree(dom); return false; } @@ -8536,9 +8468,6 @@ cmdSetmaxmem(vshControl *ctl, const vshCmd *cmd) else max = ULONG_MAX; if (vshCommandOptScaledInt(ctl, cmd, "size", &bytes, 1024, max) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "size"); virDomainFree(dom); return false; } @@ -9171,12 +9100,8 @@ cmdQemuAttach(vshControl *ctl, const vshCmd *cmd) unsigned int flags = 0; unsigned int pid_value; /* API uses unsigned int, not pid_t */ - if (vshCommandOptUInt(ctl, cmd, "pid", &pid_value) <= 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "pid"); + if (vshCommandOptUInt(ctl, cmd, "pid", &pid_value) <= 0) goto cleanup; - } if (!(dom = virDomainQemuAttach(ctl->conn, pid_value, flags))) { vshError(ctl, _("Failed to attach to pid %u"), pid_value); @@ -9268,14 +9193,10 @@ cmdQemuAgentCommand(vshControl *ctl, const vshCmd *cmd) guest_agent_cmd = virBufferContentAndReset(&buf); judge = vshCommandOptInt(ctl, cmd, "timeout", &timeout); - if (judge < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "timeout"); + if (judge < 0) goto cleanup; - } else if (judge > 0) { + else if (judge > 0) judge = 1; - } if (judge && timeout < 1) { vshError(ctl, "%s", _("timeout must be positive")); goto cleanup; @@ -10153,12 +10074,8 @@ cmdMigrateSetMaxDowntime(vshControl *ctl, const vshCmd *cmd) if (!(dom = vshCommandOptDomain(ctl, cmd, NULL))) return false; - if (vshCommandOptLongLong(ctl, cmd, "downtime", &downtime) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "downtime"); + if (vshCommandOptLongLong(ctl, cmd, "downtime", &downtime) < 0) goto done; - } if (downtime < 1) { vshError(ctl, "%s", _("migrate: Invalid downtime")); goto done; @@ -10217,9 +10134,6 @@ cmdMigrateCompCache(vshControl *ctl, const vshCmd *cmd) rc = vshCommandOptULongLong(ctl, cmd, "size", &size); if (rc < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "size"); goto cleanup; } else if (rc != 0) { if (virDomainMigrateSetCompressionCache(dom, size, 0) < 0) @@ -10276,12 +10190,8 @@ cmdMigrateSetMaxSpeed(vshControl *ctl, const vshCmd *cmd) if (!(dom = vshCommandOptDomain(ctl, cmd, NULL))) return false; - if (vshCommandOptULWrap(ctl, cmd, "bandwidth", &bandwidth) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "bandwidth"); + if (vshCommandOptULWrap(ctl, cmd, "bandwidth", &bandwidth) < 0) goto done; - } if (virDomainMigrateSetMaxSpeed(dom, bandwidth, 0) < 0) goto done; @@ -12616,12 +12526,8 @@ cmdDomFSTrim(vshControl *ctl, const vshCmd *cmd) if (!(dom = vshCommandOptDomain(ctl, cmd, NULL))) return ret; - if (vshCommandOptULongLong(ctl, cmd, "minimum", &minimum) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "minimum"); + if (vshCommandOptULongLong(ctl, cmd, "minimum", &minimum) < 0) goto cleanup; - } if (vshCommandOptStringReq(ctl, cmd, "mountpoint", &mountPoint) < 0) goto cleanup; diff --git a/tools/virsh-host.c b/tools/virsh-host.c index b90782fae8..66f7fd9e62 100644 --- a/tools/virsh-host.c +++ b/tools/virsh-host.c @@ -176,12 +176,8 @@ cmdFreecell(vshControl *ctl, const vshCmd *cmd) VSH_EXCLUSIVE_OPTIONS_VAR(all, cellno); - if (cellno && vshCommandOptInt(ctl, cmd, "cellno", &cell) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "cellno"); + if (cellno && vshCommandOptInt(ctl, cmd, "cellno", &cell) < 0) return false; - } if (all) { if (!(cap_xml = virConnectGetCapabilities(ctl->conn))) { @@ -311,12 +307,8 @@ cmdFreepages(vshControl *ctl, const vshCmd *cmd) VSH_EXCLUSIVE_OPTIONS_VAR(all, cellno); - if (vshCommandOptScaledInt(ctl, cmd, "pagesize", &bytes, 1024, UINT_MAX) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "pagesize"); + if (vshCommandOptScaledInt(ctl, cmd, "pagesize", &bytes, 1024, UINT_MAX) < 0) goto cleanup; - } kibibytes = VIR_DIV_UP(bytes, 1024); if (all) { @@ -391,12 +383,8 @@ cmdFreepages(vshControl *ctl, const vshCmd *cmd) goto cleanup; } - if (vshCommandOptInt(ctl, cmd, "cellno", &cell) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "cellno"); + if (vshCommandOptInt(ctl, cmd, "cellno", &cell) < 0) goto cleanup; - } if (cell < -1) { vshError(ctl, "%s", @@ -490,25 +478,15 @@ cmdAllocpages(vshControl *ctl, const vshCmd *cmd) VSH_EXCLUSIVE_OPTIONS_VAR(all, cellno); - if (cellno && vshCommandOptInt(ctl, cmd, "cellno", &startCell) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "cellno"); + if (cellno && vshCommandOptInt(ctl, cmd, "cellno", &startCell) < 0) return false; - } - if (vshCommandOptScaledInt(ctl, cmd, "pagesize", &tmp, 1024, UINT_MAX) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "cellno"); + if (vshCommandOptScaledInt(ctl, cmd, "pagesize", &tmp, 1024, UINT_MAX) < 0) return false; - } pageSizes[0] = VIR_DIV_UP(tmp, 1024); - if (vshCommandOptULongLong(ctl, cmd, "pagecount", &pageCounts[0]) < 0) { - vshError(ctl, "%s", _("pagecount has to be a number")); + if (vshCommandOptULongLong(ctl, cmd, "pagecount", &pageCounts[0]) < 0) return false; - } flags |= add ? VIR_NODE_ALLOC_PAGES_ADD : VIR_NODE_ALLOC_PAGES_SET; @@ -764,12 +742,8 @@ cmdNodeCpuStats(vshControl *ctl, const vshCmd *cmd) unsigned long long cpu_stats[VSH_CPU_LAST] = { 0 }; bool present[VSH_CPU_LAST] = { false }; - if (vshCommandOptInt(ctl, cmd, "cpu", &cpuNum) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "cpu"); + if (vshCommandOptInt(ctl, cmd, "cpu", &cpuNum) < 0) return false; - } if (virNodeGetCPUStats(ctl->conn, cpuNum, NULL, &nparams, 0) != 0) { vshError(ctl, "%s", @@ -875,12 +849,8 @@ cmdNodeMemStats(vshControl *ctl, const vshCmd *cmd) virNodeMemoryStatsPtr params = NULL; bool ret = false; - if (vshCommandOptInt(ctl, cmd, "cell", &cellNum) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "cell"); + if (vshCommandOptInt(ctl, cmd, "cell", &cellNum) < 0) return false; - } /* get the number of memory parameters */ if (virNodeGetMemoryStats(ctl->conn, cellNum, NULL, &nparams, 0) != 0) { @@ -951,12 +921,8 @@ cmdNodeSuspend(vshControl *ctl, const vshCmd *cmd) if (vshCommandOptStringReq(ctl, cmd, "target", &target) < 0) return false; - if (vshCommandOptLongLong(ctl, cmd, "duration", &duration) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "duration"); + if (vshCommandOptLongLong(ctl, cmd, "duration", &duration) < 0) return false; - } if (STREQ(target, "mem")) { suspendTarget = VIR_NODE_SUSPEND_TARGET_MEM; @@ -1261,9 +1227,6 @@ cmdNodeMemoryTune(vshControl *ctl, const vshCmd *cmd) size_t i; if ((rc = vshCommandOptUInt(ctl, cmd, "shm-pages-to-scan", &value)) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "shm-pages-to-scan"); goto cleanup; } else if (rc > 0) { if (virTypedParamsAddUInt(¶ms, &nparams, &maxparams, @@ -1273,9 +1236,6 @@ cmdNodeMemoryTune(vshControl *ctl, const vshCmd *cmd) } if ((rc = vshCommandOptUInt(ctl, cmd, "shm-sleep-millisecs", &value)) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "shm-sleep-millisecs"); goto cleanup; } else if (rc > 0) { if (virTypedParamsAddUInt(¶ms, &nparams, &maxparams, @@ -1285,9 +1245,6 @@ cmdNodeMemoryTune(vshControl *ctl, const vshCmd *cmd) } if ((rc = vshCommandOptUInt(ctl, cmd, "shm-merge-across-nodes", &value)) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "shm-merge-across-nodes"); goto cleanup; } else if (rc > 0) { if (virTypedParamsAddUInt(¶ms, &nparams, &maxparams, diff --git a/tools/virsh-interface.c b/tools/virsh-interface.c index a6ae3b385d..6ad53452f1 100644 --- a/tools/virsh-interface.c +++ b/tools/virsh-interface.c @@ -843,12 +843,8 @@ cmdInterfaceBridge(vshControl *ctl, const vshCmd *cmd) /* use "no-stp" because we want "stp" to default true */ stp = !vshCommandOptBool(cmd, "no-stp"); - if (vshCommandOptUInt(ctl, cmd, "delay", &delay) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "delay"); + if (vshCommandOptUInt(ctl, cmd, "delay", &delay) < 0) goto cleanup; - } nostart = vshCommandOptBool(cmd, "no-start"); diff --git a/tools/virsh-network.c b/tools/virsh-network.c index 24250dd8d3..45f48408f5 100644 --- a/tools/virsh-network.c +++ b/tools/virsh-network.c @@ -936,12 +936,8 @@ cmdNetworkUpdate(vshControl *ctl, const vshCmd *cmd) goto cleanup; } - if (vshCommandOptInt(ctl, cmd, "parent-index", &parentIndex) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "parent-index"); + if (vshCommandOptInt(ctl, cmd, "parent-index", &parentIndex) < 0) goto cleanup; - } /* The goal is to have a full xml element in the "xml" * string. This is provided in the --xml option, either directly diff --git a/tools/virsh-volume.c b/tools/virsh-volume.c index 9df1d81013..bb1bfc2831 100644 --- a/tools/virsh-volume.c +++ b/tools/virsh-volume.c @@ -693,19 +693,11 @@ cmdVolUpload(vshControl *ctl, const vshCmd *cmd) const char *name = NULL; unsigned long long offset = 0, length = 0; - if (vshCommandOptULongLong(ctl, cmd, "offset", &offset) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "offset"); + if (vshCommandOptULongLong(ctl, cmd, "offset", &offset) < 0) return false; - } - if (vshCommandOptULongLongWrap(ctl, cmd, "length", &length) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "length"); + if (vshCommandOptULongLongWrap(ctl, cmd, "length", &length) < 0) return false; - } if (!(vol = vshCommandOptVol(ctl, cmd, "vol", "pool", &name))) return false; @@ -806,19 +798,11 @@ cmdVolDownload(vshControl *ctl, const vshCmd *cmd) unsigned long long offset = 0, length = 0; bool created = false; - if (vshCommandOptULongLong(ctl, cmd, "offset", &offset) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "offset"); + if (vshCommandOptULongLong(ctl, cmd, "offset", &offset) < 0) return false; - } - if (vshCommandOptULongLongWrap(ctl, cmd, "length", &length) < 0) { - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "length"); + if (vshCommandOptULongLongWrap(ctl, cmd, "length", &length) < 0) return false; - } if (!(vol = vshCommandOptVol(ctl, cmd, "vol", "pool", &name))) return false; diff --git a/tools/virsh.c b/tools/virsh.c index dcdbe03718..e833b261ba 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -1509,30 +1509,36 @@ vshCommandOpt(const vshCmd *cmd, const char *name, vshCmdOpt **opt, * @name option name * @value result * - * Convert option to int + * Convert option to int. + * On error, a message is displayed. + * * Return value: * >0 if option found and valid (@value updated) * 0 if option not found and not required (@value untouched) * <0 in all other cases (@value untouched) */ int -vshCommandOptInt(vshControl *ctl ATTRIBUTE_UNUSED, const vshCmd *cmd, +vshCommandOptInt(vshControl *ctl, const vshCmd *cmd, const char *name, int *value) { vshCmdOpt *arg; int ret; - ret = vshCommandOpt(cmd, name, &arg, true); - if (ret <= 0) + if ((ret = vshCommandOpt(cmd, name, &arg, true)) <= 0) return ret; - if (virStrToLong_i(arg->data, NULL, 10, value) < 0) - return -1; - return 1; + if ((ret = virStrToLong_i(arg->data, NULL, 10, value)) < 0) + vshError(ctl, + _("Numeric value '%s' for <%s> option is malformed or out of range"), + arg->data, name); + else + ret = 1; + + return ret; } static int -vshCommandOptUIntInternal(vshControl *ctl ATTRIBUTE_UNUSED, +vshCommandOptUIntInternal(vshControl *ctl, const vshCmd *cmd, const char *name, unsigned int *value, @@ -1544,15 +1550,18 @@ vshCommandOptUIntInternal(vshControl *ctl ATTRIBUTE_UNUSED, if ((ret = vshCommandOpt(cmd, name, &arg, true)) <= 0) return ret; - if (wrap) { - if (virStrToLong_ui(arg->data, NULL, 10, value) < 0) - return -1; - } else { - if (virStrToLong_uip(arg->data, NULL, 10, value) < 0) - return -1; - } + if (wrap) + ret = virStrToLong_ui(arg->data, NULL, 10, value); + else + ret = virStrToLong_uip(arg->data, NULL, 10, value); + if (ret < 0) + vshError(ctl, + _("Numeric value '%s' for <%s> option is malformed or out of range"), + arg->data, name); + else + ret = 1; - return 1; + return ret; } /** @@ -1590,7 +1599,7 @@ vshCommandOptUIntWrap(vshControl *ctl, const vshCmd *cmd, } static int -vshCommandOptULInternal(vshControl *ctl ATTRIBUTE_UNUSED, +vshCommandOptULInternal(vshControl *ctl, const vshCmd *cmd, const char *name, unsigned long *value, @@ -1602,15 +1611,18 @@ vshCommandOptULInternal(vshControl *ctl ATTRIBUTE_UNUSED, if ((ret = vshCommandOpt(cmd, name, &arg, true)) <= 0) return ret; - if (wrap) { - if (virStrToLong_ul(arg->data, NULL, 10, value) < 0) - return -1; - } else { - if (virStrToLong_ulp(arg->data, NULL, 10, value) < 0) - return -1; - } + if (wrap) + ret = virStrToLong_ul(arg->data, NULL, 10, value); + else + ret = virStrToLong_ulp(arg->data, NULL, 10, value); + if (ret < 0) + vshError(ctl, + _("Numeric value '%s' for <%s> option is malformed or out of range"), + arg->data, name); + else + ret = 1; - return 1; + return ret; } /* @@ -1667,8 +1679,7 @@ vshCommandOptString(vshControl *ctl ATTRIBUTE_UNUSED, const vshCmd *cmd, vshCmdOpt *arg; int ret; - ret = vshCommandOpt(cmd, name, &arg, true); - if (ret <= 0) + if ((ret = vshCommandOpt(cmd, name, &arg, true)) <= 0) return ret; if (!*arg->data && !(arg->def->flags & VSH_OFLAG_EMPTY_OK)) @@ -1733,23 +1744,27 @@ vshCommandOptStringReq(vshControl *ctl, * See vshCommandOptInt() */ int -vshCommandOptLongLong(vshControl *ctl ATTRIBUTE_UNUSED, const vshCmd *cmd, +vshCommandOptLongLong(vshControl *ctl, const vshCmd *cmd, const char *name, long long *value) { vshCmdOpt *arg; int ret; - ret = vshCommandOpt(cmd, name, &arg, true); - if (ret <= 0) + if ((ret = vshCommandOpt(cmd, name, &arg, true)) <= 0) return ret; - if (virStrToLong_ll(arg->data, NULL, 10, value) < 0) - return -1; - return 1; + if ((ret = virStrToLong_ll(arg->data, NULL, 10, value)) < 0) + vshError(ctl, + _("Numeric value '%s' for <%s> option is malformed or out of range"), + arg->data, name); + else + ret = 1; + + return ret; } static int -vshCommandOptULongLongInternal(vshControl *ctl ATTRIBUTE_UNUSED, +vshCommandOptULongLongInternal(vshControl *ctl, const vshCmd *cmd, const char *name, unsigned long long *value, @@ -1761,15 +1776,18 @@ vshCommandOptULongLongInternal(vshControl *ctl ATTRIBUTE_UNUSED, if ((ret = vshCommandOpt(cmd, name, &arg, true)) <= 0) return ret; - if (wrap) { - if (virStrToLong_ull(arg->data, NULL, 10, value) < 0) - return -1; - } else { - if (virStrToLong_ullp(arg->data, NULL, 10, value) < 0) - return -1; - } + if (wrap) + ret = virStrToLong_ull(arg->data, NULL, 10, value); + else + ret = virStrToLong_ullp(arg->data, NULL, 10, value); + if (ret < 0) + vshError(ctl, + _("Numeric value '%s' for <%s> option is malformed or out of range"), + arg->data, name); + else + ret = 1; - return 1; + return ret; } /** @@ -1819,7 +1837,7 @@ vshCommandOptULongLongWrap(vshControl *ctl, const vshCmd *cmd, * See vshCommandOptInt() */ int -vshCommandOptScaledInt(vshControl *ctl ATTRIBUTE_UNUSED, const vshCmd *cmd, +vshCommandOptScaledInt(vshControl *ctl, const vshCmd *cmd, const char *name, unsigned long long *value, int scale, unsigned long long max) { @@ -1831,9 +1849,16 @@ vshCommandOptScaledInt(vshControl *ctl ATTRIBUTE_UNUSED, const vshCmd *cmd, return ret; if (virStrToLong_ullp(arg->data, &end, 10, value) < 0 || virScaleInteger(value, end, scale, max) < 0) - return -1; + { + vshError(ctl, + _("Numeric value '%s' for <%s> option is malformed or out of range"), + arg->data, name); + ret = -1; + } else { + ret = 1; + } - return 1; + return ret; } @@ -1897,18 +1922,15 @@ vshCommandOptTimeoutToMs(vshControl *ctl, const vshCmd *cmd, int *timeout) int ret; unsigned int utimeout; - if ((ret = vshCommandOptUInt(ctl, cmd, "timeout", &utimeout)) < 0) - vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), - "timeout"); - if (ret <= 0) + if ((ret = vshCommandOptUInt(ctl, cmd, "timeout", &utimeout)) <= 0) return ret; /* Ensure that the timeout is not zero and that we can convert * it from seconds to milliseconds without overflowing. */ if (utimeout == 0 || utimeout > INT_MAX / 1000) { vshError(ctl, - _("Numeric value for <%s> option is malformed or out of range"), + _("Numeric value '%u' for <%s> option is malformed or out of range"), + utimeout, "timeout"); ret = -1; } else {