chiark / gitweb /
cdrom_id: Drop MEDIA_SESSION_NEXT for DVD-RW-RO
[elogind.git] / extras / cdrom_id / cdrom_id.c
index 889b2342e8a023dc8fab4f446a29b568fe92ca7b..f9d6e0bc24fe574aef4cc86189b516e553892567 100644 (file)
@@ -573,6 +573,7 @@ static int cd_media_info(struct udev *udev, int fd)
 
        cd_media = 1;
        info(udev, "disk type %02x\n", header[8]);
+       info(udev, "hardware reported media status: %s\n", media_status[header[2] & 3]);
 
        /* exclude plain CDROM, some fake cdroms return 0 for "blank" media here */
        if (!cd_media_cd_rom)
@@ -689,8 +690,9 @@ static int cd_media_info(struct udev *udev, int fd)
        }
 
 determined:
-       /* "other" is e. g. DVD-RAM, can't append sessions there either */
-       if ((header[2] & 3) < 2)
+       /* "other" is e. g. DVD-RAM, can't append sessions there; DVDs in
+        * restricted overwrite mode can never append, only in sequential mode */
+       if ((header[2] & 3) < 2 && !cd_media_dvd_rw_ro)
                cd_media_session_next = header[10] << 8 | header[5];
        cd_media_session_count = header[9] << 8 | header[4];
        cd_media_track_count = header[11] << 8 | header[6];
@@ -869,12 +871,10 @@ int main(int argc, char *argv[])
                goto print;
 
        /* get session/track info */
-       if (cd_media_toc(udev, fd) < 0)
-               goto print;
+       cd_media_toc(udev, fd);
 
        /* get writable media state */
-       if (cd_media_info(udev, fd) < 0)
-               goto print;
+       cd_media_info(udev, fd);
 
 print:
        printf("ID_CDROM=1\n");