Commit 67b1355b74525fbe2bb38d80639148b1ee912acd
Committed by
Anthony Liguori
1 parent
62c5802e
qemu-option: factor out parse_option_bool
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing
1 changed file
with
22 additions
and
12 deletions
qemu-option.c
| @@ -165,6 +165,23 @@ QEMUOptionParameter *get_option_parameter(QEMUOptionParameter *list, | @@ -165,6 +165,23 @@ QEMUOptionParameter *get_option_parameter(QEMUOptionParameter *list, | ||
| 165 | return NULL; | 165 | return NULL; |
| 166 | } | 166 | } |
| 167 | 167 | ||
| 168 | +static int parse_option_bool(const char *name, const char *value, int *ret) | ||
| 169 | +{ | ||
| 170 | + if (value != NULL) { | ||
| 171 | + if (!strcmp(value, "on")) { | ||
| 172 | + *ret = 1; | ||
| 173 | + } else if (!strcmp(value, "off")) { | ||
| 174 | + *ret = 0; | ||
| 175 | + } else { | ||
| 176 | + fprintf(stderr, "Option '%s': Use 'on' or 'off'\n", name); | ||
| 177 | + return -1; | ||
| 178 | + } | ||
| 179 | + } else { | ||
| 180 | + *ret = 1; | ||
| 181 | + } | ||
| 182 | + return 0; | ||
| 183 | +} | ||
| 184 | + | ||
| 168 | /* | 185 | /* |
| 169 | * Sets the value of a parameter in a given option list. The parsing of the | 186 | * Sets the value of a parameter in a given option list. The parsing of the |
| 170 | * value depends on the type of option: | 187 | * value depends on the type of option: |
| @@ -185,6 +202,8 @@ QEMUOptionParameter *get_option_parameter(QEMUOptionParameter *list, | @@ -185,6 +202,8 @@ QEMUOptionParameter *get_option_parameter(QEMUOptionParameter *list, | ||
| 185 | int set_option_parameter(QEMUOptionParameter *list, const char *name, | 202 | int set_option_parameter(QEMUOptionParameter *list, const char *name, |
| 186 | const char *value) | 203 | const char *value) |
| 187 | { | 204 | { |
| 205 | + int flag; | ||
| 206 | + | ||
| 188 | // Find a matching parameter | 207 | // Find a matching parameter |
| 189 | list = get_option_parameter(list, name); | 208 | list = get_option_parameter(list, name); |
| 190 | if (list == NULL) { | 209 | if (list == NULL) { |
| @@ -195,18 +214,9 @@ int set_option_parameter(QEMUOptionParameter *list, const char *name, | @@ -195,18 +214,9 @@ int set_option_parameter(QEMUOptionParameter *list, const char *name, | ||
| 195 | // Process parameter | 214 | // Process parameter |
| 196 | switch (list->type) { | 215 | switch (list->type) { |
| 197 | case OPT_FLAG: | 216 | case OPT_FLAG: |
| 198 | - if (value != NULL) { | ||
| 199 | - if (!strcmp(value, "on")) { | ||
| 200 | - list->value.n = 1; | ||
| 201 | - } else if (!strcmp(value, "off")) { | ||
| 202 | - list->value.n = 0; | ||
| 203 | - } else { | ||
| 204 | - fprintf(stderr, "Option '%s': Use 'on' or 'off'\n", name); | ||
| 205 | - return -1; | ||
| 206 | - } | ||
| 207 | - } else { | ||
| 208 | - list->value.n = 1; | ||
| 209 | - } | 217 | + if (-1 == parse_option_bool(name, value, &flag)) |
| 218 | + return -1; | ||
| 219 | + list->value.n = flag; | ||
| 210 | break; | 220 | break; |
| 211 | 221 | ||
| 212 | case OPT_STRING: | 222 | case OPT_STRING: |