Checking if a Cd is in a drive and is blank?
ghenry
created: 2006-02-02 08:27:20

Just a quickie guys...

Can this be done in Perl or via system?

I am stumped

Gavin.

Walking the road to enlightenment... I found a penguin and a camel on the way.....
Fancy a yourname@perl.me.uk? Just ask!!!
Re: Checking if a Cd is in a drive and is blank?
created: 2006-02-02 08:50:49

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).

Re: Checking if a CD is in a drive and it is blank?
created: 2006-02-02 11:10:48
Here is something using Inline::C to use ioctl. [id://194848] You probably can access directly with sysopen
#!/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.


I'm not really a human, but I play one on earth. flash japh

perlmonks.org content © perlmonks.org and Fletch, ghenry, zentara

prlmnks.org © 2006 edmund von der burg (eccles & toad)

v 0.03