diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2009-07-22 16:43:00 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-07-27 14:08:23 -0500 |
commit | 62c5802efdabe2a24ca9680a1ab9dcbbfbaf43d2 (patch) | |
tree | b31d2dbf3090dd38af73fe600de9a059aab25b73 | |
parent | 3b0ba927931925f0f76509747ae145df30c97a05 (diff) | |
download | qemu-62c5802efdabe2a24ca9680a1ab9dcbbfbaf43d2.zip qemu-62c5802efdabe2a24ca9680a1ab9dcbbfbaf43d2.tar.gz qemu-62c5802efdabe2a24ca9680a1ab9dcbbfbaf43d2.tar.bz2 |
move parser functions from vl.c to qemu-option.c
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | qemu-option.c | 64 | ||||
-rw-r--r-- | qemu-option.h | 6 | ||||
-rw-r--r-- | sysemu.h | 8 | ||||
-rw-r--r-- | vl.c | 64 |
4 files changed, 71 insertions, 71 deletions
diff --git a/qemu-option.c b/qemu-option.c index 646bbad..bb2a09e 100644 --- a/qemu-option.c +++ b/qemu-option.c @@ -85,6 +85,70 @@ const char *get_opt_value(char *buf, int buf_size, const char *p) return p; } +int get_next_param_value(char *buf, int buf_size, + const char *tag, const char **pstr) +{ + const char *p; + char option[128]; + + p = *pstr; + for(;;) { + p = get_opt_name(option, sizeof(option), p, '='); + if (*p != '=') + break; + p++; + if (!strcmp(tag, option)) { + *pstr = get_opt_value(buf, buf_size, p); + if (**pstr == ',') { + (*pstr)++; + } + return strlen(buf); + } else { + p = get_opt_value(NULL, 0, p); + } + if (*p != ',') + break; + p++; + } + return 0; +} + +int get_param_value(char *buf, int buf_size, + const char *tag, const char *str) +{ + return get_next_param_value(buf, buf_size, tag, &str); +} + +int check_params(char *buf, int buf_size, + const char * const *params, const char *str) +{ + const char *p; + int i; + + p = str; + while (*p != '\0') { + p = get_opt_name(buf, buf_size, p, '='); + if (*p != '=') { + return -1; + } + p++; + for (i = 0; params[i] != NULL; i++) { + if (!strcmp(params[i], buf)) { + break; + } + } + if (params[i] == NULL) { + return -1; + } + p = get_opt_value(NULL, 0, p); + if (*p != ',') { + break; + } + p++; + } + return 0; +} + /* * Searches an option list for an option with the given name */ diff --git a/qemu-option.h b/qemu-option.h index 059c0a4..267abae 100644 --- a/qemu-option.h +++ b/qemu-option.h @@ -46,6 +46,12 @@ typedef struct QEMUOptionParameter { const char *get_opt_name(char *buf, int buf_size, const char *p, char delim); const char *get_opt_value(char *buf, int buf_size, const char *p); +int get_next_param_value(char *buf, int buf_size, + const char *tag, const char **pstr); +int get_param_value(char *buf, int buf_size, + const char *tag, const char *str); +int check_params(char *buf, int buf_size, + const char * const *params, const char *str); /* @@ -3,6 +3,7 @@ /* Misc. things related to the system emulator. */ #include "qemu-common.h" +#include "qemu-option.h" #include "sys-queue.h" #ifdef _WIN32 @@ -276,13 +277,6 @@ void do_usb_add(Monitor *mon, const char *devname); void do_usb_del(Monitor *mon, const char *devname); void usb_info(Monitor *mon); -int get_param_value(char *buf, int buf_size, - const char *tag, const char *str); -int get_next_param_value(char *buf, int buf_size, - const char *tag, const char **pstr); -int check_params(char *buf, int buf_size, - const char * const *params, const char *str); - void register_devices(void); #endif @@ -1599,70 +1599,6 @@ static int socket_init(void) } #endif -int get_next_param_value(char *buf, int buf_size, - const char *tag, const char **pstr) -{ - const char *p; - char option[128]; - - p = *pstr; - for(;;) { - p = get_opt_name(option, sizeof(option), p, '='); - if (*p != '=') - break; - p++; - if (!strcmp(tag, option)) { - *pstr = get_opt_value(buf, buf_size, p); - if (**pstr == ',') { - (*pstr)++; - } - return strlen(buf); - } else { - p = get_opt_value(NULL, 0, p); - } - if (*p != ',') - break; - p++; - } - return 0; -} - -int get_param_value(char *buf, int buf_size, - const char *tag, const char *str) -{ - return get_next_param_value(buf, buf_size, tag, &str); -} - -int check_params(char *buf, int buf_size, - const char * const *params, const char *str) -{ - const char *p; - int i; - - p = str; - while (*p != '\0') { - p = get_opt_name(buf, buf_size, p, '='); - if (*p != '=') { - return -1; - } - p++; - for (i = 0; params[i] != NULL; i++) { - if (!strcmp(params[i], buf)) { - break; - } - } - if (params[i] == NULL) { - return -1; - } - p = get_opt_value(NULL, 0, p); - if (*p != ',') { - break; - } - p++; - } - return 0; -} - /***********************************************************/ /* Bluetooth support */ static int nb_hcis; |