<syslog.h>: add facilitynames[] and prioritynames[].

Test: treehugger
Change-Id: I2a65b3088fe5a28b66e7d1c2a8caa10cb4467202
diff --git a/tests/syslog_test.cpp b/tests/syslog_test.cpp
index 3ec3337..623d8a3 100644
--- a/tests/syslog_test.cpp
+++ b/tests/syslog_test.cpp
@@ -26,6 +26,9 @@
  * SUCH DAMAGE.
  */
 
+#include <stddef.h>  // glibc's <syslog.h> breaks without this; musl seems fine.
+
+#define SYSLOG_NAMES
 #include <syslog.h>
 
 #include <errno.h>
@@ -72,3 +75,34 @@
       },
       0, "bar: x{1023}\n");
 }
+
+static int by_name(const CODE* array, const char* name) {
+  for (auto c = array; c->c_name != nullptr; c++) {
+    if (!strcmp(c->c_name, name)) return c->c_val;
+  }
+  return -1;
+}
+
+static const char* by_value(const CODE* array, int value) {
+  for (auto c = array; c->c_name != nullptr; c++) {
+    if (c->c_val == value) return c->c_name;
+  }
+  return nullptr;
+}
+
+TEST(syslog, facilitynames) {
+  ASSERT_STREQ("auth", by_value(facilitynames, LOG_AUTH));
+  ASSERT_STREQ("local7", by_value(facilitynames, LOG_LOCAL7));
+  ASSERT_EQ(LOG_AUTH, by_name(facilitynames, "auth"));
+  ASSERT_EQ(LOG_LOCAL7, by_name(facilitynames, "local7"));
+}
+
+TEST(syslog, prioritynames) {
+  ASSERT_STREQ("alert", by_value(prioritynames, LOG_ALERT));
+  ASSERT_STREQ("err", by_value(prioritynames, LOG_ERR));
+  ASSERT_STREQ("warn", by_value(prioritynames, LOG_WARNING));
+  ASSERT_EQ(LOG_ALERT, by_name(prioritynames, "alert"));
+  ASSERT_EQ(LOG_ERR, by_name(prioritynames, "err"));
+  ASSERT_EQ(LOG_WARNING, by_name(prioritynames, "warn"));
+  ASSERT_EQ(LOG_WARNING, by_name(prioritynames, "warning"));
+}