From 62c5802efdabe2a24ca9680a1ab9dcbbfbaf43d2 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 22 Jul 2009 16:43:00 +0200 Subject: [PATCH] move parser functions from vl.c to qemu-option.c Signed-off-by: Gerd Hoffmann Signed-off-by: Anthony Liguori --- qemu-option.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ qemu-option.h | 6 ++++++ sysemu.h | 8 +------- vl.c | 64 ----------------------------------------------------------- 4 files changed, 71 insertions(+), 71 deletions(-) diff --git a/qemu-option.c b/qemu-option.c index 646bbad002..bb2a09e121 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 059c0a49fb..267abae297 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); /* diff --git a/sysemu.h b/sysemu.h index ec55877950..3748af1905 100644 --- a/sysemu.h +++ b/sysemu.h @@ -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 diff --git a/vl.c b/vl.c index df60fb1aae..591186806b 100644 --- a/vl.c +++ b/vl.c @@ -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; -- 2.11.4.GIT