Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 May 2004 07:35:27 +0200
From:      Heiner <h.eichmann@gmx.de>
To:        freebsd-ports-bugs@FreeBSD.org
Cc:        Mark Linimon <linimon@FreeBSD.org>
Subject:   Re: ports/67238: Port upgrade: sysutils/k3b to 0.11.9
Message-ID:  <200405270735.27560.h.eichmann@gmx.de>
In-Reply-To: <200405270519.i4R5JijV099060@freefall.freebsd.org>
References:  <200405270519.i4R5JijV099060@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--Boundary-00=_f4XtAvXt0H8jhz3
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Here is the diff.


Heiner

--Boundary-00=_f4XtAvXt0H8jhz3
Content-Type: text/x-diff;
  charset="iso-8859-1";
  name="diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="diff"

diff -Pru ../../sysutils/k3b/Makefile ./Makefile
--- ../../sysutils/k3b/Makefile	Mon Apr  5 05:30:23 2004
+++ ./Makefile	Wed May 26 23:31:20 2004
@@ -6,8 +6,7 @@
 #
 
 PORTNAME=	k3b
-PORTVERSION=	0.11.6
-PORTREVISION=	1
+PORTVERSION=	0.11.9
 CATEGORIES=	sysutils multimedia kde
 MASTER_SITES=	${MASTER_SITE_SOURCEFORGE}
 MASTER_SITE_SUBDIR=	${PORTNAME}
@@ -19,6 +18,7 @@
 		cdrdao:${PORTSDIR}/sysutils/cdrdao \
 		mkisofs:${PORTSDIR}/sysutils/mkisofs
 LIB_DEPENDS=	mad:${PORTSDIR}/audio/libmad \
+		id3tag:${PORTSDIR}/audio/libid3tag \
 		vorbis:${PORTSDIR}/audio/libvorbis \
 		FLAC:${PORTSDIR}/audio/flac
 
diff -Pru ../../sysutils/k3b/distinfo ./distinfo
--- ../../sysutils/k3b/distinfo	Thu Mar 18 18:41:38 2004
+++ ./distinfo	Mon May 24 23:33:33 2004
@@ -1 +1,2 @@
-MD5 (k3b-0.11.6.tar.bz2) = 0015b9ad457713425464dbdad6a15ab9
+MD5 (k3b-0.11.9.tar.bz2) = 88f46a5cfbda5fa89b4bfee504567df1
+SIZE (k3b-0.11.9.tar.bz2) = 3217141
\ No newline at end of file
diff -Pru ../../sysutils/k3b/files/patch-src-Makefile.in ./files/patch-src-Makefile.in
--- ../../sysutils/k3b/files/patch-src-Makefile.in	Thu Mar 18 18:41:39 2004
+++ ./files/patch-src-Makefile.in	Mon May 24 23:32:42 2004
@@ -1,6 +1,6 @@
---- src/Makefile.in.orig	Sun Feb 29 19:38:32 2004
-+++ src/Makefile.in	Mon Mar  8 15:40:08 2004
-@@ -286,7 +286,7 @@
+--- src/Makefile.in.orig	Mon Mar 29 20:04:54 2004
++++ src/Makefile.in	Tue May 11 22:57:03 2004
+@@ -272,7 +272,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
  
diff -Pru ../../sysutils/k3b/files/patch-src-core-k3bdefaultexternalprograms.cpp ./files/patch-src-core-k3bdefaultexternalprograms.cpp
--- ../../sysutils/k3b/files/patch-src-core-k3bdefaultexternalprograms.cpp	Thu Mar 18 18:41:40 2004
+++ ./files/patch-src-core-k3bdefaultexternalprograms.cpp	Mon May 24 23:32:41 2004
@@ -1,6 +1,6 @@
---- src/core/k3bdefaultexternalprograms.cpp.orig	Wed Jan 21 11:20:10 2004
-+++ src/core/k3bdefaultexternalprograms.cpp	Fri Feb 13 21:03:38 2004
-@@ -28,6 +28,7 @@
+--- src/core/k3bdefaultexternalprograms.cpp.orig	Mon Mar 22 18:13:21 2004
++++ src/core/k3bdefaultexternalprograms.cpp	Tue May 11 22:57:03 2004
+@@ -30,6 +30,7 @@
  #include <unistd.h>
  #include <sys/stat.h>
  #include <stdlib.h>
@@ -8,7 +8,7 @@
  
  
  
-@@ -89,7 +90,7 @@
+@@ -123,7 +124,7 @@
    K3bExternalBin* bin = 0;
  
    // probe version
@@ -17,7 +17,7 @@
    K3bProcess::OutputCollector out( &vp );
  
    vp << path << "-version";
-@@ -128,7 +129,7 @@
+@@ -162,7 +163,7 @@
  
  
    // probe features
@@ -26,7 +26,7 @@
    out.setProcess( &fp );
    fp << path << "-help";
    if( fp.start( KProcess::Block, KProcess::AllOutput ) ) {
-@@ -200,7 +201,7 @@
+@@ -236,7 +237,7 @@
    K3bExternalBin* bin = 0;
  
    // probe version
@@ -35,7 +35,7 @@
    K3bProcess::OutputCollector out( &vp );
  
    vp << path << "-version";
-@@ -229,7 +230,7 @@
+@@ -265,7 +266,7 @@
  
  
    // probe features
@@ -44,7 +44,7 @@
    out.setProcess( &fp );
    fp << path << "-help";
    if( fp.start( KProcess::Block, KProcess::AllOutput ) ) {
-@@ -285,7 +286,7 @@
+@@ -321,7 +322,7 @@
    K3bExternalBin* bin = 0;
  
    // probe version
@@ -53,7 +53,7 @@
    vp << path << "-version";
    K3bProcess::OutputCollector out( &vp );
    if( vp.start( KProcess::Block, KProcess::AllOutput ) ) {
-@@ -313,7 +314,7 @@
+@@ -349,7 +350,7 @@
  
  
    // probe features
@@ -62,7 +62,7 @@
    fp << path << "-help";
    out.setProcess( &fp );
    if( fp.start( KProcess::Block, KProcess::AllOutput ) ) {
-@@ -374,7 +375,7 @@
+@@ -410,7 +411,7 @@
    K3bExternalBin* bin = 0;
  
    // probe version
@@ -71,7 +71,7 @@
    vp << path << "-version";
    K3bProcess::OutputCollector out( &vp );
    if( vp.start( KProcess::Block, KProcess::AllOutput ) ) {
-@@ -402,7 +403,7 @@
+@@ -438,7 +439,7 @@
  
  
    // probe features
@@ -80,7 +80,7 @@
    fp << path << "-help";
    out.setProcess( &fp );
    if( fp.start( KProcess::Block, KProcess::AllOutput ) ) {
-@@ -462,7 +463,7 @@
+@@ -498,7 +499,7 @@
    K3bExternalBin* bin = 0;
  
    // probe version
@@ -89,7 +89,7 @@
    vp << path ;
    K3bProcess::OutputCollector out( &vp );
    if( vp.start( KProcess::Block, KProcess::AllOutput ) ) {
-@@ -490,7 +491,7 @@
+@@ -530,7 +531,7 @@
  
  
    // probe features
@@ -98,7 +98,7 @@
    fp << path << "write" << "-h";
    out.setProcess( &fp );
    if( fp.start( KProcess::Block, KProcess::AllOutput ) ) {
-@@ -556,7 +557,7 @@
+@@ -599,7 +600,7 @@
    K3bExternalBin* bin = 0;
  
    // probe version
@@ -107,7 +107,7 @@
    vp << path ;
    K3bProcess::OutputCollector out( &vp );
    if( vp.start( KProcess::Block, KProcess::AllOutput ) ) {
-@@ -610,7 +611,7 @@
+@@ -653,7 +654,7 @@
    K3bExternalBin* bin = 0;
  
    // probe version
@@ -116,7 +116,7 @@
    vp << path << "-V";
    K3bProcess::OutputCollector out( &vp );
    if( vp.start( KProcess::Block, KProcess::AllOutput ) ) {
-@@ -667,7 +668,7 @@
+@@ -710,7 +711,7 @@
    K3bExternalBin* bin = 0;
  
    // probe version
@@ -125,7 +125,7 @@
    K3bProcess::OutputCollector out( &vp );
  
    vp << path << "--version";
-@@ -726,7 +727,7 @@
+@@ -769,7 +770,7 @@
    K3bExternalBin* bin = 0;
  
    // probe version
@@ -134,7 +134,7 @@
    K3bProcess::OutputCollector out( &vp );
  
    vp << path << "-version";
-@@ -795,7 +796,7 @@
+@@ -838,7 +839,7 @@
    K3bExternalBin* bin = 0;
  
    // probe version
@@ -143,7 +143,7 @@
    K3bProcess::OutputCollector out( &vp );
  
    vp << path;
-@@ -868,7 +869,7 @@
+@@ -911,7 +912,7 @@
    K3bExternalBin* bin = 0;
  
    // probe version
diff -Pru ../../sysutils/k3b/files/patch-src-core-k3bprocess.cpp ./files/patch-src-core-k3bprocess.cpp
--- ../../sysutils/k3b/files/patch-src-core-k3bprocess.cpp	Thu Mar 18 18:41:40 2004
+++ ./files/patch-src-core-k3bprocess.cpp	Mon May 24 23:32:42 2004
@@ -1,5 +1,5 @@
 --- src/core/k3bprocess.cpp.orig	Sun Feb  1 09:18:58 2004
-+++ src/core/k3bprocess.cpp	Fri Feb 13 21:03:38 2004
++++ src/core/k3bprocess.cpp	Tue May 11 22:57:03 2004
 @@ -28,6 +28,60 @@
  #include <unistd.h>
  #include <stdio.h>
diff -Pru ../../sysutils/k3b/files/patch-src-core-k3bprocess.h ./files/patch-src-core-k3bprocess.h
--- ../../sysutils/k3b/files/patch-src-core-k3bprocess.h	Thu Mar 18 18:41:41 2004
+++ ./files/patch-src-core-k3bprocess.h	Mon May 24 23:32:42 2004
@@ -1,5 +1,5 @@
 --- src/core/k3bprocess.h.orig	Tue Jan 27 09:19:13 2004
-+++ src/core/k3bprocess.h	Fri Feb 13 21:03:38 2004
++++ src/core/k3bprocess.h	Tue May 11 22:57:03 2004
 @@ -194,4 +194,21 @@
    KProcess* m_process;
  };
diff -Pru ../../sysutils/k3b/files/patch-src-device-k3bdevice.cpp ./files/patch-src-device-k3bdevice.cpp
--- ../../sysutils/k3b/files/patch-src-device-k3bdevice.cpp	Thu Mar 18 18:41:41 2004
+++ ./files/patch-src-device-k3bdevice.cpp	Mon May 24 23:32:42 2004
@@ -1,5 +1,5 @@
---- src/device/k3bdevice.cpp.orig	Thu Feb 12 11:21:15 2004
-+++ src/device/k3bdevice.cpp	Fri Feb 13 21:03:38 2004
+--- src/device/k3bdevice.cpp.orig	Sun Mar 14 17:35:20 2004
++++ src/device/k3bdevice.cpp	Mon May 24 23:31:19 2004
 @@ -56,6 +56,12 @@
  
  #endif // Q_OS_LINUX
@@ -24,3 +24,56 @@
  
  
    //
+@@ -192,6 +200,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 ) ) {
+@@ -733,6 +742,14 @@
+       m_bufferSize = 1024;
+       d->burnfree = false;
+     }
++    else if( description().startsWith("CD-R56S") ) {
++      m_writeModes |= TAO;
++      d->deviceType |= CDROM|CDR;
++      m_maxWriteSpeed = 6;
++      m_maxReadSpeed = 24;
++      m_bufferSize = 1302;
++      d->burnfree = false;
++    }
+   }
+   else if( vendor().startsWith("MATSHITA") ) {
+     if( description().startsWith("CD-R   CW-7501") ) {
+@@ -2317,10 +2334,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;
+@@ -2406,13 +2425,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 -Pru ../../sysutils/k3b/files/patch-src-device-k3bdevice.h ./files/patch-src-device-k3bdevice.h
--- ../../sysutils/k3b/files/patch-src-device-k3bdevice.h	Thu Mar 18 18:41:41 2004
+++ ./files/patch-src-device-k3bdevice.h	Mon May 24 23:32:42 2004
@@ -1,6 +1,6 @@
---- src/device/k3bdevice.h.orig	Fri Jan 30 11:28:15 2004
-+++ src/device/k3bdevice.h	Fri Feb 13 21:03:38 2004
-@@ -654,6 +654,10 @@
+--- src/device/k3bdevice.h.orig	Sun Mar 14 17:35:20 2004
++++ src/device/k3bdevice.h	Tue May 11 22:57:03 2004
+@@ -661,6 +661,10 @@
  
      class Private;
      Private* d;
diff -Pru ../../sysutils/k3b/files/patch-src-device-k3bdevicemanager.cpp ./files/patch-src-device-k3bdevicemanager.cpp
--- ../../sysutils/k3b/files/patch-src-device-k3bdevicemanager.cpp	Thu Mar 18 18:41:41 2004
+++ ./files/patch-src-device-k3bdevicemanager.cpp	Mon May 24 23:32:42 2004
@@ -1,5 +1,5 @@
---- src/device/k3bdevicemanager.cpp.orig	Wed Jan 21 11:20:10 2004
-+++ src/device/k3bdevicemanager.cpp	Fri Feb 13 21:03:38 2004
+--- src/device/k3bdevicemanager.cpp.orig	Sun Feb 29 13:52:41 2004
++++ src/device/k3bdevicemanager.cpp	Tue May 11 22:57:03 2004
 @@ -49,6 +49,12 @@
  #include <sys/stat.h>
  #include <sys/ioctl.h>
@@ -13,7 +13,7 @@
  
  #ifdef Q_OS_LINUX
  
-@@ -196,6 +202,22 @@
+@@ -196,6 +202,13 @@
  {
    m_foundDevices = 0;
  
@@ -22,21 +22,12 @@
 +// 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(false);
-+  kdDebug() << "(K3bDeviceManager) analyze found device" << endl;
-+  for ( QValueList<BSDDevice>::iterator it = m_devices.begin(); it != m_devices.end(); ++it )
-+  {
-+     if( addDevice( (*it).m_name ) )
-+     {
-+        kdDebug() << "(K3bDeviceManager) Device " << (*it).m_name << " added" << endl;
-+        m_foundDevices++;
-+     }
-+  }
++  bsd_scan_devices();
 +#else
    QFile info("/proc/sys/dev/cdrom/info");
    QString line,devstring;
    info.open(IO_ReadOnly);
-@@ -286,6 +308,7 @@
+@@ -286,6 +299,7 @@
  //       m_foundDevices++;
  //   }
  
@@ -44,7 +35,7 @@
    scanFstab();
  
    return m_foundDevices;
-@@ -427,6 +450,7 @@
+@@ -427,6 +441,7 @@
  bool K3bCdDevice::DeviceManager::testForCdrom(const QString& devicename)
  {
    bool ret = false;
@@ -52,7 +43,7 @@
    int cdromfd = K3bCdDevice::openDevice( devicename.ascii() );
    if (cdromfd < 0) {
      kdDebug() << "could not open device " << devicename << " (" << strerror(errno) << ")" << endl;
-@@ -467,11 +491,51 @@
+@@ -467,11 +482,36 @@
    }
  
    ::close( cdromfd );
@@ -66,45 +57,30 @@
 +// 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 = 0;
-+  if (!m_lastRefresh.isValid())
-+    bsd_scan_devices(false);
-+  bool found = false;
-+  for ( QValueList<BSDDevice>::iterator it = m_devices.begin(); it != m_devices.end(); ++it )
-+  {
-+     if( (*it).m_name == devicename )
-+     {
-+        device = new K3bDevice((*it).m_name.latin1());
-+        device->m_bus = (*it).m_bus;
-+        device->m_target = (*it).m_target;
-+        device->m_lun = (*it).m_lun;
-+        device->m_passDevice = (*it).m_passDevice;
-+        device->m_vendor = (*it).m_vendor;
-+        device->m_description = (*it).m_product;
-+        device->m_version = (*it).m_revision;
-+        found = true;
-+        break;
-+     }
-+  }
-+  if (!found)
-+  {
++  K3bDevice* device = findDevice(devicename);
++  if (device)
++     return 0;
 +  // resolve all symlinks
 +      QString resolved = resolveSymLink( devicename );
 +      kdDebug() << "(K3bDeviceManager) " << devicename << " resolved to " << resolved << endl;
-+      int bus, target, lun;
-+      if( K3bDevice* oldDev = findDevice( bus, target, lun ) )
++      if( K3bDevice* oldDev = findDevice( resolved ) )
 +      {
-+	kdDebug() << "(K3bDeviceManager) dev already found" << endl;
-+	oldDev->addDeviceNode( resolved );
++        kdDebug() << "(K3bDeviceManager) dev already found" << endl;
++        oldDev->addDeviceNode( resolved );
++        return 0;
 +      }
-+      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
-@@ -503,6 +567,7 @@
+@@ -503,6 +543,7 @@
      device->m_target = target;
      device->m_lun = lun;
    }
@@ -112,7 +88,7 @@
  
    if( !device->init() ) {
      kdDebug() << "Could not initialize device " << devicename << endl;
-@@ -578,9 +643,20 @@
+@@ -578,9 +619,20 @@
  
      if( K3bDevice* dev = findDevice( resolveSymLink(md) ) )
      {
@@ -133,7 +109,7 @@
          dev->setMountDevice( md );
  	dev->m_supermount = supermount;
        }
-@@ -589,6 +665,8 @@
+@@ -589,6 +641,8 @@
      {
        // compare bus, id, lun since the same device can for example be
        // determined as /dev/srX or /dev/scdX
@@ -142,7 +118,7 @@
        int bus = -1, id = -1, lun = -1;
        if( determineBusIdLun( mountInfo->fs_spec, bus, id, lun ) ) {
          if( K3bDevice* dev = findDevice( bus, id, lun ) ) {
-@@ -599,6 +677,17 @@
+@@ -599,6 +653,17 @@
            }
          }
        }
@@ -160,129 +136,134 @@
  
  
      }
-@@ -673,5 +762,126 @@
+@@ -674,5 +739,131 @@
    return QString::fromLatin1( resolved );
  }
  
 +
 +#ifdef __FreeBSD__
-+// Calls "camcontrol devlist" to get a list of all available cd devices.
-+// The sudo flag indicates, that "camcontrol devlist" should be
-+// called. This is tried, if bsd_scan_devices(false) fails.
-+// The result of the scan ist stored in m_devices. If within 3
-+// seconds after the last call to bsd_scan_devices this function
-+// is called again, the last result is used (prevents to call
-+// camcontrol several times within a short time).
-+void K3bCdDevice::DeviceManager::bsd_scan_devices(bool sudo)
++#include <cam/cam.h>
++#include <cam/scsi/scsi_pass.h>
++#include <camlib.h>
++void K3bCdDevice::DeviceManager::bsd_scan_devices()
 +{
-+    QDateTime now = QDateTime::currentDateTime();
-+    if (m_lastRefresh.isValid() && m_lastRefresh.secsTo(now) < 3)
-+        return;
-+    m_lastRefresh = now;
-+    m_devices.clear();
-+    kdDebug() << "(K3bDeviceManager) Scanning for devices: " << sudo << endl;
-+    KTempFile tmpfile;
-+    tmpfile.setAutoDelete(true);
-+
-+    // create call
-+    QString call = "/bin/sh -c \"";
-+    if (sudo)
-+        call += "sudo ";
-+    call += "camcontrol devlist > " + tmpfile.name() + " 2>&1 \"";
-+    kdDebug() << "(K3bDeviceManager) Reading device list : " << call << endl;
-+    if (system(call.latin1()))
-+    {
-+         if (!sudo)
-+         {
-+             m_lastRefresh = m_lastRefresh.addDays(-1);
-+             bsd_scan_devices(true);
-+         }
-+             return;
-+    }
-+
-+    // read tmp file line by line
-+    QFile tmp (tmpfile.name());
-+    if ( tmp.open( IO_ReadOnly ) )
-+    {
-+        QTextStream stream( &tmp );
-+        while ( !stream.eof() )
++	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) 
 +	{
-+	    QString str = stream.readLine();
-+            if (!str.startsWith("<"))
-+                continue;
-+            str.remove(0,1);
-+            int i = str.find(">");
-+            if (i < 0)
-+                continue;
-+            QStringList details = QStringList::split(" ", str.left(i));
-+            i = str.find("at scbus", i);
-+            if (i < 0)
-+                continue;
-+            str.remove(0, i+8);
-+            i = str.find(" ");
-+            if (i < 0)
-+                continue;
-+            bool ok;
-+            int bus = str.left(i).toInt(&ok);
-+            if (!ok)
-+                continue;
-+            i = str.find("target ", i);
-+            if (i < 0)
-+                continue;
-+            str.remove(0, i+7);
-+            i = str.find(" ");
-+            if (i < 0)
-+                continue;
-+            int target = str.left(i).toInt(&ok);
-+            if (!ok)
-+                continue;
-+            i = str.find("lun ", i);
-+            if (i < 0)
-+                continue;
-+            str.remove(0, i+4);
-+            i = str.find(" ");
-+            if (i < 0)
-+                continue;
-+            int lun = str.left(i).toInt(&ok);
-+            if (!ok)
-+                continue;
-+            i = str.find("(", i);
-+            if (i < 0)
-+                continue;
-+            str.remove(0, i+1);
-+            i = str.find(",");
-+            if (i < 0)
-+                continue;
-+            QString name = str.left(i);
-+            str.remove(0, i+1);
-+            i = str.find(")");
-+            if (i < 0)
-+                continue;
-+            QString pass = name;
-+            if (name.startsWith("pass"))
-+                name = str.left(i);
-+            else
-+                pass = str.left(i);
-+            QString vendor, product, revision;
-+            if (details.count() > 0)
-+               revision = details.last();
-+            details.pop_back();
-+            if (details.count() > 0)
-+               product = details.last();
-+            details.pop_back();
-+            if (details.count() > 0)
-+               vendor = details.join(" ");
-+            if (!name.startsWith("cd"))
-+               continue;
-+            kdDebug() << "(K3bDeviceManager) Found device " << name << ", pass = " << pass << ", bus = " << bus << ", target = " << target << ", lun = " << lun << endl;
-+            kdDebug() << "(K3bDeviceManager) vendor: " << vendor << ", product: " << product << ", revision: " << revision << ", target = " << target << ", lun = " << lun << endl;
-+#if __FreeBSD_version >= 500100
-+            m_devices.push_back(BSDDevice("/dev/" + name, "/dev/" + pass, vendor, product, revision, bus, target, lun));
-+#else
-+            m_devices.push_back(BSDDevice("/dev/" + name + "c", "/dev/" + pass, vendor, product, revision, bus, target, lun));
++		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
++
++					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;
++				}
++				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
-+        }
-+    }
++					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
  
diff -Pru ../../sysutils/k3b/files/patch-src-device-k3bdevicemanager.h ./files/patch-src-device-k3bdevicemanager.h
--- ../../sysutils/k3b/files/patch-src-device-k3bdevicemanager.h	Thu Mar 18 18:41:41 2004
+++ ./files/patch-src-device-k3bdevicemanager.h	Mon May 24 23:32:42 2004
@@ -1,42 +1,12 @@
 --- src/device/k3bdevicemanager.h.orig	Wed Jan 21 11:20:11 2004
-+++ src/device/k3bdevicemanager.h	Fri Feb 13 21:03:38 2004
-@@ -24,6 +24,10 @@
- #include <qptrlist.h>
- 
- #include <kdebug.h>
-+#ifdef __FreeBSD__
-+#include <qdatetime.h>
-+#include <qvaluelist.h>
-+#endif
- 
- class KProcess;
- class KConfig;
-@@ -112,6 +116,29 @@
++++ src/device/k3bdevicemanager.h	Tue May 11 22:57:03 2004
+@@ -112,6 +112,10 @@
  
        class Private;
        Private* d;
 +#ifdef __FreeBSD__
-+      void bsd_scan_devices(bool sudo);
-+      QDateTime m_lastRefresh;
-+      class BSDDevice
-+      {
-+      public:
-+          BSDDevice() : m_bus(-1), m_target(-1), m_lun(-1) {}
-+          BSDDevice(const QString & name, const QString & passDevice, const QString & vendor,
-+                    const QString & product, const QString & revision, int bus, int target, int lun) :
-+              m_name(name), m_passDevice(passDevice), m_vendor(vendor), m_product(product),
-+              m_revision(revision), m_bus(bus), m_target(target), m_lun(lun) {}
-+          BSDDevice(const BSDDevice & src) :
-+              m_name(src.m_name), m_passDevice(src.m_passDevice), m_vendor(src.m_vendor), m_product(src.m_product),
-+              m_revision(src.m_revision), m_bus(src.m_bus), m_target(src.m_target), m_lun(src.m_lun) {}
-+          const BSDDevice & operator= (const BSDDevice & src)
-+          { m_name = src.m_name; m_passDevice = src.m_passDevice; m_vendor = src.m_vendor;
-+            m_product = src.m_product; m_revision = src.m_revision; m_bus = src.m_bus; m_target = src.m_target;
-+            m_lun = src.m_lun; return *this; }
-+          QString m_name, m_passDevice, m_vendor, m_product, m_revision;
-+          int m_bus, m_target, m_lun;
-+      };
-+      QValueList<BSDDevice> m_devices;
++      void bsd_scan_devices();
++      CdDevice* addDevice( CdDevice* );
 +#endif
      };
  }
diff -Pru ../../sysutils/k3b/files/patch-src-device-k3bscsicommand.cpp ./files/patch-src-device-k3bscsicommand.cpp
--- ../../sysutils/k3b/files/patch-src-device-k3bscsicommand.cpp	Thu Mar 18 18:41:41 2004
+++ ./files/patch-src-device-k3bscsicommand.cpp	Mon May 24 23:32:42 2004
@@ -1,18 +1,5 @@
 --- src/device/k3bscsicommand.cpp.orig	Wed Jan 21 11:20:11 2004
-+++ src/device/k3bscsicommand.cpp	Fri Feb 13 21:03:38 2004
-@@ -1,10 +1,10 @@
- /* 
-  *
-- * $Id: k3bscsicommand.cpp,v 1.4 2004/01/21 10:20:11 trueg Exp $
-+ * $Id: k3bscsicommand.cpp,v 1.3 2003/12/31 14:15:17 trueg Exp $
-  * Copyright (C) 2003 Sebastian Trueg <trueg@k3b.org>
-  *
-  * This file is part of the K3b project.
-- * Copyright (C) 1998-2004 Sebastian Trueg <trueg@k3b.org>
-+ * Copyright (C) 1998-2003 Sebastian Trueg <trueg@k3b.org>
-  *
-  * This program is free software; you can redistribute it and/or modify
-  * it under the terms of the GNU General Public License as published by
++++ src/device/k3bscsicommand.cpp	Mon May 24 23:32:04 2004
 @@ -58,13 +58,14 @@
  
  
@@ -34,7 +21,7 @@
  
  K3bCdDevice::ScsiCommand::ScsiCommand( const K3bCdDevice::CdDevice* dev )
    : m_device(dev)
-@@ -135,6 +136,105 @@
+@@ -135,6 +136,155 @@
      return 0;
  }
  
@@ -65,42 +52,41 @@
 +#include <sys/ioctl.h>
 +
 +K3bCdDevice::ScsiCommand::ScsiCommand( const K3bCdDevice::CdDevice* dev )
-+  : m_device(dev)
++  : closecam(true), m_device(dev)
 +{
-+  clear();
++   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)
++   if(cam && closecam)
++   {
 +       cam_close_device(cam);
-+//   if (m_fd >0)
-+//       close(m_fd);
++       kdDebug() << "(K3bCdDevice::ScsiCommand) device " << m_device->m_passDevice << " closed." << endl;
++   }
 +}
 +
 +
 +void K3bCdDevice::ScsiCommand::clear()
 +{
-+//   char pass[32];
-+   cam=NULL;
 +   memset (&ccb,0,sizeof(ccb));
-+   ccb.ccb_h.func_code = XPT_GDEVLIST;
-+//   if (ioctl (m_fd,CAMGETPASSTHRU,&ccb) < 0) return;
-+//   sprintf (pass,"/dev/%.15s%u",ccb.cgdl.periph_name,ccb.cgdl.unit_number);
-+   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;
++   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 )
 +{
-+   if (!i && cam)
-+   {
-+      memset(&ccb,0,sizeof(ccb));
-+      ccb.ccb_h.path_id    = cam->path_id;
-+      ccb.ccb_h.target_id  = cam->target_id;
-+      ccb.ccb_h.target_lun = cam->target_lun;
-+      cam_fill_csio (&(ccb.csio), 1, NULL, CAM_DEV_QFRZDIS, MSG_SIMPLE_Q_TAG, NULL, 0, sizeof(ccb.csio.sense_data), 0, 30*1000);
-+   }
 +   ccb.csio.cdb_len = i+1;
 +   return ccb.csio.cdb_io.cdb_bytes[i];
 +}
@@ -114,26 +100,77 @@
 +      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;
-+   ccb.csio.ccb_h.flags |= dir;
-+   ccb.csio.data_ptr  = (u_int8_t *)data;
-+   ccb.csio.dxfer_len = len;
++   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;
-+      return -1;
++      goto dump_error;
 +  }
 +   if ((ccb.ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP)
-+   {
-+      kdDebug() << "(K3bCdDevice::ScsiCommand) transport succeeded" << endl;
-+    return 0;
-+   }
++      return 0;
++   
 +   errno = EIO;
-+   ret = ERRCODE(((unsigned char *)&ccb.csio.sense_data));
++   // 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));
-+   kdDebug() << "(K3bCdDevice::ScsiCommand) transport failed (2): " << ret << endl;
++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
diff -Pru ../../sysutils/k3b/files/patch-src-device-k3bscsicommand.h ./files/patch-src-device-k3bscsicommand.h
--- ../../sysutils/k3b/files/patch-src-device-k3bscsicommand.h	Thu Mar 18 18:41:41 2004
+++ ./files/patch-src-device-k3bscsicommand.h	Mon May 24 23:32:42 2004
@@ -1,18 +1,5 @@
 --- src/device/k3bscsicommand.h.orig	Wed Jan 21 11:20:11 2004
-+++ src/device/k3bscsicommand.h	Fri Feb 13 21:03:38 2004
-@@ -1,10 +1,10 @@
- /* 
-  *
-- * $Id: k3bscsicommand.h,v 1.3 2004/01/21 10:20:11 trueg Exp $
-+ * $Id: k3bscsicommand.h,v 1.2 2003/12/19 19:40:40 trueg Exp $
-  * Copyright (C) 2003 Sebastian Trueg <trueg@k3b.org>
-  *
-  * This file is part of the K3b project.
-- * Copyright (C) 1998-2004 Sebastian Trueg <trueg@k3b.org>
-+ * Copyright (C) 1998-2003 Sebastian Trueg <trueg@k3b.org>
-  *
-  * This program is free software; you can redistribute it and/or modify
-  * it under the terms of the GNU General Public License as published by
++++ src/device/k3bscsicommand.h	Tue May 11 22:57:03 2004
 @@ -17,9 +17,27 @@
  #define _K3B_SCSI_COMMAND_H_
  
@@ -41,24 +28,7 @@
  
  
  #include <qstring.h>
-@@ -87,16 +105,24 @@
-   }
- 
- 
-+#ifndef __FreeBSD__
-   enum TransportDirection {
-     TR_DIR_NONE,
-     TR_DIR_READ,
-     TR_DIR_WRITE
-   };
-+#else
-+  enum TransportDirection {
-+    TR_DIR_NONE = 0,
-+    TR_DIR_READ = CAM_DIR_IN,
-+    TR_DIR_WRITE = CAM_DIR_OUT
-+  };
-+#endif
- 
+@@ -96,7 +114,7 @@
    class ScsiCommand
      {
      public:
@@ -67,7 +37,7 @@
        ScsiCommand( const CdDevice* );
        ~ScsiCommand();
  
-@@ -109,9 +135,13 @@
+@@ -109,10 +127,16 @@
  		     size_t len = 0 );
  
      private:
@@ -76,9 +46,12 @@
        struct request_sense m_sense;
 -
 +#else
++      ScsiCommand( const CdDevice* , struct cam_device *);
++      bool closecam;
 +      struct cam_device  *cam;
 +      union ccb		ccb;
-+#endif
        int m_fd;
++#endif
        const CdDevice* m_device;
        bool m_needToCloseDevice;
+     };
diff -Pru ../../sysutils/k3b/files/patch-src-rip-k3bdvdrippingprocess.cpp ./files/patch-src-rip-k3bdvdrippingprocess.cpp
--- ../../sysutils/k3b/files/patch-src-rip-k3bdvdrippingprocess.cpp	Thu Jan  1 01:00:00 1970
+++ ./files/patch-src-rip-k3bdvdrippingprocess.cpp	Mon May 24 23:32:41 2004
@@ -0,0 +1,16 @@
+--- src/rip/k3bdvdrippingprocess.cpp.orig	Wed Jan 21 11:20:20 2004
++++ src/rip/k3bdvdrippingprocess.cpp	Tue May 11 22:57:03 2004
+@@ -278,10 +278,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 -Pru ../../sysutils/k3b/files/patch-src-rip-k3bmovieview.cpp ./files/patch-src-rip-k3bmovieview.cpp
--- ../../sysutils/k3b/files/patch-src-rip-k3bmovieview.cpp	Thu Mar 18 18:41:41 2004
+++ ./files/patch-src-rip-k3bmovieview.cpp	Mon May 24 23:32:41 2004
@@ -1,5 +1,5 @@
 --- src/rip/k3bmovieview.cpp.orig	Fri Feb  6 12:08:51 2004
-+++ src/rip/k3bmovieview.cpp	Fri Feb 13 21:03:38 2004
++++ src/rip/k3bmovieview.cpp	Tue May 11 22:57:03 2004
 @@ -223,8 +223,11 @@
      }
  
diff -Pru ../../sysutils/k3b/files/patch-src-rip-k3btcwrapper.cpp ./files/patch-src-rip-k3btcwrapper.cpp
--- ../../sysutils/k3b/files/patch-src-rip-k3btcwrapper.cpp	Thu Mar 18 18:41:41 2004
+++ ./files/patch-src-rip-k3btcwrapper.cpp	Mon May 24 23:32:41 2004
@@ -1,5 +1,5 @@
 --- src/rip/k3btcwrapper.cpp.orig	Wed Jan 21 11:20:20 2004
-+++ src/rip/k3btcwrapper.cpp	Fri Feb 13 21:03:38 2004
++++ src/rip/k3btcwrapper.cpp	Tue May 11 22:57:03 2004
 @@ -65,7 +65,12 @@
    //K3bProcess *p = new K3bProcess();
    emit tcprobeTitleParsed( m_currentTitle );
@@ -13,3 +13,12 @@
    //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 -Pru ../../sysutils/k3b/pkg-message ./pkg-message
--- ../../sysutils/k3b/pkg-message	Thu Mar 18 18:41:38 2004
+++ ./pkg-message	Wed May 12 09:01:47 2004
@@ -9,26 +9,18 @@
    Alternatively do all of the following:
 3a. set the suid flag on cdrecord and cdrdao. The 'Notes' the chapter of
     'man cdrecord' discusses this.
-3b. - install sudo (security/sudo) and add the following line or similar to
-      sudoers (usually in /usr/local/etc/sudoers):
-      ALL             ALL = NOPASSWD: /sbin/camcontrol devlist
-    - or execute 'camcontrol devlist'. For every user who should be able to use 
-      k3b. Resolve all errors e.g. by giving him/her access rights to /dev/xpt0.
-      'camcontrol devlist' must run without error for all these users!
-      Note that giving access rights to /dev/xpt* might be a security leak!
-    - or give camcontrol the suid flag, which is a security leak as well.
-3c. - For every user who should be able to use k3b and for every CD or DVD
+3b. - For every user who should be able to use k3b and for every CD or DVD
       device add a directory in the users home directory. These directories
       must be owned by the corresponding user. For each such directory add a
       line in /ect/fstab (see remark 2), like:
         /dev/cd0c  /usr/home/XXX/cdrom  cd9660  ro,noauto,nodev,nosuid  0  0
       Furthermore allow user mounts as described in topic 9.22 of the FAQ:
       http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/disks.html#USER-FLOPPYMOUNT
-    - or just give mount and umount the sudo flag, which is a security leak.
-3d. - Every user who should be able to use k3b must have read and write access
-      to all pass through devices connected with CD and DVD drives. Run
-      'camcontrol devlist' to identify those devices (seek string 'passX' at
-      the end of each line and modify the rights of /dev/passX). Note, that
+    - or just give mount and umount the suid flag, which is a security leak.
+3c. - Every user who should be able to use k3b must have read and write access
+      to all pass through devices connected with CD and DVD drives and to the /dev/xpt0 
+      device. Run 'camcontrol devlist' to identify those devices (seek string 'passX'
+      at the end of each line and modify the rights of /dev/passX). Note, that
       this is a security leak as well but that there is no alternative!
 4. Create a directory on a partition, which has enough disk space to hold a CDs
    or DVDs content (usually below /usr). Enter this directory in Settings->
@@ -40,14 +32,14 @@
    work. See http://cdrdao.sourceforge.net/drives.html.
 6. To burn video CDs install the port multimedia/vcdimager.
 7. To rip DVDs additionally install the ports multimedia/transcode,
-   multimedia/libdvdread and multimedia/xvid. Note that multimedia/transcode 
-   requires some variables to be set. Type "make fetch" in the 
-   multimedia/transcode ports directory for details. The ripping process
-   itself is described in 
-   http://k3b.sourceforge.net/cgi-bin/index.pl/videoencoding.
+   multimedia/libdvdread and multimedia/xvid. Note that k3b does NOT work with
+   transcode 0.6.12. 0.6.10 is the last known working version. The ripping process
+   itself is described in http://k3b.sourceforge.net/cgi-bin/index.pl/videoencoding.
 8. To burn bootable video CDs, install the port multimedia/emovix.
 9. To burn DVDs, install the port sysutils/dvd+rw-tools.
 10. To normalize the volumes of audio cds, install the port audio/normalize.
 11. To rip into more audio formats, install the port audio/sox.
+
+UPGRADERS FROM 0.11.6 OR BELOW SHOULD NOTE THE CHANGED TOPIC 3C!!!
 
 To read this instructions again, type 'make showinfo' in the k3b port directory
diff -Pru ../../sysutils/k3b/pkg-plist ./pkg-plist
--- ../../sysutils/k3b/pkg-plist	Thu Mar 18 18:41:38 2004
+++ ./pkg-plist	Wed Apr 28 22:36:54 2004
@@ -35,6 +35,7 @@
 include/k3bfileitem.h
 include/k3bglobals.h
 include/k3binteractiondialog.h
+include/k3bintvalidator.h
 include/k3biso9660.h
 include/k3bisooptions.h
 include/k3bjob.h
Only in ../../sysutils/k3b/: work

--Boundary-00=_f4XtAvXt0H8jhz3--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200405270735.27560.h.eichmann>