aboutsummaryrefslogtreecommitdiff
path: root/protomap.c
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@tele2.at>2018-10-28 13:29:42 +0100
committerDavid Oberhollenzer <david.oberhollenzer@tele2.at>2018-10-28 14:25:50 +0100
commit200daf7dbbce90d4006d7dbf53affa48a110ed00 (patch)
tree939da07b50abf4a62de1b25c359e5345f1de50cc /protomap.c
parent49f52b1571216a4bae3a4df9944c978e3a1fb854 (diff)
Import syslog utility program
Signed-off-by: David Oberhollenzer <david.oberhollenzer@tele2.at>
Diffstat (limited to 'protomap.c')
-rw-r--r--protomap.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/protomap.c b/protomap.c
index 1ace2bb..60e2c6a 100644
--- a/protomap.c
+++ b/protomap.c
@@ -1,6 +1,8 @@
/* SPDX-License-Identifier: ISC */
#include "syslogd.h"
+#include <string.h>
+
typedef struct {
const char *name;
int id;
@@ -54,12 +56,30 @@ static const char *enum_to_name(const enum_map_t *map, int id)
return map->name;
}
+static int enum_by_name(const enum_map_t *map, const char *name)
+{
+ while (map->name != NULL && strcmp(map->name, name) != 0)
+ ++map;
+
+ return map->name == NULL ? -1 : map->id;
+}
+
const char *level_id_to_string(int level)
{
return enum_to_name(levels, level);
}
-const char *facility_id_to_string(int level)
+const char *facility_id_to_string(int id)
+{
+ return enum_to_name(facilities, id);
+}
+
+int level_id_from_string(const char *level)
+{
+ return enum_by_name(levels, level);
+}
+
+int facility_id_from_string(const char *fac)
{
- return enum_to_name(facilities, level);
+ return enum_by_name(facilities, fac);
}