Index: fusl/src/misc/getsubopt.c |
diff --git a/fusl/src/misc/getsubopt.c b/fusl/src/misc/getsubopt.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..53ee9573f2fce5430b13424dfabb77f9253d0b97 |
--- /dev/null |
+++ b/fusl/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 + 1; |
+ else if (s[l]) continue; |
+ return i; |
+ } |
+ return -1; |
+} |