diff options
Diffstat (limited to 'src/misc/getsubopt.c')
| -rw-r--r-- | src/misc/getsubopt.c | 23 | 
1 files changed, 23 insertions, 0 deletions
| diff --git a/src/misc/getsubopt.c b/src/misc/getsubopt.c new file mode 100644 index 00000000..dac9bf9e --- /dev/null +++ b/src/misc/getsubopt.c @@ -0,0 +1,23 @@ +#include <stdlib.h> +#include <string.h> + +int getsubopt(char **opt, char *const *keys, char **val) +{ +	char *s = *opt; +	int i; + +	*val = NULL; +	*opt = strchr(s, ','); +	if (*opt) *(*opt)++ = 0; +	else *opt = s + strlen(s); + +	for (i=0; keys[i]; i++) { +		size_t l = strlen(keys[i]); +		if (strncmp(keys[i], s, l)) continue; +		if (s[l] == '=') +			*val = s + l; +		else if (s[l]) continue; +		return i; +	} +	return -1; +} | 
