chiark / gitweb /
fsckd: the error code is actually returned in 'fd'
[elogind.git] / src / fsckd / fsckd.c
index 834476c14a689dcb48f7a0a1c802551eacaa2481..d4e9896e91cbc1bb1bf7fde7d9ffca4248ccf1a1 100644 (file)
@@ -122,8 +122,7 @@ static void remove_client(Client **first, Client *item) {
 }
 
 static void on_plymouth_disconnect(Manager *m) {
-        safe_close(m->plymouth_fd);
-        m->plymouth_fd = -1;
+        m->plymouth_fd = safe_close(m->plymouth_fd);
         m->plymouth_cancel_sent = false;
 }
 
@@ -339,25 +338,26 @@ static int new_connection_handler(sd_event_source *s, int fd, uint32_t revents,
 
         /* Initialize and list new clients */
         new_client_fd = accept4(m->connection_fd, NULL, NULL, SOCK_CLOEXEC);
-        if (new_client_fd > 0) {
-                log_debug("New fsck client connected to fd: %d", new_client_fd);
-                client = new0(Client, 1);
-                if (!client)
-                        return log_oom();
-                client->fd = new_client_fd;
-                client->manager = m;
-                LIST_PREPEND(clients, m->clients, client);
-                r = sd_event_add_io(m->event, NULL, client->fd, EPOLLIN, progress_handler, client);
-                if (r < 0) {
-                        remove_client(&(m->clients), client);
-                        return r;
-                }
-                /* only request the client to cancel now in case the request is dropped by the client (chance to recancel) */
-                if (m->cancel_requested)
-                        request_cancel_client(client);
-        } else
+        if (new_client_fd < 0)
                 return log_error_errno(errno, "Couldn't accept a new connection: %m");
 
+        log_debug("New fsck client connected to fd: %d", new_client_fd);
+
+        client = new0(Client, 1);
+        if (!client)
+                return log_oom();
+        client->fd = new_client_fd;
+        client->manager = m;
+        LIST_PREPEND(clients, m->clients, client);
+        r = sd_event_add_io(m->event, NULL, client->fd, EPOLLIN, progress_handler, client);
+        if (r < 0) {
+                remove_client(&(m->clients), client);
+                return r;
+        }
+        /* only request the client to cancel now in case the request is dropped by the client (chance to recancel) */
+        if (m->cancel_requested)
+                request_cancel_client(client);
+
         return 0;
 }
 
@@ -520,12 +520,12 @@ int main(int argc, char *argv[]) {
         if (n > 1) {
                 log_error("Too many file descriptors received.");
                 return EXIT_FAILURE;
-        } else if (n == 1) {
+        } else if (n == 1)
                 fd = SD_LISTEN_FDS_START + 0;
-        else {
+        else {
                 fd = make_socket_fd(LOG_DEBUG, FSCKD_SOCKET_PATH, SOCK_STREAM | SOCK_CLOEXEC);
                 if (fd < 0) {
-                        log_error_errno(r, "Couldn't create listening socket fd on %s: %m", FSCKD_SOCKET_PATH);
+                        log_error_errno(fd, "Couldn't create listening socket fd on %s: %m", FSCKD_SOCKET_PATH);
                         return EXIT_FAILURE;
                 }
         }