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 /vl.c | |
parent | e15f4a992cd8c6fcec42bc00c85c2641a2fbcb14 (diff) |
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>
Diffstat (limited to 'vl.c')
-rw-r--r-- | vl.c | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -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) { |