chiark / gitweb /
Make tables for DEFINE_STRING_TABLE_LOOKUP consistent
[elogind.git] / src / journal / journald-server.c
index 5872e91fba414a8e8a4b5d27032c13b6f75c86dd..868065075923d75a2b93d4e794fefb03c17ad5c8 100644 (file)
@@ -70,7 +70,7 @@
 
 #define RECHECK_AVAILABLE_SPACE_USEC (30*USEC_PER_SEC)
 
-static const char* const storage_table[] = {
+static const char* const storage_table[_STORAGE_MAX] = {
         [STORAGE_AUTO] = "auto",
         [STORAGE_VOLATILE] = "volatile",
         [STORAGE_PERSISTENT] = "persistent",
@@ -80,10 +80,10 @@ static const char* const storage_table[] = {
 DEFINE_STRING_TABLE_LOOKUP(storage, Storage);
 DEFINE_CONFIG_PARSE_ENUM(config_parse_storage, storage, Storage, "Failed to parse storage setting");
 
-static const char* const split_mode_table[] = {
-        [SPLIT_NONE] = "none",
+static const char* const split_mode_table[_SPLIT_MAX] = {
+        [SPLIT_LOGIN] = "login",
         [SPLIT_UID] = "uid",
-        [SPLIT_LOGIN] = "login"
+        [SPLIT_NONE] = "none",
 };
 
 DEFINE_STRING_TABLE_LOOKUP(split_mode, SplitMode);
@@ -1131,15 +1131,13 @@ int process_datagram(sd_event_source *es, int fd, uint32_t revents, void *userda
                 union {
                         struct cmsghdr cmsghdr;
 
-                        /* We use NAME_MAX space for the
-                         * SELinux label here. The kernel
-                         * currently enforces no limit, but
-                         * according to suggestions from the
-                         * SELinux people this will change and
-                         * it will probably be identical to
-                         * NAME_MAX. For now we use that, but
-                         * this should be updated one day when
-                         * the final limit is known.*/
+                        /* We use NAME_MAX space for the SELinux label
+                         * here. The kernel currently enforces no
+                         * limit, but according to suggestions from
+                         * the SELinux people this will change and it
+                         * will probably be identical to NAME_MAX. For
+                         * now we use that, but this should be updated
+                         * one day when the final limit is known.*/
                         uint8_t buf[CMSG_SPACE(sizeof(struct ucred)) +
                                     CMSG_SPACE(sizeof(struct timeval)) +
                                     CMSG_SPACE(sizeof(int)) + /* fd */
@@ -1216,8 +1214,6 @@ int process_datagram(sd_event_source *es, int fd, uint32_t revents, void *userda
 
                 close_many(fds, n_fds);
         }
-
-        return 0;
 }
 
 static int dispatch_sigusr1(sd_event_source *es, const struct signalfd_siginfo *si, void *userdata) {
@@ -1430,6 +1426,16 @@ static int server_open_hostname(Server *s) {
 
         r = sd_event_add_io(s->event, &s->hostname_event_source, s->hostname_fd, 0, dispatch_hostname_change, s);
         if (r < 0) {
+                /* kernels prior to 3.2 don't support polling this file. Ignore
+                 * the failure. */
+                if (r == -EPERM) {
+                        log_warning("Failed to register hostname fd in event loop: %s. Ignoring.",
+                                        strerror(-r));
+                        close_nointr_nofail(s->hostname_fd);
+                        s->hostname_fd = -1;
+                        return 0;
+                }
+
                 log_error("Failed to register hostname fd in event loop: %s", strerror(-r));
                 return r;
         }