From: Marc D. <ma...@us...> - 2005-02-14 16:33:46
|
Update of /cvsroot/pclasses/pclasses2/src/System In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31595/src/System Modified Files: CdRomDevice.linux.cpp Log Message: added support for drive capabilities Index: CdRomDevice.linux.cpp =================================================================== RCS file: /cvsroot/pclasses/pclasses2/src/System/CdRomDevice.linux.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- CdRomDevice.linux.cpp 1 Feb 2005 00:14:34 -0000 1.2 +++ CdRomDevice.linux.cpp 14 Feb 2005 16:33:35 -0000 1.3 @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (C) 2005 by Christian Prochnow * - * cp...@se... * + * Copyright (C) 2005 by Christian Prochnow (cp...@se...) * + * Copyright (C) 2005 by Marc Boris Dürner * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU Library General Public License as * @@ -37,6 +37,34 @@ { } +CdRomDevice::DriveCapability CdRomDevice::capability() throw(IO::IOError) +{ + CdRomDevice::DriveCapability capability = CdRom; + + int ret = ::ioctl((int)handle(), CDROM_GET_CAPABILITY, CDSL_CURRENT); + if(-1 == ret) { + throw IO::IOError(errno, "ioctl CDROM_GET_CAPABILITY failed.", P_SOURCEINFO); + } + + if(ret & CDC_CD_R) { + capability = static_cast<DriveCapability>(capability | CdRomDevice::CdRom); + } + if(ret & CDC_CD_RW) { + capability = static_cast<DriveCapability>(capability | CdRomDevice::CdRw); + } + if(ret & CDC_DVD) { + capability = static_cast<DriveCapability>(capability | DvdRom); + } + if(ret & CDC_DVD_R) { + capability = static_cast<DriveCapability>(capability | DvdR); + } + if(ret & CDC_DVD_RAM) { + capability = static_cast<DriveCapability>(capability | DvdRam); + } + + return capability; +} + CdRomDevice::DriveStatus CdRomDevice::driveStatus() throw(IO::IOError) { int ret = ::ioctl((int)handle(), CDROM_DRIVE_STATUS, CDSL_CURRENT); |