1
0
Fork 0
mirror of https://github.com/pygos/usyslog.git synced 2024-05-06 22:46:14 +02:00

minor cleanup

Signed-off-by: David Oberhollenzer <david.oberhollenzer@tele2.at>
This commit is contained in:
David Oberhollenzer 2018-10-28 23:54:11 +01:00
parent a70b85fd64
commit efa304b483

View file

@ -3,83 +3,70 @@
#include <string.h> #include <string.h>
typedef struct { static const char *levels[] = {
const char *name; "emergency",
int id; "alert",
} enum_map_t; "critical",
"error",
static const enum_map_t levels[] = { "warning",
{ "emergency", 0 }, "notice",
{ "alert", 1 }, "info",
{ "critical", 2 }, "debug",
{ "error", 3 },
{ "warning", 4 },
{ "notice", 5 },
{ "info", 6 },
{ "debug", 7 },
{ NULL, 0 },
}; };
static const enum_map_t facilities[] = { static const char *facilities[] = {
{ "kernel", 0 }, "kernel",
{ "user", 1 }, "user",
{ "mail", 2 }, "mail",
{ "daemon", 3 }, "daemon",
{ "auth", 4 }, "auth",
{ "syslog", 5 }, "syslog",
{ "lpr", 6 }, "lpr",
{ "news", 7 }, "news",
{ "uucp", 8 }, "uucp",
{ "clock", 9 }, "clock",
{ "authpriv", 10 }, "authpriv",
{ "ftp", 11 }, "ftp",
{ "ntp", 12 }, "ntp",
{ "audit", 13 }, "audit",
{ "alert", 14 }, "alert",
{ "cron", 15 }, "cron",
{ "local0", 16 }, "local0",
{ "local1", 17 }, "local1",
{ "local2", 18 }, "local2",
{ "local3", 19 }, "local3",
{ "local4", 20 }, "local4",
{ "local5", 21 }, "local5",
{ "local6", 22 }, "local6",
{ "local7", 23 }, "local7",
{ NULL, 0 },
}; };
static const char *enum_to_name(const enum_map_t *map, int id)
{
while (map->name != NULL && map->id != id)
++map;
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) const char *level_id_to_string(int level)
{ {
return enum_to_name(levels, level); return (level < 0 || level > 7) ? NULL : levels[level];
} }
const char *facility_id_to_string(int id) const char *facility_id_to_string(int id)
{ {
return enum_to_name(facilities, id); return (id < 0 || id > 23) ? NULL : facilities[id];
} }
int level_id_from_string(const char *level) int level_id_from_string(const char *level)
{ {
return enum_by_name(levels, level); size_t i;
for (i = 0; i < sizeof(levels) / sizeof(levels[0]); ++i) {
if (strcmp(level, levels[i]) == 0)
return i;
}
return -1;
} }
int facility_id_from_string(const char *fac) int facility_id_from_string(const char *fac)
{ {
return enum_by_name(facilities, fac); size_t i;
for (i = 0; i < sizeof(facilities) / sizeof(facilities[0]); ++i) {
if (strcmp(fac, facilities[i]) == 0)
return i;
}
return -1;
} }