diff --git a/fs/parseopt.c b/fs/parseopt.c index 12dbe18..8ff8301 100644 --- a/fs/parseopt.c +++ b/fs/parseopt.c @@ -2,6 +2,32 @@ #include "parseopt.h" +void parseopt_b(const char *options, const char *opt, bool *val) +{ + const char *start; + size_t optlen = strlen(opt); + +again: + start = strstr(options, opt); + + if (!start) { + *val = false; + return; + } + + if (start > options && start[-1] != ',') { + options = start; + goto again; + } + + if (start[optlen] != ',' && start[optlen] != '\0') { + options = start; + goto again; + } + + *val = true; +} + void parseopt_hu(const char *options, const char *opt, unsigned short *val) { const char *start; diff --git a/fs/parseopt.h b/fs/parseopt.h index a8523b6..abf3be3 100644 --- a/fs/parseopt.h +++ b/fs/parseopt.h @@ -1 +1,2 @@ +void parseopt_b(const char *options, const char *opt, bool *val); void parseopt_hu(const char *options, const char *opt, unsigned short *val);