xref: /haiku/src/system/libroot/posix/musl/misc/getsubopt.c (revision ed24eb5ff12640d052171c6a7feba37fab8a75d1)
1 #include <stdlib.h>
2 #include <string.h>
3 
4 int getsubopt(char **opt, char *const *keys, char **val)
5 {
6 	char *s = *opt;
7 	int i;
8 
9 	*val = NULL;
10 	*opt = strchr(s, ',');
11 	if (*opt) *(*opt)++ = 0;
12 	else *opt = s + strlen(s);
13 
14 	for (i=0; keys[i]; i++) {
15 		size_t l = strlen(keys[i]);
16 		if (strncmp(keys[i], s, l)) continue;
17 		if (s[l] == '=')
18 			*val = s + l + 1;
19 		else if (s[l]) continue;
20 		return i;
21 	}
22 	return -1;
23 }
24