Just a quickie guys...
Can this be done in Perl or via system?
I am stumped
Gavin.
Yes.
But then again given the correct command to run via system that's true for pretty much anything. Of course since you've given zero context as to platform and OS no one's going to be able to give you anything more than vague hints (possibly involving cdrecord for Linux and BSDen).
#!/usr/bin/perl # read man ioctl_list for hex codes # read /usr/include/linux/cdrom.h for cd codes use Fcntl; sysopen my $f, "/dev/sr0", O_RDONLY|O_NONBLOCK or die "open $?"; ioctl $f, 0x5329, 0 or die "ioctl $!"; # 0 unlocks 1 locks door ioctl $f, 0x5309, 0 or die "ioctl $!"; # open tray ioctl $f, 0x5319, 0 or die "ioctl $!"; #close tray
You can detect whether there is a cd in the tray, and try to mount it, and see if it contains any data. The thing is, it can be formatted a variety of ways, a cd dosn't have to be iso9660.
Also see in the perlfaq, "perldoc -q ioctl".
8.21: Where do I get the include files to do ioctl() or syscall()?
Running cdrecord with some options may tell you if the cd is blank.
perlmonks.org content © perlmonks.org and Fletch, ghenry, zentara
prlmnks.org © 2006 edmund von der burg (eccles & toad)
v 0.03