From daa68c4b2de9814b8331e7b9079d5fc49bee35c1 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 5 Jan 2019 22:06:45 +0100 Subject: Add first parts of interface config handling --- src/keywords.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/keywords.c (limited to 'src/keywords.c') 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 + +#include +#include + +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); +} -- cgit v1.2.3