|
@@ -0,0 +1,33 @@
|
|
|
+/*
|
|
|
+ * Copyright (C) 2006 Rich Felker <dalias@aerifal.cx>
|
|
|
+ *
|
|
|
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
|
|
|
+ */
|
|
|
+
|
|
|
+#include <stdlib.h>
|
|
|
+#include <string.h>
|
|
|
+
|
|
|
+libc_hidden_proto(strchr)
|
|
|
+libc_hidden_proto(strlen)
|
|
|
+libc_hidden_proto(strncmp)
|
|
|
+
|
|
|
+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;
|
|
|
+}
|