#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;
}
