Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
libvirt
提交
815dc963
L
libvirt
项目概览
openeuler
/
libvirt
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
libvirt
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
815dc963
编写于
6月 02, 2015
作者:
A
Andrea Bolognani
提交者:
John Ferlan
6月 02, 2015
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
virsh: Move error messages inside vshCommandOpt*() functions
上级
be6ff4da
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
124 addition
and
270 deletion
+124
-270
tests/vcpupin
tests/vcpupin
+2
-2
tests/virsh-optparse
tests/virsh-optparse
+13
-13
tools/virsh-domain-monitor.c
tools/virsh-domain-monitor.c
+1
-8
tools/virsh-domain.c
tools/virsh-domain.c
+20
-114
tools/virsh-host.c
tools/virsh-host.c
+9
-52
tools/virsh-interface.c
tools/virsh-interface.c
+1
-5
tools/virsh-network.c
tools/virsh-network.c
+1
-5
tools/virsh-volume.c
tools/virsh-volume.c
+4
-20
tools/virsh.c
tools/virsh.c
+73
-51
未找到文件。
tests/vcpupin
浏览文件 @
815dc963
...
...
@@ -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 <vcpu> option is malformed or out of range
error: Numeric value
'a'
for <vcpu> 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 <vcpu> option is malformed or out of range
error: Numeric value
'-100'
for <vcpu> option is malformed or out of range
EOF
compare exp out
||
fail
=
1
...
...
tests/virsh-optparse
浏览文件 @
815dc963
...
...
@@ -141,7 +141,7 @@ compare exp-err err || fail=1
# Non-numeric value
cat
<<
\
EOF
> exp-err || framework_failure
error: Numeric value for <start> option is malformed or out of range
error: Numeric value
'abc'
for <start> 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 <start> option is malformed or out of range
error: Numeric value
'42WB'
for <start> 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 <start> option is malformed or out of range
error: Numeric value
'42MB'
for <start> 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 <start> option is malformed or out of range
error: Numeric value
'2147483648'
for <start> 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 <size> option is malformed or out of range
error: Numeric value
'abc'
for <size> 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 <size> option is malformed or out of range
error: Numeric value
'42WB'
for <size> 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 <size> option is malformed or out of range
error: Numeric value
'-1'
for <size> 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 <timeout> option is malformed or out of range
error: Numeric value
'abc'
for <timeout> 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 <timeout> option is malformed or out of range
error: Numeric value
'2147484'
for <timeout> 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 <timeout> option is malformed or out of range
error: Numeric value
'42WB'
for <timeout> 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 <timeout> option, so this value is rejected
cat
<<
\
EOF
> exp-err || framework_failure
error: Numeric value for <timeout> option is malformed or out of range
error: Numeric value
'42MB'
for <timeout> 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 <timeout> option is malformed or out of range
error: Numeric value
'-1'
for <timeout> 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 <timeout> option is malformed or out of range
error: Numeric value
'0'
for <timeout> 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
...
...
tools/virsh-domain-monitor.c
浏览文件 @
815dc963
...
...
@@ -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 */
...
...
tools/virsh-domain.c
浏览文件 @
815dc963
...
...
@@ -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
;
...
...
tools/virsh-host.c
浏览文件 @
815dc963
...
...
@@ -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
(
&
params
,
&
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
(
&
params
,
&
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
(
&
params
,
&
nparams
,
&
maxparams
,
...
...
tools/virsh-interface.c
浏览文件 @
815dc963
...
...
@@ -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"
);
...
...
tools/virsh-network.c
浏览文件 @
815dc963
...
...
@@ -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
...
...
tools/virsh-volume.c
浏览文件 @
815dc963
...
...
@@ -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
;
...
...
tools/virsh.c
浏览文件 @
815dc963
...
...
@@ -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
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录