]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev/cdrom_id: do not pass ioctl return value to log_debug_errno()
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 15 Apr 2021 05:49:31 +0000 (07:49 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 15 Apr 2021 05:49:31 +0000 (07:49 +0200)
While at it, let's print the tray status in human readable form.

src/udev/cdrom_id/cdrom_id.c

index 60c7b4922cacc71276c9427d4ce35a01283fd85c..f1715a93bc1b66f52bf590a8232fbee83ca03198 100644 (file)
@@ -302,10 +302,23 @@ static int cd_capability_compat(Context *c) {
 }
 
 static int cd_media_compat(Context *c) {
+        int r;
+
         assert(c);
 
-        if (ioctl(c->fd, CDROM_DRIVE_STATUS, CDSL_CURRENT) != CDS_DISC_OK)
-                return log_debug_errno(errno, "CDROM_DRIVE_STATUS != CDS_DISC_OK");
+        r = ioctl(c->fd, CDROM_DRIVE_STATUS, CDSL_CURRENT);
+        if (r < 0)
+                return log_debug_errno(errno, "ioctl(CDROM_DRIVE_STATUS) failed: m");
+        if (r != CDS_DISC_OK) {
+                log_debug("ioctl(CDROM_DRIVE_STATUS) → %d (%s), ignoring",
+                          r,
+                          r == CDS_NO_INFO ? "no info" :
+                          r == CDS_NO_DISC ? "no disc" :
+                          r == CDS_TRAY_OPEN ? "tray open" :
+                          r == CDS_DRIVE_NOT_READY ? "drive not ready" :
+                          "unkown status");
+                return -ENOMEDIUM;
+        }
 
         c->has_media = true;
         return 0;