chiark / gitweb /
cdrom_id: add and use ID_CDROM_MEDIA to decide if we run vol_id
authorKay Sievers <kay.sievers@vrfy.org>
Tue, 21 Apr 2009 01:27:14 +0000 (03:27 +0200)
committerKay Sievers <kay.sievers@vrfy.org>
Tue, 21 Apr 2009 01:27:14 +0000 (03:27 +0200)
Some broken mobile phones offer a faked cdrom drive with a media
without any tracks.

extras/cdrom_id/cdrom_id.c
rules/rules.d/60-persistent-storage.rules

index c578f12921a0113ceb5180f6404634011ac0dee3..371d6a2dbd197898c69d381d2cee4fe5267662b5 100644 (file)
@@ -76,6 +76,7 @@ static unsigned int cd_mrw;
 static unsigned int cd_mrw_w;
 
 /* media info */
+static unsigned int cd_media;
 static unsigned int cd_media_cd_rom;
 static unsigned int cd_media_cd_r;
 static unsigned int cd_media_cd_rw;
@@ -325,6 +326,8 @@ static int cd_profiles(struct udev *udev, int fd)
                return -1;
        }
 
+       cd_media = 1;
+
        switch (cur_profile) {
        case 0x03:
        case 0x04:
@@ -625,6 +628,8 @@ print:
        if (cd_mrw_w)
                printf("ID_CDROM_MRW_W=1\n");
 
+       if (cd_media)
+               printf("ID_CDROM_MEDIA=1\n");
        if (cd_media_mo)
                printf("ID_CDROM_MEDIA_MO=1\n");
        if (cd_media_mrw)
index 23c21f8c6c47277ba39dcc6ee02051fd6acf743d..409548893bfafe9f300236c5accb03568e471d98 100644 (file)
@@ -55,7 +55,7 @@ ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PA
 ENV{DEVTYPE}=="disk", KERNEL!="sd*|sr*", ATTR{removable}=="1", GOTO="persistent_storage_end"
 
 # probe filesystem metadata of optical drives which have a media inserted
-KERNEL=="sr*", ENV{ID_CDROM_MEDIA_TRACK_COUNT}=="?*", IMPORT{program}="vol_id --export --skip-raid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET} $tempnode"
+KERNEL=="sr*", ENV{ID_CDROM_MEDIA}=="?*", IMPORT{program}="vol_id --export --skip-raid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET} $tempnode"
 
 # probe filesystem metadata of disks
 KERNEL!="sr*", IMPORT{program}="vol_id --export $tempnode"