diff options
| author | Jan Kiszka <jan.kiszka@siemens.com> | 2009-06-24 14:42:28 +0200 |
|---|---|---|
| committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-06-29 08:52:44 -0500 |
| commit | 5db4af8bc8eb99333b0d2be1f88c943353361e50 (patch) | |
| tree | 6f94de6cc354fdddc9e52f2c4563f1415220b982 | |
| parent | e15f4a992cd8c6fcec42bc00c85c2641a2fbcb14 (diff) | |
| download | focaccia-qemu-5db4af8bc8eb99333b0d2be1f88c943353361e50.tar.gz focaccia-qemu-5db4af8bc8eb99333b0d2be1f88c943353361e50.zip | |
Introduce get_next_param_value
In order to parse multiple instances of the same param=value pair, introduce get_next_param_value which can pass back to string parsing position after reading a parameter value. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
| -rw-r--r-- | sysemu.h | 2 | ||||
| -rw-r--r-- | vl.c | 17 |
2 files changed, 15 insertions, 4 deletions
diff --git a/sysemu.h b/sysemu.h index aa036bfd1f..8744347f28 100644 --- a/sysemu.h +++ b/sysemu.h @@ -275,6 +275,8 @@ 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); diff --git a/vl.c b/vl.c index 1c077b4c86..4cb9f0bf6d 100644 --- a/vl.c +++ b/vl.c @@ -1812,20 +1812,23 @@ static int socket_init(void) } #endif -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) { const char *p; char option[128]; - p = str; + p = *pstr; for(;;) { p = get_opt_name(option, sizeof(option), p, '='); if (*p != '=') break; p++; if (!strcmp(tag, option)) { - (void)get_opt_value(buf, buf_size, p); + *pstr = get_opt_value(buf, buf_size, p); + if (**pstr == ',') { + (*pstr)++; + } return strlen(buf); } else { p = get_opt_value(NULL, 0, p); @@ -1837,6 +1840,12 @@ int get_param_value(char *buf, int buf_size, 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) { |