From d3c8231e738dd286591c1becc2f327ed55ed89d1 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 26 May 2009 00:50:45 +0200 Subject: [PATCH] cdrom_id: suppress ID_CDROM_MEDIA_STATE=blank for plain non-writable CDROM media Some broken fake cdrom drives return ID_CDROM_MEDIA_STATE=blank. $ /lib/udev/cdrom_id -d /dev/sr1 main: probing: '/dev/sr1' cd_inquiry: INQUIRY: [Nokia ][S60 ][1.0 ] cd_profiles: GET CONFIGURATION: number of profiles 76 cd_profiles: current profile 0x08 cd_media_toc: READ TOC: len: 12 cd_media_toc: last track 1 starts at block 0 cd_media_info: disk type 00 ID_CDROM=1 ID_CDROM_MRW=1 ID_CDROM_MRW_W=1 ID_CDROM_MEDIA=1 ID_CDROM_MEDIA_CD=1 ID_CDROM_MEDIA_STATE=blank Others work fine, but ID_CDROM_MEDIA_STATE is not needed for non-writable CDROM media: $ /lib/udev/cdrom_id -d /dev/sr1 main: probing: '/dev/sr1' cd_inquiry: INQUIRY: [SanDisk ][U3 Cruzer Micro ][8.02] cd_profiles: GET CONFIGURATION: number of profiles 72 cd_profiles: current profile 0x08 cd_media_toc: READ TOC: len: 20 cd_media_toc: track=1 info=0x4(data) start_block=0 cd_media_toc: last track 1 starts at block 0 cd_media_info: disk type 00 ID_CDROM=1 ID_CDROM_MRW=1 ID_CDROM_MRW_W=1 ID_CDROM_MEDIA=1 ID_CDROM_MEDIA_CD=1 ID_CDROM_MEDIA_STATE=complete ID_CDROM_MEDIA_SESSION_COUNT=1 ID_CDROM_MEDIA_TRACK_COUNT=1 ID_CDROM_MEDIA_TRACK_COUNT_DATA=1 --- extras/cdrom_id/cdrom_id.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/extras/cdrom_id/cdrom_id.c b/extras/cdrom_id/cdrom_id.c index 0d873ae8..921e5346 100644 --- a/extras/cdrom_id/cdrom_id.c +++ b/extras/cdrom_id/cdrom_id.c @@ -426,8 +426,10 @@ static int cd_media_info(struct udev *udev, int fd) info(udev, "disk type %02x\n", header[8]); - if ((header[2] & 3) < 4) + /* exclude plain CDROM, some fake cdroms return 0 for "blank" media here */ + if (!cd_media_cd_rom && (header[2] & 3) < 4) cd_media_state = media_status[header[2] & 3]; + if ((header[2] & 3) != 2) cd_media_session_next = header[10] << 8 | header[5]; cd_media_session_count = header[9] << 8 | header[4]; -- 2.39.5