OptsVisitor: rebase opts_type_uint64() to parse_uint_full()
Simplify the code in preparation for the next patch. Signed-off-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Wanlong Gao <gaowanlong@cn.fujitsu.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
parent
1e1c555a49
commit
62d090e23f
@ -407,6 +407,7 @@ opts_type_uint64(Visitor *v, uint64_t *obj, const char *name, Error **errp)
|
|||||||
OptsVisitor *ov = DO_UPCAST(OptsVisitor, visitor, v);
|
OptsVisitor *ov = DO_UPCAST(OptsVisitor, visitor, v);
|
||||||
const QemuOpt *opt;
|
const QemuOpt *opt;
|
||||||
const char *str;
|
const char *str;
|
||||||
|
unsigned long long val;
|
||||||
|
|
||||||
if (ov->list_mode == LM_UNSIGNED_INTERVAL) {
|
if (ov->list_mode == LM_UNSIGNED_INTERVAL) {
|
||||||
*obj = ov->range_next.u;
|
*obj = ov->range_next.u;
|
||||||
@ -417,26 +418,12 @@ opts_type_uint64(Visitor *v, uint64_t *obj, const char *name, Error **errp)
|
|||||||
if (!opt) {
|
if (!opt) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
str = opt->str;
|
str = opt->str;
|
||||||
if (str != NULL) {
|
|
||||||
while (isspace((unsigned char)*str)) {
|
|
||||||
++str;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*str != '-' && *str != '\0') {
|
if (parse_uint_full(str, &val, 0) == 0 && val <= UINT64_MAX) {
|
||||||
unsigned long long val;
|
*obj = val;
|
||||||
char *endptr;
|
processed(ov, name);
|
||||||
|
return;
|
||||||
/* non-empty, non-negative subject sequence */
|
|
||||||
errno = 0;
|
|
||||||
val = strtoull(str, &endptr, 0);
|
|
||||||
if (*endptr == '\0' && errno == 0 && val <= UINT64_MAX) {
|
|
||||||
*obj = val;
|
|
||||||
processed(ov, name);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
error_set(errp, QERR_INVALID_PARAMETER_VALUE, opt->name,
|
error_set(errp, QERR_INVALID_PARAMETER_VALUE, opt->name,
|
||||||
"an uint64 value");
|
"an uint64 value");
|
||||||
|
Loading…
Reference in New Issue
Block a user