chiark / gitweb /
cdrom_id: Do not ignore errors from scsi_cmd_run()
[elogind.git] / extras / cdrom_id / cdrom_id.c
index 3f9ca4c228391a4c7eabcaadcc632b5ba6dc3cb1..37212e9794f79424fa59f4012d76ec983c58260d 100644 (file)
@@ -245,7 +245,7 @@ static int cd_inquiry(struct udev *udev, int fd) {
        scsi_cmd_set(udev, &sc, 4, 36);
        scsi_cmd_set(udev, &sc, 5, 0);
        err = scsi_cmd_run(udev, &sc, fd, inq, 36);
-       if ((err < 0)) {
+       if ((err != 0)) {
                info_scsi_cmd_err(udev, "INQUIRY", err);
                return -1;
        }
@@ -351,13 +351,13 @@ static int cd_profiles(struct udev *udev, int fd)
        scsi_cmd_set(udev, &sc, 8, sizeof(features) & 0xff);
        scsi_cmd_set(udev, &sc, 9, 0);
        err = scsi_cmd_run(udev, &sc, fd, features, sizeof(features));
-       if ((err < 0)) {
+       if ((err != 0)) {
                info_scsi_cmd_err(udev, "GET CONFIGURATION", err);
                return -1;
        }
 
        len = features[0] << 24 | features[1] << 16 | features[2] << 8 | features[3];
-       info(udev, "GET CONFIGURATION: size of features buffer %i\n", len);
+       info(udev, "GET CONFIGURATION: size of features buffer 0x%04x\n", len);
 
        if (len > sizeof(features)) {
                info(udev, "can not get features in a single query, truncating\n");
@@ -374,18 +374,17 @@ static int cd_profiles(struct udev *udev, int fd)
                case 0x00:
                        info(udev, "GET CONFIGURATION: feature 'profiles', with %i entries\n", features[i+3] / 4);
                        feature_profiles(udev, &features[i]+4, features[i+3]);
-
-                       /* set current profile, if we got a profiles section */
-                       cur_profile = features[6] << 8 | features[7];
-                       info(udev, "current profile 0x%02x\n", cur_profile);
                        break;
                default:
-                       info(udev, "GET CONFIGURATION: feature %i <ignored>, with %i bytes\n", feature, features[i+3]);
+                       info(udev, "GET CONFIGURATION: feature 0x%04x <ignored>, with 0x%02x bytes\n", feature, features[i+3]);
                        break;
                }
        }
 
-       if (cur_profile == 0) {
+       cur_profile = features[6] << 8 | features[7];
+       if (cur_profile > 0) {
+               info(udev, "current profile 0x%02x\n", cur_profile);
+       } else {
                info(udev, "no current profile, assuming no media\n");
                return -1;
        }
@@ -396,62 +395,81 @@ static int cd_profiles(struct udev *udev, int fd)
        case 0x03:
        case 0x04:
        case 0x05:
+               info(udev, "profile 0x%02x \n", cur_profile);
                cd_media_mo = 1;
                break;
        case 0x08:
+               info(udev, "profile 0x%02x media_cd_rom\n", cur_profile);
                cd_media_cd_rom = 1;
                break;
        case 0x09:
+               info(udev, "profile 0x%02x media_cd_r\n", cur_profile);
                cd_media_cd_r = 1;
                break;
        case 0x0a:
+               info(udev, "profile 0x%02x media_cd_rw\n", cur_profile);
                cd_media_cd_rw = 1;
                break;
        case 0x10:
+               info(udev, "profile 0x%02x media_dvd_ro\n", cur_profile);
                cd_media_dvd_rom = 1;
                break;
        case 0x11:
+               info(udev, "profile 0x%02x media_dvd_r\n", cur_profile);
                cd_media_dvd_r = 1;
                break;
        case 0x12:
+               info(udev, "profile 0x%02x media_dvd_ram\n", cur_profile);
                cd_media_dvd_ram = 1;
                break;
        case 0x13:
        case 0x14:
+               info(udev, "profile 0x%02x media_dvd_rw\n", cur_profile);
                cd_media_dvd_rw = 1;
                break;
        case 0x1B:
+               info(udev, "profile 0x%02x media_dvd_plus_r\n", cur_profile);
                cd_media_dvd_plus_r = 1;
                break;
        case 0x1A:
+               info(udev, "profile 0x%02x media_dvd_plus_rw\n", cur_profile);
                cd_media_dvd_plus_rw = 1;
                break;
        case 0x2A:
+               info(udev, "profile 0x%02x media_dvd_plus_rw_dl\n", cur_profile);
                cd_media_dvd_plus_rw_dl = 1;
                break;
        case 0x2B:
+               info(udev, "profile 0x%02x media_dvd_plus_r_dl\n", cur_profile);
                cd_media_dvd_plus_r_dl = 1;
                break;
        case 0x40:
+               info(udev, "profile 0x%02x media_bd\n", cur_profile);
                cd_media_bd = 1;
                break;
        case 0x41:
        case 0x42:
+               info(udev, "profile 0x%02x media_bd_r\n", cur_profile);
                cd_media_bd_r = 1;
                break;
        case 0x43:
+               info(udev, "profile 0x%02x media_bd_re\n", cur_profile);
                cd_media_bd_re = 1;
                break;
        case 0x50:
+               info(udev, "profile 0x%02x media_hddvd\n", cur_profile);
                cd_media_hddvd = 1;
                break;
        case 0x51:
+               info(udev, "profile 0x%02x media_hddvd_r\n", cur_profile);
                cd_media_hddvd_r = 1;
                break;
        case 0x52:
+               info(udev, "profile 0x%02x media_hddvd_rw\n", cur_profile);
                cd_media_hddvd_rw = 1;
                break;
        default:
+               info(udev, "profile 0x%02x <ignored>\n", cur_profile);
                break;
        }
        return 0;
@@ -474,7 +492,7 @@ static int cd_media_info(struct udev *udev, int fd)
        scsi_cmd_set(udev, &sc, 8, sizeof(header));
        scsi_cmd_set(udev, &sc, 9, 0);
        err = scsi_cmd_run(udev, &sc, fd, header, sizeof(header));
-       if ((err < 0)) {
+       if ((err != 0)) {
                info_scsi_cmd_err(udev, "READ DISC INFORMATION", err);
                return -1;
        };
@@ -508,7 +526,7 @@ static int cd_media_toc(struct udev *udev, int fd)
        scsi_cmd_set(udev, &sc, 8, sizeof(header));
        scsi_cmd_set(udev, &sc, 9, 0);
        err = scsi_cmd_run(udev, &sc, fd, header, sizeof(header));
-       if ((err < 0)) {
+       if ((err != 0)) {
                info_scsi_cmd_err(udev, "READ TOC", err);
                return -1;
        }
@@ -531,7 +549,7 @@ static int cd_media_toc(struct udev *udev, int fd)
        scsi_cmd_set(udev, &sc, 8, len);
        scsi_cmd_set(udev, &sc, 9, 0);
        err = scsi_cmd_run(udev, &sc, fd, toc, len);
-       if ((err < 0)) {
+       if ((err != 0)) {
                info_scsi_cmd_err(udev, "READ TOC (tracks)", err);
                return -1;
        }
@@ -558,7 +576,7 @@ static int cd_media_toc(struct udev *udev, int fd)
        scsi_cmd_set(udev, &sc, 8, 12);
        scsi_cmd_set(udev, &sc, 9, 0);
        err = scsi_cmd_run(udev, &sc, fd, header, sizeof(header));
-       if ((err < 0)) {
+       if ((err != 0)) {
                info_scsi_cmd_err(udev, "READ TOC (multi session)", err);
                return -1;
        }