Bug 100312 - Non-existant temp directory causes "IO error"
Summary: Non-existant temp directory causes "IO error"
Status: RESOLVED FIXED
Alias: None
Product: k3b
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: unspecified Linux
: NOR normal
Target Milestone: ---
Assignee: Sebastian Trueg
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-02-26 17:00 UTC by Kde
Modified: 2006-03-18 14:24 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Kde 2005-02-26 17:00:55 UTC
Version:           0.11.15cvs (using KDE 3.3.2 Level "a" , SUSE 9.2 UNSUPPORTED)
Compiler:          gcc version 3.3.4 (pre 3.3.5 20040809)
OS:                Linux (i686) release 2.6.8-24.11-default

After copying my KDE settings from my previous computer to the new one, I started K3b and tried to burn a CD. Instead of the usual output in the burn window K3b just gave me an "IO error" without any additional information in the debug window.
It was only by accident, that I discovered that the temp directory which was set for K3b pointed to a directory which didn't exist on the new system. After changing it to a correct path, CD burning worked fine.

Please have K3b check whether the temp directory exists, before starting to burn. At the moment, it only seems to do that when closing the configuration dialog.
As an alternative, have K3b output more verbose/better information on what went wrong. This type of error could even be solved by non-technical users, so a more verbose error message wouldn't hurt.

Thanks.
Comment 1 Francois Marier 2005-10-08 20:54:43 UTC
I have been able to reproduce the bug on 0.12.4a as well.
Comment 2 Sebastian Trueg 2006-03-18 14:24:38 UTC
SVN commit 519980 by trueg:

check image directory and create it if necessary.

BUG: 100312


 M  +18 -1     k3bprojectburndialog.cpp  


--- trunk/extragear/multimedia/k3b/src/projects/k3bprojectburndialog.cpp #519979:519980
@@ -169,7 +169,7 @@
   saveSettings();
 
   // check if enough space in tempdir if not on-the-fly
-  if( m_tempDirSelectionWidget )
+  if( m_tempDirSelectionWidget ) {
     if( (!doc()->onTheFly() || doc()->onlyCreateImages()) &&
 	doc()->size()/1024 > m_tempDirSelectionWidget->freeTempSpace() ) {
       if( KMessageBox::warningContinueCancel( this, i18n("There seems to be not enough free space in temporary directory. "
@@ -177,6 +177,23 @@
 	return;
     }
 
+    // check if the temp dir exists
+    if( !m_checkOnTheFly->isChecked() || m_checkOnlyCreateImage->isChecked() ) {
+      QString tempDir = m_tempDirSelectionWidget->tempDirectory();
+      if( !QFile::exists( tempDir ) ) {
+	if( KMessageBox::warningYesNo( this, i18n("Image folder '%1' does not exist. Do you want K3b to create it?").arg( tempDir ) )
+	    == KMessageBox::Yes ) {
+	  if( !KStandardDirs::makeDir( tempDir ) ) {
+	    KMessageBox::error( this, i18n("Failed to create folder '%1'.").arg( tempDir ) );
+	    return;
+	  }
+	}
+	else
+	  return;
+      }
+    }
+  }
+
   K3bJobProgressDialog* dlg = 0;
   if( m_checkOnlyCreateImage && m_checkOnlyCreateImage->isChecked() )
     dlg = new K3bJobProgressDialog( parentWidget() );