diff options
author | Markus Brueffer <markus@FreeBSD.org> | 2005-07-20 09:22:25 +0000 |
---|---|---|
committer | Markus Brueffer <markus@FreeBSD.org> | 2005-07-20 09:22:25 +0000 |
commit | 3177982cc5f4e1a7ac4d743dcc1c7e4ec45651f1 (patch) | |
tree | ab6f59aa4795a9a8baa55bc145bdf51d5789acdf /sysutils/k3b/files | |
parent | 63a29de3a73c4d45c041648948936121714328ae (diff) | |
download | ports-3177982cc5f4e1a7ac4d743dcc1c7e4ec45651f1.tar.gz ports-3177982cc5f4e1a7ac4d743dcc1c7e4ec45651f1.zip |
Notes
Diffstat (limited to 'sysutils/k3b/files')
15 files changed, 82 insertions, 706 deletions
diff --git a/sysutils/k3b/files/patch-libk3b-projects-datacd-k3bdatajob.cpp b/sysutils/k3b/files/patch-libk3b-projects-datacd-k3bdatajob.cpp new file mode 100644 index 000000000000..49d0c02af493 --- /dev/null +++ b/sysutils/k3b/files/patch-libk3b-projects-datacd-k3bdatajob.cpp @@ -0,0 +1,12 @@ +--- libk3b/projects/datacd/k3bdatajob.cpp.orig Tue Jul 12 14:56:13 2005 ++++ libk3b/projects/datacd/k3bdatajob.cpp Tue Jul 12 14:56:35 2005 +@@ -98,8 +98,8 @@ + + K3bDataJob::~K3bDataJob() + { +- delete d; + delete d->tocFile; ++ delete d; + } + + diff --git a/sysutils/k3b/files/patch-libk3bdevice-k3bscsicommand_bsd.cpp b/sysutils/k3b/files/patch-libk3bdevice-k3bscsicommand_bsd.cpp new file mode 100644 index 000000000000..eca2d20ae58a --- /dev/null +++ b/sysutils/k3b/files/patch-libk3bdevice-k3bscsicommand_bsd.cpp @@ -0,0 +1,48 @@ +--- libk3bdevice/k3bscsicommand_bsd.cpp.orig Fri Jul 1 15:30:50 2005 ++++ libk3bdevice/k3bscsicommand_bsd.cpp Sun Jul 17 15:07:58 2005 +@@ -51,10 +51,6 @@ + void K3bDevice::ScsiCommand::clear() + { + memset (&d->ccb,0,sizeof(ccb)); +- if (!m_device || !m_device->handle()) return; +- d->ccb.ccb_h.path_id = m_device->handle()->path_id; +- d->ccb.ccb_h.target_id = m_device->handle()->target_id; +- d->ccb.ccb_h.target_lun = m_device->handle()->target_lun; + } + + +@@ -76,8 +72,11 @@ + needToClose = true; + } + +- if( !m_device->open( dir == TR_DIR_WRITE ) ) ++ if( !m_device->open( true ) ) + return -1; ++ d->ccb.ccb_h.path_id = m_device->handle()->path_id; ++ d->ccb.ccb_h.target_id = m_device->handle()->target_id; ++ d->ccb.ccb_h.target_lun = m_device->handle()->target_lun; + + kdDebug() << "(K3bDevice::ScsiCommand) transport command " << QString::number((int)d->ccb.csio.cdb_io.cdb_bytes[0], 16) << ", length: " << (int)d->ccb.csio.cdb_len << endl; + int ret=0; +@@ -86,7 +85,7 @@ + direction |= CAM_DIR_NONE; + else + direction |= (dir & TR_DIR_READ)?CAM_DIR_IN : CAM_DIR_OUT; +- cam_fill_csio (&(d->ccb.csio), 1, 0 /* NULL */, direction | CAM_DEV_QFRZDIS, MSG_SIMPLE_Q_TAG, (u_int8_t *)data, len, sizeof(d->ccb.csio.sense_data), d->ccb.csio.cdb_len, 30*1000); ++ cam_fill_csio (&(d->ccb.csio), 1, 0 /* NULL */, direction, MSG_SIMPLE_Q_TAG, (u_int8_t *)data, len, sizeof(d->ccb.csio.sense_data), d->ccb.csio.cdb_len, 30*1000); + unsigned char * sense = (unsigned char *)&d->ccb.csio.sense_data; + if ((ret = cam_send_ccb(m_device->handle(), &d->ccb)) < 0) + { +@@ -101,10 +100,11 @@ + if( needToClose ) + m_device->close(); + +- return( ((senset->error_code & SSD_ERRCODE)<<24) & 0xF000 | ++ int result = (((senset->error_code & SSD_ERRCODE)<<24) & 0xF000 | + ((senset->flags & SSD_KEY)<<16) & 0x0F00 | + (senset->add_sense_code<<8) & 0x00F0 | + (senset->add_sense_code_qual) & 0x000F ); ++ return result?result:ret; + } + if ((d->ccb.ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP) { + if( needToClose ) diff --git a/sysutils/k3b/files/patch-src-Makefile.in b/sysutils/k3b/files/patch-src-Makefile.in deleted file mode 100644 index 8d4fb7e34271..000000000000 --- a/sysutils/k3b/files/patch-src-Makefile.in +++ /dev/null @@ -1,11 +0,0 @@ ---- src/Makefile.in.orig Wed Mar 16 10:43:55 2005 -+++ src/Makefile.in Wed Mar 23 19:44:55 2005 -@@ -299,7 +299,7 @@ - #>+ 1 - k3b_SOURCES=k3bwelcomewidget.cpp k3bapplication.cpp k3bdiroperator.cpp kdndfileview.cpp k3bfiletreeview.cpp k3bcddbmultientriesdialog.cpp k3baudioplayer.cpp k3bprojecttabbar.cpp k3bprojecttabwidget.cpp k3bsplash.cpp k3bblankingdialog.cpp k3bfileview.cpp k3bdirview.cpp k3btoolbox.cpp k3b.cpp main.cpp k3bstatusbarmanager.cpp k3bfiletreecombobox.cpp k3breadcdreader.cpp k3binterface.cpp k3bprojectinterface.cpp k3bsystemproblemdialog.cpp k3bcdcontentsview.cpp k3bwriterspeedverificationdialog.cpp k3bdatatrackreader.cpp k3binterface_skel.cpp k3bprojectinterface_skel.cpp - --k3b_LDADD = ./cdinfo/libcdinfo.la ./option/liboption.la ./rip/librip.la ./cdcopy/libcdcopy.la ./dvdcopy/libdvdcopy.la ./videoEncoding/libvideoEncoding.la ./plugin/libk3bplugin.la $(ARTS_LIBS) -lkio -lkparts ./device/libk3bdevice.la ./core/libk3bcore.la ./tools/libk3btools.la ./projects/libk3bproject.la ./images/libimagewriting.la -+k3b_LDADD = ./cdinfo/libcdinfo.la ./option/liboption.la ./rip/librip.la ./cdcopy/libcdcopy.la ./dvdcopy/libdvdcopy.la ./videoEncoding/libvideoEncoding.la ./plugin/libk3bplugin.la $(ARTS_LIBS) -lkio -lkparts -lcam ./device/libk3bdevice.la ./core/libk3bcore.la ./tools/libk3btools.la ./projects/libk3bproject.la ./images/libimagewriting.la - - SUBDIRS = device core tools plugin projects cddb cdinfo option rip cdcopy images dvdcopy videoEncoding pics icons konqi mimetypes tests audiodecoding audioencoding sounds $(K3BSETUP1_BUILD) - diff --git a/sysutils/k3b/files/patch-src-device-k3bdevice.cpp b/sysutils/k3b/files/patch-src-device-k3bdevice.cpp deleted file mode 100644 index 3d8440b83cc0..000000000000 --- a/sysutils/k3b/files/patch-src-device-k3bdevice.cpp +++ /dev/null @@ -1,90 +0,0 @@ ---- src/device/k3bdevice.cpp.orig Thu Feb 24 09:15:57 2005 -+++ src/device/k3bdevice.cpp Wed Mar 23 19:44:55 2005 -@@ -57,6 +57,13 @@ - - #endif // Q_OS_LINUX - -+#ifdef __FreeBSD__ -+#define __BYTE_ORDER BYTE_ORDER -+#define __BIG_ENDIAN BIG_ENDIAN -+#define CD_FRAMESIZE_RAW 2352 -+#define nearbyint(x) rint(x) -+#endif -+ - - #ifdef HAVE_RESMGR - extern "C" { -@@ -188,8 +195,10 @@ - - d->supportedProfiles = 0; - -+#ifndef __FreeBSD__ - if(open() < 0) - return false; -+#endif - - - // -@@ -228,6 +237,7 @@ - unsigned char header[2048]; - ::memset( header, 0, 2048 ); - -+ cmd.clear(); - cmd[0] = MMC::GET_CONFIGURATION; - cmd[8] = 8; - if( cmd.transport( TR_DIR_READ, header, 8 ) ) { -@@ -820,6 +830,24 @@ - m_bufferSize = 1024; - d->burnfree = false; - } -+ else if( vendor().startsWith("TEAC") ) { -+ if( description().startsWith("CD-R56S") ) { -+ m_writeModes |= TAO; -+ d->deviceType |= CDROM|CDR; -+ m_maxWriteSpeed = 6; -+ m_maxReadSpeed = 24; -+ m_bufferSize = 1302; -+ d->burnfree = false; -+ } -+ if( description().startsWith("CD-R58S") ) { -+ m_writeModes |= TAO; -+ d->deviceType |= CDROM|CDR; -+ m_maxWriteSpeed = 8; -+ m_maxReadSpeed = 24; -+ m_bufferSize = 4096; -+ d->burnfree = false; -+ } -+ } - else if( vendor().startsWith("MATSHITA") ) { - if( description().startsWith("CD-R CW-7501") ) { - m_writeModes = TAO|SAO; -@@ -2673,10 +2701,12 @@ - { - // if the device is already opened we do not close it - // to allow fast multible method calls in a row -+#ifndef __FreeBSD__ - bool needToClose = !isOpen(); - - if (open() < 0) - return; -+#endif - - // header size is 8 - unsigned char* buffer = 0; -@@ -2762,13 +2792,16 @@ - delete [] buffer; - } - -+#ifndef __FreeBSD__ - if( needToClose ) - close(); -+#endif - } - - - bool K3bCdDevice::CdDevice::readTocPmaAtip( unsigned char** data, int& dataLen, int format, bool time, int track ) const - { -+ kdDebug() << "(K3bCdDevice::CdDevice) readTocPmaAtip started, format:" << format << ", time: " << time << ", track: " << track << endl; - unsigned char header[2048]; - ::memset( header, 0, 2048 ); - diff --git a/sysutils/k3b/files/patch-src-device-k3bdevice.h b/sysutils/k3b/files/patch-src-device-k3bdevice.h deleted file mode 100644 index 9ac0e33764ed..000000000000 --- a/sysutils/k3b/files/patch-src-device-k3bdevice.h +++ /dev/null @@ -1,13 +0,0 @@ ---- src/device/k3bdevice.h.orig Sun Nov 28 13:27:24 2004 -+++ src/device/k3bdevice.h Sun Jan 2 09:30:08 2005 -@@ -690,6 +690,10 @@ - - class Private; - Private* d; -+#ifdef __FreeBSD__ -+ QString m_passDevice; -+ friend class ScsiCommand; -+#endif - friend class DeviceManager; - }; - diff --git a/sysutils/k3b/files/patch-src-device-k3bdevicemanager.cpp b/sysutils/k3b/files/patch-src-device-k3bdevicemanager.cpp deleted file mode 100644 index 60cf19176b49..000000000000 --- a/sysutils/k3b/files/patch-src-device-k3bdevicemanager.cpp +++ /dev/null @@ -1,277 +0,0 @@ ---- src/device/k3bdevicemanager.cpp.orig Sun Nov 28 13:27:24 2004 -+++ src/device/k3bdevicemanager.cpp Wed Mar 23 19:45:36 2005 -@@ -49,6 +49,12 @@ - #include <sys/stat.h> - #include <sys/ioctl.h> - -+#ifdef __FreeBSD__ -+#include <osreldate.h> -+#include <ktempfile.h> -+#include <sys/param.h> -+#endif -+ - - #ifdef Q_OS_LINUX - -@@ -196,6 +202,13 @@ - { - m_foundDevices = 0; - -+#ifdef __FreeBSD__ -+// What k3b does here is the following: it takes a list of device point, which are good candidates for cd drives -+// and asks their properties. If they are indeed cd drives, they are added to a device list. This does not work -+// on FreeBSD (no corresponding ioctls). Here cdrecord is asked for a list of scsi device, which work as cd -+// drives. The device points of those devices are added to the device list. -+ bsd_scan_devices(); -+#else - QFile info("/proc/sys/dev/cdrom/info"); - QString line,devstring; - info.open(IO_ReadOnly); -@@ -269,6 +282,7 @@ - // FIXME: also scan /dev/scsi/hostX.... for devfs without symlinks - #endif - -+#endif - scanFstab(); - - return m_foundDevices; -@@ -412,6 +426,7 @@ - bool K3bCdDevice::DeviceManager::testForCdrom(const QString& devicename) - { - bool ret = false; -+#ifndef __FreeBSD__ - int cdromfd = K3bCdDevice::openDevice( devicename.ascii() ); - if (cdromfd < 0) { - kdDebug() << "could not open device " << devicename << " (" << strerror(errno) << ")" << endl; -@@ -452,11 +467,36 @@ - } - - ::close( cdromfd ); -+#endif - return ret; - } - - K3bDevice* K3bCdDevice::DeviceManager::addDevice( const QString& devicename ) - { -+#ifdef __FreeBSD__ -+// this piece of code extracts some device parameter, like scsi or ide device. The whole process -+// fails on FreeBSD. Here the device name is simply looked up in a list of devices found by a -+// call of cdrecord --scanbus. -+ K3bDevice* device = findDevice(devicename); -+ if (device) -+ return 0; -+ // resolve all symlinks -+ QString resolved = resolveSymLink( devicename ); -+ kdDebug() << "(K3bDeviceManager) " << devicename << " resolved to " << resolved << endl; -+ if( K3bDevice* oldDev = findDevice( resolved ) ) -+ { -+ kdDebug() << "(K3bDeviceManager) dev already found" << endl; -+ oldDev->addDeviceNode( resolved ); -+ return 0; -+ } -+ device = new K3bDevice(resolved.latin1()); -+ return addDevice( device ); -+} -+ -+K3bDevice* K3bCdDevice::DeviceManager::addDevice( CdDevice* device ) -+{ -+ const QString devicename = device->devicename(); -+#else - K3bDevice* device = 0; - - // resolve all symlinks -@@ -488,6 +528,7 @@ - device->m_target = target; - device->m_lun = lun; - } -+#endif - - if( !device->init() ) { - kdDebug() << "Could not initialize device " << devicename << endl; -@@ -563,9 +604,20 @@ - - if( K3bDevice* dev = findDevice( resolveSymLink(md) ) ) - { -+#ifndef __FreeBSD__ - kdDebug() << "(K3bDeviceManager) found device for " << md << ": " << resolveSymLink(md) << endl; - if( dev->mountDevice().isEmpty() ) { - dev->setMountPoint( mountInfo->fs_file ); -+#else -+ kdDebug() << "(K3bDeviceManager) found device for " << md << " (" << resolveSymLink(md) << "): " << mountInfo->fs_file << endl; -+// Several mount points for one device might exist. If more than one are found, the one with -+// user permission should have a higher priority. -+ struct stat filestat; -+ if( dev->mountDevice().isEmpty() || (mountInfo->fs_file && !stat(mountInfo->fs_file, &filestat) && filestat.st_uid == geteuid())) -+ { -+ kdDebug() << "(K3bDeviceManager) setting mount point for device " << md << ": " << mountInfo->fs_file << endl; -+ dev->setMountPoint( mountInfo->fs_file ); -+#endif - dev->setMountDevice( md ); - dev->m_supermount = supermount; - } -@@ -574,6 +626,8 @@ - { - // compare bus, id, lun since the same device can for example be - // determined as /dev/srX or /dev/scdX -+#ifndef __FreeBSD__ -+// On FreeBSD scsi parameters can not be extracted from a file handle - int bus = -1, id = -1, lun = -1; - if( determineBusIdLun( mountInfo->fs_spec, bus, id, lun ) ) { - if( K3bDevice* dev = findDevice( bus, id, lun ) ) { -@@ -584,6 +638,17 @@ - } - } - } -+#else -+// Therefore they are looked up in the device list. -+ kdDebug() << "(K3bDeviceManager) device: " << mountInfo->fs_spec << endl; -+ if( K3bDevice* dev = findDevice( mountInfo->fs_spec ) ) { -+ kdDebug() << " found! " << endl; -+ if( dev->mountDevice().isEmpty() ) { -+ dev->setMountPoint( mountInfo->fs_file ); -+ dev->setMountDevice( md ); -+ } -+ } -+#endif - - - } -@@ -659,5 +724,138 @@ - return QString::fromLatin1( resolved ); - } - -+ -+#ifdef __FreeBSD__ -+#include <cam/cam.h> -+#include <cam/scsi/scsi_pass.h> -+#include <camlib.h> -+void K3bCdDevice::DeviceManager::bsd_scan_devices() -+{ -+ union ccb ccb; -+ int fd, i; -+ int need_close = 0; -+ int skip_device = 0; -+ int bus, target, lun; -+ QString dev1 = "", dev2 = ""; -+ -+ if ((fd = open(XPT_DEVICE, O_RDWR)) == -1) -+ { -+ kdDebug() << "couldn't open %s " << XPT_DEVICE << endl; -+ return; -+ } -+ -+ memset(&ccb, 0, sizeof(ccb)); -+ -+ ccb.ccb_h.func_code = XPT_DEV_MATCH; -+ char buffer[100*sizeof(struct dev_match_result)]; -+ ccb.cdm.match_buf_len = 100*sizeof(struct dev_match_result); -+ ccb.cdm.matches = (struct dev_match_result *)buffer; -+ ccb.cdm.num_matches = 0; -+ ccb.cdm.num_patterns = 0; -+ ccb.cdm.pattern_buf_len = 0; -+ do { -+ if (ioctl(fd, CAMIOCOMMAND, &ccb) == -1) { -+ kdDebug() << "(bsd_scan_devices) error sending CAMIOCOMMAND ioctl: " << errno << endl; -+ break; -+ } -+ -+ if ((ccb.ccb_h.status != CAM_REQ_CMP) -+ || ((ccb.cdm.status != CAM_DEV_MATCH_LAST) && (ccb.cdm.status != CAM_DEV_MATCH_MORE))) { -+ kdDebug() << "(bsd_scan_devices) got CAM error " << ccb.ccb_h.status << ", CDM error %d" << ccb.cdm.status << endl; -+ break; -+ } -+ kdDebug() << "(bsd_scan_devices) number of matches " << (int)ccb.cdm.num_matches << endl; -+ for (int i = 0; i < (int)ccb.cdm.num_matches; i++) { -+ switch (ccb.cdm.matches[i].type) { -+ case DEV_MATCH_DEVICE: { -+ struct device_match_result *dev_result = &ccb.cdm.matches[i].result.device_result; -+ -+ if (dev_result->flags & DEV_RESULT_UNCONFIGURED) -+ { -+ skip_device = 1; -+ break; -+ } -+ else -+ skip_device = 0; -+ if (need_close) -+ { -+ QString pass = dev1; -+ QString dev = "/dev/" + dev2; -+ if (dev2.startsWith("pass")) -+ { -+ pass = dev2; -+ dev = "/dev/" + dev1; -+ } -+#if __FreeBSD_version < 500100 -+ dev += "c"; -+#endif -+ if (dev1 != "" && dev2 != "" && dev.startsWith("/dev/cd")) -+ { -+ K3bDevice* device = new K3bDevice(dev.latin1()); -+ device->m_bus = bus; -+ device->m_target = target; -+ device->m_lun = lun; -+ device->m_passDevice = "/dev/" + pass; -+ kdDebug() << "(bsd_scan_devices) add device " << dev << ":" << bus << ":" << target << ":" << lun << endl; -+ addDevice(device); -+ } -+ need_close = 0; -+ dev1=""; -+ dev2=""; -+ } -+ bus = dev_result->path_id; -+ target = dev_result->target_id; -+ lun = dev_result->target_lun; -+ -+ need_close = 1; -+ -+ break; -+ } -+ case DEV_MATCH_PERIPH: { -+ struct periph_match_result *periph_result = &ccb.cdm.matches[i].result.periph_result; -+ -+ if (skip_device != 0) -+ break; -+ -+ if (need_close > 1) -+ dev1 = periph_result->periph_name + QString::number(periph_result->unit_number); -+ else -+ dev2 = periph_result->periph_name + QString::number(periph_result->unit_number); -+ -+ need_close++; -+ break; -+ } -+ } -+ } -+ -+ } while ((ccb.ccb_h.status == CAM_REQ_CMP) -+ && (ccb.cdm.status == CAM_DEV_MATCH_MORE)); -+ -+ if (need_close) -+ { -+ QString pass = dev1; -+ QString dev = "/dev/" + dev2; -+ if (dev2.startsWith("pass")) -+ { -+ pass = dev2; -+ dev = "/dev/" + dev1; -+ } -+#if __FreeBSD_version < 500100 -+ dev += "c"; -+#endif -+ if (dev1 != "" && dev2 != "" && dev.startsWith("/dev/cd")) -+ { -+ K3bDevice* device = new K3bDevice(dev.latin1()); -+ device->m_bus = bus; -+ device->m_target = target; -+ device->m_lun = lun; -+ device->m_passDevice = "/dev/" + pass; -+ kdDebug() << "(bsd_scan_devices) add device " << dev << ":" << bus << ":" << target << ":" << lun << endl; -+ addDevice(device); -+ } -+ } -+ close(fd); -+} -+#endif - - #include "k3bdevicemanager.moc" diff --git a/sysutils/k3b/files/patch-src-device-k3bdevicemanager.h b/sysutils/k3b/files/patch-src-device-k3bdevicemanager.h deleted file mode 100644 index 7e776226bb86..000000000000 --- a/sysutils/k3b/files/patch-src-device-k3bdevicemanager.h +++ /dev/null @@ -1,13 +0,0 @@ ---- src/device/k3bdevicemanager.h.orig Wed Jan 21 11:20:11 2004 -+++ src/device/k3bdevicemanager.h Sun Jan 2 09:30:08 2005 -@@ -112,6 +112,10 @@ - - class Private; - Private* d; -+#ifdef __FreeBSD__ -+ void bsd_scan_devices(); -+ CdDevice* addDevice( CdDevice* ); -+#endif - }; - } - diff --git a/sysutils/k3b/files/patch-src-device-k3bscsicommand.cpp b/sysutils/k3b/files/patch-src-device-k3bscsicommand.cpp deleted file mode 100644 index 5a5f1a442391..000000000000 --- a/sysutils/k3b/files/patch-src-device-k3bscsicommand.cpp +++ /dev/null @@ -1,179 +0,0 @@ ---- src/device/k3bscsicommand.cpp.orig Sun Aug 15 11:58:23 2004 -+++ src/device/k3bscsicommand.cpp Sun Jan 2 09:30:08 2005 -@@ -58,13 +58,14 @@ - - - --K3bCdDevice::ScsiCommand::ScsiCommand( int fd ) -- : m_fd(fd), -- m_device(0) --{ -- clear(); --} -+//K3bCdDevice::ScsiCommand::ScsiCommand( int fd ) -+// : m_fd(fd), -+// m_device(0) -+//{ -+// clear(); -+//} - -+#ifndef __FreeBSD__ - - K3bCdDevice::ScsiCommand::ScsiCommand( const K3bCdDevice::CdDevice* dev ) - : m_device(dev) -@@ -141,6 +142,155 @@ - return 0; - } - -+#else -+ -+#include <fcntl.h> -+#include <cam/scsi/scsi_message.h> -+#include <cam/scsi/scsi_pass.h> -+#include <errno.h> -+#define ERRCODE(s) ((((s)[2]&0x0F)<<16)|((s)[12]<<8)|((s)[13])) -+#define EMEDIUMTYPE EINVAL -+#define ENOMEDIUM ENODEV -+#define CREAM_ON_ERRNO(s) do { \ -+ switch ((s)[12]) \ -+ { case 0x04: errno=EAGAIN; break; \ -+ case 0x20: errno=ENODEV; break; \ -+ case 0x21: if ((s)[13]==0) errno=ENOSPC; \ -+ else errno=EINVAL; \ -+ break; \ -+ case 0x30: errno=EMEDIUMTYPE; break; \ -+ case 0x3A: errno=ENOMEDIUM; break; \ -+ } \ -+} while(0) -+#include <unistd.h> -+#include <kdebug.h> -+ -+#include <string.h> -+#include <sys/ioctl.h> -+ -+K3bCdDevice::ScsiCommand::ScsiCommand( const K3bCdDevice::CdDevice* dev ) -+ : closecam(true), m_device(dev) -+{ -+ cam = cam_open_pass (m_device->m_passDevice.latin1(),O_RDWR,NULL); -+ kdDebug() << "(K3bCdDevice::ScsiCommand) open device " << m_device->m_passDevice << ((cam)?" succeeded.":" failed.") << endl; -+ clear(); -+} -+ -+K3bCdDevice::ScsiCommand::ScsiCommand( const K3bCdDevice::CdDevice* dev, struct cam_device * c) -+ : closecam(false), cam(c), m_device(dev) -+{ -+ clear(); -+} -+ -+K3bCdDevice::ScsiCommand::~ScsiCommand() -+{ -+ if(cam && closecam) -+ { -+ cam_close_device(cam); -+ kdDebug() << "(K3bCdDevice::ScsiCommand) device " << m_device->m_passDevice << " closed." << endl; -+ } -+} -+ -+ -+void K3bCdDevice::ScsiCommand::clear() -+{ -+ memset (&ccb,0,sizeof(ccb)); -+ if (!cam) -+ return; -+ ccb.ccb_h.path_id = cam->path_id; -+ ccb.ccb_h.target_id = cam->target_id; -+ ccb.ccb_h.target_lun = cam->target_lun; -+} -+ -+unsigned char& K3bCdDevice::ScsiCommand::operator[]( size_t i ) -+{ -+ ccb.csio.cdb_len = i+1; -+ return ccb.csio.cdb_io.cdb_bytes[i]; -+} -+ -+ -+int K3bCdDevice::ScsiCommand::transport( TransportDirection dir, -+ void* data, -+ size_t len ) -+{ -+ if (!cam) -+ return -1; -+ kdDebug() << "(K3bCdDevice::ScsiCommand) transport command " << QString::number((int)ccb.csio.cdb_io.cdb_bytes[0], 16) << ", length: " << (int)ccb.csio.cdb_len << endl; -+ int ret=0; -+ unsigned char command = ccb.csio.cdb_io.cdb_bytes[0]; -+ int direction = CAM_DEV_QFRZDIS; -+ if (!len) -+ direction |= CAM_DIR_NONE; -+ else -+ direction |= (dir & TR_DIR_READ)?CAM_DIR_IN : CAM_DIR_OUT; -+ cam_fill_csio (&(ccb.csio), 1, NULL, direction | CAM_DEV_QFRZDIS, MSG_SIMPLE_Q_TAG, (u_int8_t *)data, len, sizeof(ccb.csio.sense_data), ccb.csio.cdb_len, 30*1000); -+ unsigned char * sense = (unsigned char *)&ccb.csio.sense_data; -+ if ((ret = cam_send_ccb(cam, &ccb)) < 0) -+ { -+ kdDebug() << "(K3bCdDevice::ScsiCommand) transport failed: " << ret << endl; -+ goto dump_error; -+ } -+ if ((ccb.ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP) -+ return 0; -+ -+ errno = EIO; -+ // FreeBSD 5-CURRENT since 2003-08-24, including 5.2 fails to -+ // pull sense data automatically, at least for ATAPI transport, -+ // so I reach for it myself... -+ if ((ccb.csio.scsi_status==SCSI_STATUS_CHECK_COND) && -+ !(ccb.ccb_h.status&CAM_AUTOSNS_VALID)) -+ { -+ u_int8_t _sense[18]; -+ u_int32_t resid=ccb.csio.resid; -+ -+ memset(_sense,0,sizeof(_sense)); -+ -+ operator[](0) = 0x03; // REQUEST SENSE -+ ccb.csio.cdb_io.cdb_bytes[4] = sizeof(_sense); -+ ccb.csio.cdb_len = 6; -+ ccb.csio.ccb_h.flags |= CAM_DIR_IN|CAM_DIS_AUTOSENSE; -+ ccb.csio.data_ptr = _sense; -+ ccb.csio.dxfer_len = sizeof(_sense); -+ ccb.csio.sense_len = 0; -+ ret = cam_send_ccb(cam, &ccb); -+ -+ ccb.csio.resid = resid; -+ if (ret<0) -+ { -+ kdDebug() << "(K3bCdDevice::ScsiCommand) transport failed (2): " << ret << endl; -+ ret = -1; -+ goto dump_error; -+ } -+ if ((ccb.ccb_h.status&CAM_STATUS_MASK) != CAM_REQ_CMP) -+ { -+ kdDebug() << "(K3bCdDevice::ScsiCommand) transport failed (3): " << ret << endl; -+ errno=EIO,-1; -+ ret = -1; -+ goto dump_error; -+ } -+ -+ memcpy(sense,_sense,sizeof(_sense)); -+ } -+ -+ ret = ERRCODE(sense); -+ kdDebug() << "(K3bCdDevice::ScsiCommand) transport failed (4): " << ret << endl; -+ if (ret == 0) -+ ret = -1; -+ else -+ CREAM_ON_ERRNO(((unsigned char *)&ccb.csio.sense_data)); -+dump_error: -+ kdDebug() << "(K3bCdDevice::ScsiCommand) failed: " << endl -+ << " command: " << QString("%1 (%2)") -+ .arg( MMC::commandString( ccb.csio.cdb_io.cdb_bytes[0] ) ) -+ .arg( QString::number(ccb.csio.cdb_io.cdb_bytes[0], 16) ) << endl -+ << " errorcode: " << QString::number(((struct scsi_sense_data *)sense)->error_code & SSD_ERRCODE, 16) << endl -+ << " sense key: " << senseKeyToString(((struct scsi_sense_data *)sense)->flags & SSD_KEY) << endl -+ << " asc: " << QString::number(((struct scsi_sense_data *)sense)->add_sense_code, 16) << endl -+ << " ascq: " << QString::number(((struct scsi_sense_data *)sense)->add_sense_code_qual, 16) << endl; -+ -+ return ret; -+} -+#endif - - QString K3bCdDevice::MMC::commandString( const unsigned char& command ) - { diff --git a/sysutils/k3b/files/patch-src-device-k3bscsicommand.h b/sysutils/k3b/files/patch-src-device-k3bscsicommand.h deleted file mode 100644 index 3c4a17c90648..000000000000 --- a/sysutils/k3b/files/patch-src-device-k3bscsicommand.h +++ /dev/null @@ -1,57 +0,0 @@ ---- src/device/k3bscsicommand.h.orig Wed Jan 21 11:20:11 2004 -+++ src/device/k3bscsicommand.h Sun Jan 2 09:30:08 2005 -@@ -17,9 +17,27 @@ - #define _K3B_SCSI_COMMAND_H_ - - #include <sys/types.h> -+#ifndef __FreeBSD__ - #undef __STRICT_ANSI__ - #include <linux/cdrom.h> - #define __STRICT_ANSI__ -+#else -+#include <sys/types.h> -+#include <stdio.h> -+#include <camlib.h> -+#undef INQUIRY -+#undef READ_10 -+#undef READ_12 -+#undef READ_BUFFER -+#undef READ_CAPACITY -+#undef REQUEST_SENSE -+#undef START_STOP_UNIT -+#undef SYNCHRONIZE_CACHE -+#undef TEST_UNIT_READY -+#undef WRITE_10 -+#undef WRITE_12 -+#undef WRITE_BUFFER -+#endif - - - #include <qstring.h> -@@ -96,7 +114,7 @@ - class ScsiCommand - { - public: -- ScsiCommand( int fd ); -+// ScsiCommand( int fd ); - ScsiCommand( const CdDevice* ); - ~ScsiCommand(); - -@@ -109,10 +127,16 @@ - size_t len = 0 ); - - private: -+#ifndef __FreeBSD__ - struct cdrom_generic_command m_cmd; - struct request_sense m_sense; -- -+#else -+ ScsiCommand( const CdDevice* , struct cam_device *); -+ bool closecam; -+ struct cam_device *cam; -+ union ccb ccb; - int m_fd; -+#endif - const CdDevice* m_device; - bool m_needToCloseDevice; - }; diff --git a/sysutils/k3b/files/patch-src-rip-k3baudioprojectconvertingthread.cpp b/sysutils/k3b/files/patch-src-rip-k3baudioprojectconvertingthread.cpp new file mode 100644 index 000000000000..78f068697d3c --- /dev/null +++ b/sysutils/k3b/files/patch-src-rip-k3baudioprojectconvertingthread.cpp @@ -0,0 +1,11 @@ +--- src/rip/k3baudioprojectconvertingthread.cpp.orig Sun Jul 10 00:18:23 2005 ++++ src/rip/k3baudioprojectconvertingthread.cpp Sun Jul 10 00:18:50 2005 +@@ -373,7 +373,7 @@ + + // we always use a relative filename here + QString imageFile = m_tracks[0].second.section( '/', -1 ); +- cueWriter.setImage( imageFile, ( d->fileType.isEmpty() ? "WAVE" : d->fileType ) ); ++ cueWriter.setImage( imageFile, ( d->fileType.isEmpty() ? QString("WAVE") : d->fileType ) ); + + // use the same base name as the image file + QString cueFile = m_tracks[0].second; diff --git a/sysutils/k3b/files/patch-src-rip-k3baudioripthread.cpp b/sysutils/k3b/files/patch-src-rip-k3baudioripthread.cpp new file mode 100644 index 000000000000..badd900011cd --- /dev/null +++ b/sysutils/k3b/files/patch-src-rip-k3baudioripthread.cpp @@ -0,0 +1,11 @@ +--- src/rip/k3baudioripthread.cpp.orig Sun Jul 10 00:14:21 2005 ++++ src/rip/k3baudioripthread.cpp Sun Jul 10 00:15:00 2005 +@@ -536,7 +536,7 @@ + + // we always use a relative filename here + QString imageFile = m_tracks[0].second.section( '/', -1 ); +- cueWriter.setImage( imageFile, ( d->fileType.isEmpty() ? "WAVE" : d->fileType ) ); ++ cueWriter.setImage( imageFile, ( d->fileType.isEmpty() ? QString("WAVE") : d->fileType ) ); + + // use the same base name as the image file + QString cueFile = m_tracks[0].second; diff --git a/sysutils/k3b/files/patch-src-rip-k3bdvdrippingprocess.cpp b/sysutils/k3b/files/patch-src-rip-k3bdvdrippingprocess.cpp deleted file mode 100644 index ce6fbcb63c4a..000000000000 --- a/sysutils/k3b/files/patch-src-rip-k3bdvdrippingprocess.cpp +++ /dev/null @@ -1,16 +0,0 @@ ---- src/rip/k3bdvdrippingprocess.cpp.orig Wed Jun 2 11:31:41 2004 -+++ src/rip/k3bdvdrippingprocess.cpp Sun Jan 2 09:30:08 2005 -@@ -285,10 +285,13 @@ - void K3bDvdRippingProcess::slotPreProcessingDvd() { - QString video; - QDir video_ts( m_mountPoint + "/VIDEO_TS"); -+#ifndef FreeBSD -+// on FreeBSD both /VIDEO_TS and /video_ts exist on dvd devices ?!? - if( video_ts.exists() ) { - m_udfMount = true; - kdDebug() << "(K3bDvdRippingProcess) <" << m_mountPoint << "> has UDF filesystem." << endl; - } -+#endif - video_ts.setPath( m_mountPoint + "/video_ts"); - if( !video_ts.exists() && !m_udfMount){ - m_preProcessingFailed = true; diff --git a/sysutils/k3b/files/patch-src-rip-k3bmovieview.cpp b/sysutils/k3b/files/patch-src-rip-k3bmovieview.cpp deleted file mode 100644 index 915d1ae51a1a..000000000000 --- a/sysutils/k3b/files/patch-src-rip-k3bmovieview.cpp +++ /dev/null @@ -1,14 +0,0 @@ ---- src/rip/k3bmovieview.cpp.orig Fri Feb 6 12:08:51 2004 -+++ src/rip/k3bmovieview.cpp Sun Jan 2 09:30:08 2005 -@@ -223,8 +223,11 @@ - } - - QWidget::show(); -+ if (longestTitle) -+ { - longestTitle->parent()->setOpen( true ); - m_listView->setSelected( longestTitle, true ); -+ } - } else { - // error during parsing - emit notSupportedDisc( m_device->devicename() ); diff --git a/sysutils/k3b/files/patch-src-rip-k3btcwrapper.cpp b/sysutils/k3b/files/patch-src-rip-k3btcwrapper.cpp deleted file mode 100644 index 38024980ea3d..000000000000 --- a/sysutils/k3b/files/patch-src-rip-k3btcwrapper.cpp +++ /dev/null @@ -1,24 +0,0 @@ ---- src/rip/k3btcwrapper.cpp.orig Wed Jan 21 11:20:20 2004 -+++ src/rip/k3btcwrapper.cpp Sun Jan 2 09:30:08 2005 -@@ -65,7 +65,12 @@ - //K3bProcess *p = new K3bProcess(); - emit tcprobeTitleParsed( m_currentTitle ); - -+#ifndef __FreeBSD__ - *p << bin->path << "-i" << m_device->blockDeviceName() << "-T" << QString::number(m_currentTitle); -+#else -+ kdDebug() << "(K3bTcWrapper) executing: " << bin->path << " -i " << m_device->mountPoint() << " -T " << QString::number(m_currentTitle) << endl; -+ *p << bin->path << "-i" << m_device->mountPoint() << "-T" << QString::number(m_currentTitle); -+#endif - //p->setSplitStdout( true ); - connect( p, SIGNAL(receivedStderr(KProcess*, char*, int)), this, SLOT(slotParseTcprobeError(KProcess*, char*, int)) ); - connect( p, SIGNAL(receivedStdout(KProcess*, char*, int)), this, SLOT(slotParseTcprobeOutput(KProcess*, char*, int)) ); -@@ -77,7 +82,7 @@ - if( !p->start( KProcess::NotifyOnExit, KProcess::AllOutput ) ) { - // something went wrong when starting the program - // it "should" be the executable -- kdDebug() << "(K3bDirView) Error during checking drive for DVD." << endl; -+ kdDebug() << "(K3bTcWrapper) Error during checking drive for DVD." << endl; - } - } - diff --git a/sysutils/k3b/files/patch-src-rip-k3bvideocdrip.cpp b/sysutils/k3b/files/patch-src-rip-k3bvideocdrip.cpp deleted file mode 100644 index 6e9fe5ad3223..000000000000 --- a/sysutils/k3b/files/patch-src-rip-k3bvideocdrip.cpp +++ /dev/null @@ -1,12 +0,0 @@ ---- src/rip/k3bvideocdrip.cpp.orig Wed Jan 21 11:20:20 2004 -+++ src/rip/k3bvideocdrip.cpp Sun Jan 2 09:30:08 2005 -@@ -41,7 +41,8 @@ - m_ripsourceType( 0 ), - m_videooptions( options ), - m_canceled( false ), -- m_process( 0 ) -+ m_process( 0 ), -+ m_subPosition( 0 ) - {} - - |