diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2019-01-05 22:06:45 +0100 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2019-01-05 22:06:45 +0100 |
commit | daa68c4b2de9814b8331e7b9079d5fc49bee35c1 (patch) | |
tree | 4f82de8a19abf7b6a0c9e6f511ac23995d9d5851 /src/keywords.c | |
parent | 9e059f898ae1b0528cdde553fd51c661901e283a (diff) | |
download | neco-daa68c4b2de9814b8331e7b9079d5fc49bee35c1.tar neco-daa68c4b2de9814b8331e7b9079d5fc49bee35c1.zip |
Add first parts of interface config handling
Diffstat (limited to 'src/keywords.c')
-rw-r--r-- | src/keywords.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/keywords.c b/src/keywords.c new file mode 100644 index 0000000..12393bd --- /dev/null +++ b/src/keywords.c @@ -0,0 +1,31 @@ +#include "keywords.h" + +#include <libubox/utils.h> + +#include <stdlib.h> +#include <string.h> + +static const char *const keywords[] = { + +#define KW(kw) #kw, +#include "keywords.def" +#undef KW + +}; + +static int compare_keywords(const void *a, const void *b) { + const char *const *ea = a, *const *eb = b; + return strcmp(*ea, *eb); +} + +keyword_t lookup_keyword(const char *keyword) { + const char *const *entry = bsearch( + &keyword, keywords, ARRAY_SIZE(keywords), sizeof(const char *), + compare_keywords + ); + + if (!entry) + return UNKNOWN_KEYWORD; + + return (keyword_t) (entry - keywords + 1); +} |