Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37732194
en ru br
ALT Linux repos
S:23.04.3-alt1

Group :: Archiving/Cd burning
RPM: kde5-k3b

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

Patch: alt-return-wodim.patch
Download


--- b/libk3b/core/k3bdefaultexternalprograms.cpp
+++ a/libk3b/core/k3bdefaultexternalprograms.cpp
@@ -172,13 +172,16 @@ QString K3b::AbstractCdrtoolsProgram::versionIdentifier( const ExternalBin& bin
 
 
 K3b::CdrecordProgram::CdrecordProgram()
-    : K3b::AbstractCdrtoolsProgram( QLatin1String( "cdrecord" ), QLatin1String("cdrecord") )
+    : K3b::AbstractCdrtoolsProgram( QLatin1String( "cdrecord" ), QLatin1String( "wodim" ) )
 {
 }
 
 
 void K3b::CdrecordProgram::parseFeatures( const QString& output, ExternalBin& bin ) const
 {
+    if( usingCdrkit( bin ) )
+        bin.addFeature( "wodim" );
+
     if( bin.version().suffix().endsWith( "-dvd" ) ) {
         bin.addFeature( "dvd-patch" );
         bin.setVersion( QString(bin.version().versionString()).remove("-dvd") );
--- b/libk3b/jobs/k3bdvdcopyjob.cpp
+++ a/libk3b/jobs/k3bdvdcopyjob.cpp
@@ -171,7 +171,7 @@ void K3b::DvdCopyJob::slotDiskInfoReady(
         if ( d->usedWritingApp == K3b::WritingAppAuto ) {
             // prefer growisofs to wodim, which doesn't work all that great for DVDs
             // (and doesn't support BluRay at all)
-            if (true)
+            if ( k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "wodim" ) )
                 d->usedWritingApp = K3b::WritingAppGrowisofs;
             // otherwise, let's default to cdrecord for the time being
             // FIXME: use growisofs for non-dao and non-auto mode
--- b/libk3b/jobs/k3bmetawriter.cpp
+++ a/libk3b/jobs/k3bmetawriter.cpp
@@ -266,6 +266,7 @@ bool K3b::MetaWriter::determineUsedAppAndMode()
         cdrecordOnTheFly = k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "audio-stdin" );
         cdrecordCdText = k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "cdtext" );
         cdrecordBluRay = k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "blu-ray" );
+        cdrecordWodim = k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "wodim" );
     }
     if( k3bcore->externalBinManager()->binObject("growisofs") ) {
         growisofsBluRay = k3bcore->externalBinManager()->binObject("growisofs")->hasFeature( "blu-ray" );
--- b/libk3b/projects/datacd/k3bdatajob.cpp
+++ a/libk3b/projects/datacd/k3bdatajob.cpp
@@ -811,9 +811,12 @@ bool K3b::DataJob::waitForBurnMedium()
 
         d->usedWritingApp = writingApp();
         // let's default to cdrecord for the time being (except for special cases below)
-        // but prefer growisofs for DVDs
+        // but prefer growisofs to wodim for DVDs
         if ( d->usedWritingApp == K3b::WritingAppAuto ) {
-            d->usedWritingApp = K3b::WritingAppCdrecord;
+            if (k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "wodim" ))
+                d->usedWritingApp = K3b::WritingAppGrowisofs;
+            else
+                d->usedWritingApp = K3b::WritingAppCdrecord;
         }
 
         // -------------------------------
@@ -929,7 +932,10 @@ bool K3b::DataJob::waitForBurnMedium()
     else if ( foundMedium & K3b::Device::MEDIA_BD_ALL ) {
         d->usedWritingApp = writingApp();
         if( d->usedWritingApp == K3b::WritingAppAuto ) {
-            d->usedWritingApp = K3b::WritingAppCdrecord;
+            if (k3bcore->externalBinManager()->binObject("cdrecord")->hasFeature( "wodim" ))
+                d->usedWritingApp = K3b::WritingAppGrowisofs;
+            else
+                d->usedWritingApp = K3b::WritingAppCdrecord;
         }
 
         if ( d->usedWritingApp == K3b::WritingAppCdrecord &&
--- b/libk3b/projects/k3bcdrecordwriter.cpp
+++ a/libk3b/projects/k3bcdrecordwriter.cpp
@@ -399,7 +399,7 @@ void K3b::CdrecordWriter::start()
 
     if( !d->cdrecordBinObject->copyright().isEmpty() )
         emit infoMessage( i18n("Using %1 %2 – Copyright © %3"
-                               ,QLatin1String("Cdrecord")
+                               ,(d->cdrecordBinObject->hasFeature( "wodim" ) ? "Wodim" : "Cdrecord" )
                                ,d->cdrecordBinObject->version()
                                ,d->cdrecordBinObject->copyright()), MessageInfo );
 
--- b/libk3bdevice/k3bdevice.cpp
+++ a/libk3bdevice/k3bdevice.cpp
@@ -3611,7 +3611,7 @@ int K3b::Device::Device::nextWritableAddress() const
 
         //
         // The state of the last session has to be "empty" (0x0) or "incomplete" (0x1)
-        // The procedure here is taken from the dvd+rw-tools
+        // The procedure here is taken from the dvd+rw-tools and wodim
         //
         if( !(inf->border & 0x2) ) {
             // the incomplete track number is the first track in the last session (the empty session)
--- b/src/k3bsystemproblemdialog.cpp
+++ a/src/k3bsystemproblemdialog.cpp
@@ -231,7 +231,8 @@ void K3b::SystemProblemDialog::checkSystem( QWidget* parent, NotificationLevel l
             // Kernel 2.6.16.something seems to introduce another problem which was apparently worked around in cdrecord 2.01.01a05
             //
             if( K3b::simpleKernelVersion() >= K3b::Version( 2, 6, 8 ) &&
-                k3bcore->externalBinManager()->binObject( "cdrecord" )->version() < K3b::Version( 2, 1, 1, "a05" ) ) {
+                k3bcore->externalBinManager()->binObject( "cdrecord" )->version() < K3b::Version( 2, 1, 1, "a05" ) &&
+                !k3bcore->externalBinManager()->binObject( "cdrecord" )->hasFeature( "wodim" ) ) {
                 if( k3bcore->externalBinManager()->binObject( "cdrecord" )->hasFeature( "suidroot" ) ) {
                     showBinSettingsButton = true;
                     problems.append( K3b::SystemProblem( K3b::SystemProblem::CRITICAL,
--- b/src/option/k3bexternalbinpermissionmodel.cpp
+++ a/src/option/k3bexternalbinpermissionmodel.cpp
@@ -46,7 +46,8 @@ bool shouldRunSuidRoot( const K3b::ExternalBin* bin )
 
     if( bin->name() == "cdrecord" ) {
         return ( K3b::simpleKernelVersion() < K3b::Version( 2, 6, 8 ) ||
-                 bin->version() >= K3b::Version( 2, 1, 1, "a05" ) );
+                 bin->version() >= K3b::Version( 2, 1, 1, "a05" ) ||
+                 bin->hasFeature( "wodim" ) );
     }
     else if( bin->name() == "cdrdao" ) {
         return true;
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin