chiark / gitweb /
Introduce loop_read_exact helper
[elogind.git] / src / core / automount.c
index 0539fbbc41c1dab4da93533589b9611acc23dfde..cec90cbb319d7d60bc2a7940e6eff630bb1b2f36 100644 (file)
@@ -725,7 +725,6 @@ static bool automount_check_gc(Unit *u) {
 static int automount_dispatch_io(sd_event_source *s, int fd, uint32_t events, void *userdata) {
         union autofs_v5_packet_union packet;
         Automount *a = AUTOMOUNT(userdata);
 static int automount_dispatch_io(sd_event_source *s, int fd, uint32_t events, void *userdata) {
         union autofs_v5_packet_union packet;
         Automount *a = AUTOMOUNT(userdata);
-        ssize_t l;
         int r;
 
         assert(a);
         int r;
 
         assert(a);
@@ -736,12 +735,9 @@ static int automount_dispatch_io(sd_event_source *s, int fd, uint32_t events, vo
                 goto fail;
         }
 
                 goto fail;
         }
 
-        l = loop_read(a->pipe_fd, &packet, sizeof(packet), true);
-        if (l != sizeof(packet)) {
-                if (l < 0)
-                        log_unit_error_errno(UNIT(a)->id, l, "Invalid read from pipe: %m");
-                else
-                        log_unit_error(UNIT(a)->id, "Invalid read from pipe: short read");
+        r = loop_read_exact(a->pipe_fd, &packet, sizeof(packet), true);
+        if (r < 0) {
+                log_unit_error_errno(UNIT(a)->id, r, "Invalid read from pipe: %m");
                 goto fail;
         }
 
                 goto fail;
         }