From ec77d1ab3b9cc156f724515779e9ecb2aa8b4188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 15 Apr 2021 07:49:31 +0200 Subject: [PATCH] udev/cdrom_id: do not pass ioctl return value to log_debug_errno() While at it, let's print the tray status in human readable form. --- src/udev/cdrom_id/cdrom_id.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/udev/cdrom_id/cdrom_id.c b/src/udev/cdrom_id/cdrom_id.c index 60c7b4922c..f1715a93bc 100644 --- a/src/udev/cdrom_id/cdrom_id.c +++ b/src/udev/cdrom_id/cdrom_id.c @@ -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;