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: |