Carl Lowenstein wrote: > On Fri, Feb 29, 2008 at 8:01 PM, James G. Sack (jim) <[EMAIL PROTECTED]> > wrote: >> Carl Lowenstein wrote: >> > When I put a blank CD-R in the drive, after several seconds an icon >> > labeled "Blank CD-R Disc" appears on the desktop. Is there some >> > command-line way to recognize this? >> > >> > I am trying to make my CD-burning shell script more foolproof. If I >> > start the script too soon, the call to /usr/bin/cdrecord bombs out >> > with a message about "non-writeable disc". I think this really means >> > that the system hasn't gotten around to noticing the presence of the >> > blank. If I wait until the icon is visible, then there is no problem. >> > >> >> I have absolutely no reason to believe this is the right thing to do, >> but a couple of 'messin-around' experiments shows that >> >> dd if=/dev/cdrom bs=512 count=1 of=/dev/null >> mount /dev/cdrom /mnt >> both contain "No medium found" if the drive is empty (no disc present) >> file -s /dev/sr0 >> reports /dev/sr0: writable, no read permission >> >> With a blank writable disc, >> dd reports Input/Output error >> mount reports a different error >> /dev/sr0: reports empty >> >> All of them first close the tray if it is open. > > OK, you seem to have found something useful. You must have one of > those new-fangled kernels that maps the CD drive to /dev/sr0. My CD > drive is /dev/hdc, symlinked to /dev/cdrom. > > # blank CD in drive, either open or shut > [EMAIL PROTECTED] tmp]$ file -sL /dev/cdrom; echo $? > /dev/cdrom: ERROR: cannot read `/dev/cdrom' (Input/output error) > 0 > # if drive is open, closes it. Does not return until after disc icon > is on screen. > > # nothing in drive, either open or shut > [EMAIL PROTECTED] tmp]$ file -sL /dev/cdrom; echo $? > /dev/cdrom: writable, no read permission > 0 > # if drive is open, closes it. Returns immediately, at least to the > human observer. > > Note that exit status of file command is 0 regardless, so that isn't much > help. > But all is not lost: > > [EMAIL PROTECTED] tmp]$ file -sL /dev/cdrom | grep -q "cannot read"; echo $? > 1 > [EMAIL PROTECTED] tmp]$ file -sL /dev/cdrom | grep -q "cannot read"; echo $? > 0 > > I observe by the behavior of grep(1) that file(1) seems to write to > stdout. Interesting that file(1) should report "writable, no read > permission" for an empty drive, and "cannot read" for a blank disc.
I thought that was interesting, as well. :-) > > Thanks for the ideas, I had run dry. No guarantee that this will work > for newer kernels etc. Will try newer distro's tomorrow some time. > > Late-breaking news. Newer system, with blank CD in drive. file(1) > reports "ERROR: cannot read ... " > If run again, it reports "empty". So best to grep for "writable, no > read permission", I suppose. Oh yeah, now I remember.. writing utilities that depend on status or error messages tend to fail because those messages seem to change -- in sync with the current fortune program, I guess. Regards, ..jim [to bed, now!] -- [email protected] http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-list
