diff options
author | Bruno Bottazzini <bruno.bottazzini@intel.com> | 2015-02-13 18:40:50 -0200 |
---|---|---|
committer | David Herrmann <dh.herrmann@gmail.com> | 2015-02-14 14:32:27 +0100 |
commit | 9cad100eca602aa33c2f56475c30fccf14abea1a (patch) | |
tree | a9fe2c9665ec219dc9c56b05f16894dd703c34d2 /src/shared/util.c | |
parent | 60c35566600f45350c37f152c1093018972bd9a5 (diff) |
util: use a shared lookup function for string tables
Macro DEFINE_STRING_TABLE_LOOKUP expands to a new function for each
of the almost 120 tables throghout the code.
Move the its implementation to a function (guaranteed to never be inlined),
and make the macro expand to an inlined function that calls this function.
This saves a few kilobytes from the systemd binary
(David: - fix coding-style
- use 'ssize_t' to fix 32bit to 64bit propagation
- use streq_ptr())
Diffstat (limited to 'src/shared/util.c')
-rw-r--r-- | src/shared/util.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/shared/util.c b/src/shared/util.c index 3a63351247..ba035caed0 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -8089,3 +8089,16 @@ int syslog_parse_priority(const char **p, int *priority, bool with_facility) { *p += k; return 1; } + +ssize_t string_table_lookup(const char * const *table, size_t len, const char *key) { + size_t i; + + if (!key) + return -1; + + for (i = 0; i < len; ++i) + if (streq_ptr(table[i], key)) + return (ssize_t)i; + + return -1; +} |