- ret = 0;
- if (vp->cb)
- fn = vp->cb;
-match:
- if (o->roff1)
- cp = (char **) o->roff1;
- else
- cp = td_var(data, o->off1);
- *cp = strdup(ptr);
- rest = strstr(*cp, ":");
- if (rest) {
- *rest = '\0';
- ptr = rest + 1;
- } else if (vp && vp->cb)
- ptr = NULL;
- break;
+ ret = 1;
+ for (i = 0; i < PARSE_MAX_VP; i++) {
+ vp = &posval[i];
+ if (!vp->ival || vp->ival[0] == '\0')
+ continue;
+ all_skipped = 0;
+ if (!strncmp(vp->ival, ptr, opt_len(ptr))) {
+ char *rest;
+
+ ret = 0;
+ if (vp->cb)
+ fn = vp->cb;
+ rest = strstr(*cp ?: ptr, ":");
+ if (rest) {
+ if (*cp)
+ *rest = '\0';
+ ptr = rest + 1;
+ } else
+ ptr = NULL;
+ break;
+ }