Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
DISCONTINUED:openSUSE:11.1:Update
grip
grip-ejectfix.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File grip-ejectfix.patch of Package grip
--------------------------------------------------------------------------- - correct location of #ifdef CDIOCEJECT, fixes door unlocking for eject --------------------------------------------------------------------------- From: Bernhard Kaindl Fwd: esd vs. disk eject 2005-10-16 11:28 Hi, I ran into a problem of grip not being able to eject on Linux, while the eject command was able to eject. After investigating, I found that at least the Linux 2.6 kernels do not define CDIOEJECT, but with the order of #ifdefs in grip-3.3.1/src/cddev.c, it would need to be defined to allow that CDROM_LOCKDOOR, which is provided by Linux 2.6, to be checked. What helped me was to move the #ifdef for it the the ioctl call where this IOCTL is called, thus freeing the CDROM_LOCKDOOR #ifdef and ioctl from this overlaying ifdef requirement, so the CDROM_LOCKDOOR ioctl is then compiled whenever it's provided by the platform. As far as I could find out CDIOEJECT is a FreeBSD ioctl and Linux uses CDROM_LOCKDOOR and CDROMEJECT instead. The change causes that both were done on Linux and my eject problems were solved. I think the location of the ifdef must have been a mistake originally since I cannot see much sense in require an FreeBSD define as precondition for cheking if a Linux ioctls is available and can be called. The attached patch contains the diff which I have been using since August on two Linux machines where I had this problem. Besides moving the ifdef in place, I also adds a missing "Eject failed" printout for the cases that the CDROMEJECT may fail. With this g_print call, this error string would be printed, togther the the errno, should the Linux kernel return an error from CDROMEJECT call, to allow better diagnosis. I propose to apply the attached patch to the next release. Bernhard --- grip-noeject/src/cddev.c 2004-04-15 20:23:09.000000000 +0200 +++ grip-doeject/src/cddev.c 2005-08-16 15:31:08.000000000 +0200 @@ -618,25 +618,29 @@ return FALSE; } -#ifdef CDIOCEJECT /* always unlock door before an eject in case something else locked it */ #if defined(CDROM_LOCKDOOR) if(ioctl(disc->cd_desc,CDROM_LOCKDOOR,0)<0) g_print(_("Unlock failed: %d"), errno); #endif + #ifdef CDIOCALLOW if(ioctl(disc->cd_desc,CDIOCALLOW)<0) g_print(_("Unlock failed: %d"),errno); #endif +#ifdef CDIOCEJECT if(ioctl(disc->cd_desc,CDIOCEJECT)<0) { g_print(_("CDIOCEJECT")); return FALSE; } #endif + #ifdef CDROMEJECT - if(ioctl(disc->cd_desc,CDROMEJECT)<0) + if(ioctl(disc->cd_desc,CDROMEJECT)<0) { + g_print(_("Eject failed: %d"),errno); return FALSE; + } #endif return TRUE;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor