summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/c/stuff.xs.pm8
-rw-r--r--perl-install/detect_devices.pm11
2 files changed, 18 insertions, 1 deletions
diff --git a/perl-install/c/stuff.xs.pm b/perl-install/c/stuff.xs.pm
index 3fa08bc0a..14d9ddeb5 100644
--- a/perl-install/c/stuff.xs.pm
+++ b/perl-install/c/stuff.xs.pm
@@ -164,6 +164,14 @@ isBurner(fd)
OUTPUT:
RETVAL
+int
+isDvdDrive(fd)
+ int fd
+ CODE:
+ RETVAL = ioctl(fd, CDROM_GET_CAPABILITY) & CDC_DVD;
+ OUTPUT:
+ RETVAL
+
unsigned int
total_sectors(fd)
int fd
diff --git a/perl-install/detect_devices.pm b/perl-install/detect_devices.pm
index c2be7e1e8..754870662 100644
--- a/perl-install/detect_devices.pm
+++ b/perl-install/detect_devices.pm
@@ -79,7 +79,16 @@ sub isBurner {
$f && c::isBurner(fileno($f));
}
}
-sub isDvdDrive { $_[0]->{info} =~ /DVD/ }
+sub isDvdDrive {
+ my ($dev) = @_;
+ if (my ($nb) = $dev =~ /scd (.*)/x) {
+ # can't detect SCSI DVD
+ undef;
+ } else {
+ my $f = tryOpen($dev);
+ $f && c::isDvdDrive(fileno($f));
+ }
+}
sub isZipDrive { $_[0]->{info} =~ /ZIP\s+\d+/ } #- accept ZIP 100, untested for bigger ZIP drive.
#-sub isJazzDrive { $_[0]->{info} =~ /JAZZ?\s+/ } #- untested.
sub isLS120Drive { $_[0]->{info} =~ /LS-?120|144MB/ }