Package: release.debian.org Severity: normal Tags: wheezy User: release.debian....@packages.debian.org Usertags: pu
[ cc: debian-b...@lists.debian.org, mi...@physics.harvard.edu ] Hi, A fix for a very old bug was committed during the jessie release cycle, but I had been initially reluctant to pushing it for a point release as it had received little testing. It's been a very long time now, and I'm not aware of related regressions, so let's go for it? Changelog entry: | partconf (1.40+deb7u1) wheezy; urgency=low | | [ Milan Kupcevic ] | * Exclude CD/DVD drives from partition search. (thanks, Frank Fegert) | Closes: #332227 | | -- Cyril Brulebois <k...@debian.org> Fri, 28 Aug 2015 17:31:58 +0200 and patch attached. Thanks for your time. Mraw, KiBi.
diff -Nru partconf-1.40/debian/changelog partconf-1.40+deb7u1/debian/changelog --- partconf-1.40/debian/changelog 2012-10-20 18:12:50.000000000 +0200 +++ partconf-1.40+deb7u1/debian/changelog 2015-08-28 17:32:02.000000000 +0200 @@ -1,3 +1,11 @@ +partconf (1.40+deb7u1) wheezy; urgency=low + + [ Milan Kupcevic ] + * Exclude CD/DVD drives from partition search. (thanks, Frank Fegert) + Closes: #332227 + + -- Cyril Brulebois <k...@debian.org> Fri, 28 Aug 2015 17:31:58 +0200 + partconf (1.40) unstable; urgency=low [ Updated translations ] diff -Nru partconf-1.40/find-parts.c partconf-1.40+deb7u1/find-parts.c --- partconf-1.40/find-parts.c 2011-01-19 05:53:21.000000000 +0100 +++ partconf-1.40+deb7u1/find-parts.c 2015-08-28 17:31:52.000000000 +0200 @@ -113,6 +113,60 @@ fclose(fp); } +/** + * Determine if a device is a CD-ROM/DVD based on major/minor device + * number. Based on information from Linux's Documentation/devices.txt. + */ +bool +is_cdrom(const char * const device_name) +{ + struct stat st; + + if (stat(device_name, &st) != 0) + return false; + + switch (major(st.st_rdev)) { + case 11: /* SCSI CD-ROM devices */ + case 113: /* Parallel port ATAPI CD-ROM devices */ + return true; + default: + break; + } + + if (minor(st.st_rdev) == 0) { + switch (major(st.st_rdev)) { + case 15: /* Sony CDU-31A/CDU-33A CD-ROM */ + case 16: /* GoldStar CD-ROM */ + case 17: /* Optics Storage CD-ROM */ + case 18: /* Sanyo CD-ROM */ + case 20: /* Hitachi CD-ROM */ + case 23: /* Mitsumi proprietary CD-ROM */ + case 24: /* Sony CDU-535 CD-ROM */ + case 29: /* Aztech/Orchid/Okano/Wearnes CD-ROM */ + case 30: /* Philips LMS CM-205 CD-ROM */ + case 32: /* Philips LMS CM-206 CD-ROM */ + return true; + default: + break; + } + } + + if (minor(st.st_rdev) >= 0 && minor(st.st_rdev) <= 3) { + switch (major(st.st_rdev)) { + case 25: /* First Matsushita (Panasonic/SoundBlaster: CD-ROM */ + case 26: /* Second Matsushita (Panasonic/SoundBlaster: CD-ROM */ + case 27: /* Fourth Matsushita (Panasonic/SoundBlaster: CD-ROM */ + case 28: /* Third Matsushita (Panasonic/SoundBlaster: CD-ROM */ + case 46: /* Parallel port ATAPI CD-ROM devices */ + return true; + default: + break; + } + } + + return false; +} + #ifndef FIND_PARTS_MAIN int block_partition(const char *part) @@ -182,6 +236,8 @@ continue; if (strstr(dev->path, "/dev/mtd") == dev->path) continue; + if (is_cdrom(dev->path)) + continue; if (!ped_disk_probe(dev)) continue; disk = ped_disk_new(dev);