[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 7/9] qdev: accept hex properties only if prefixed by
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 7/9] qdev: accept hex properties only if prefixed by 0x |
Date: |
Thu, 9 Feb 2012 15:31:56 +0100 |
Hex properties are an obstacle to removal of old qdev string parsing, but
even here we can lay down the foundations for future simplification. In
general, they are rarely used and their printed form is more interesting
than the parsing. For example you'd usually set isa-serial.index
instead of isa-serial.iobase. And luckily our main client, libvirt
only cares about few of these, and always sets them with a 0x prefix.
So the series stops accepting bare hexadecimal numbers, preparing for
making legacy properties read-only in 1.3 or so. The read side will
stay as long as "info qtree" is with us.
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/qdev-properties.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c
index 9a838b0..d47122a 100644
--- a/hw/qdev-properties.c
+++ b/hw/qdev-properties.c
@@ -164,6 +164,10 @@ static int parse_hex8(DeviceState *dev, Property *prop,
const char *str)
uint8_t *ptr = qdev_get_prop_ptr(dev, prop);
char *end;
+ if (str[0] != '0' || str[1] != 'x') {
+ return -EINVAL;
+ }
+
*ptr = strtoul(str, &end, 16);
if ((*end != '\0') || (end == str)) {
return -EINVAL;
@@ -369,6 +373,10 @@ static int parse_hex32(DeviceState *dev, Property *prop,
const char *str)
uint32_t *ptr = qdev_get_prop_ptr(dev, prop);
char *end;
+ if (str[0] != '0' || str[1] != 'x') {
+ return -EINVAL;
+ }
+
*ptr = strtoul(str, &end, 16);
if ((*end != '\0') || (end == str)) {
return -EINVAL;
@@ -456,6 +464,10 @@ static int parse_hex64(DeviceState *dev, Property *prop,
const char *str)
uint64_t *ptr = qdev_get_prop_ptr(dev, prop);
char *end;
+ if (str[0] != '0' || str[1] != 'x') {
+ return -EINVAL;
+ }
+
*ptr = strtoull(str, &end, 16);
if ((*end != '\0') || (end == str)) {
return -EINVAL;
--
1.7.7.6
- [Qemu-devel] [PATCH 0/9] qdev deconstruction, command-line episode, Paolo Bonzini, 2012/02/09
- [Qemu-devel] [PATCH 1/9] qapi: allow sharing enum implementation across visitors, Paolo Bonzini, 2012/02/09
- [Qemu-devel] [PATCH 2/9] qapi: drop qmp_input_end_optional, Paolo Bonzini, 2012/02/09
- [Qemu-devel] [PATCH 3/9] qapi: add string-based visitors, Paolo Bonzini, 2012/02/09
- [Qemu-devel] [PATCH 6/9] qdev: accept both strings and integers for PCI addresses, Paolo Bonzini, 2012/02/09
- [Qemu-devel] [PATCH 4/9] qapi: add tests for string-based visitors, Paolo Bonzini, 2012/02/09
- [Qemu-devel] [PATCH 7/9] qdev: accept hex properties only if prefixed by 0x,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 8/9] qdev: use built-in QOM string parser, Paolo Bonzini, 2012/02/09
- [Qemu-devel] [PATCH 5/9] qom: add generic string parsing/printing, Paolo Bonzini, 2012/02/09
- [Qemu-devel] [PATCH 9/9] qdev: drop unnecessary parse/print methods, Paolo Bonzini, 2012/02/09
- [Qemu-devel] [PULL v2 0/9] qdev deconstruction, command-line episode, Paolo Bonzini, 2012/02/21