Commit 5db4af8b authored by Jan Kiszka's avatar Jan Kiszka Committed by Anthony Liguori
Browse files

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: default avatarJan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
parent e15f4a99
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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);

+13 −4
Original line number Diff line number Diff line
@@ -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)
{