When the directory ~/.cache/kioexec doesn't exist yet and "man:cp" is run from e.g. krunner, this error message will be shown. Access denied. Could not write to /home/elias/.cache/kioexec/krun/16719_0_cp.part. This path is built in src/kioexec/main.cpp:110: QString tmp = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/krun/" + QString("%1_%2_%3").arg(QCoreApplication::applicationPid()).arg(jobCounter++).arg(fileName); The actual job is created in 120: KIO::Job *job = KIO::file_copy( url, dest ); Although the directory could be tested + created between 110 and 120, I feel like this should be done in a more generic way by KIO::file_copy() or even further up the job handling hierarchy. Are there any explicit reasons not to ensure to heave created the target directory in the KIO::file_copy() job handling itself or is this just something which was simply missing until now?
It's not file_copy's job to create directories. This is a porting bug, QStandardPaths doesn't create dirs while KStandardDirs did. Thanks for spotting it. I'll commit the missing mkpath, can you re-test the bug and close it?
Git commit ff412e0bd3ba543bc1ad4b96a661c10844cd993d by David Faure. Committed on 01/02/2015 at 18:28. Pushed by dfaure into branch 'master'. Fix porting error, mkpath needed after QStandardPaths::writableLocation(). Change-Id: Ib139c0f2af6538412a98b39cfb80fbb04c847705 CHANGELOG: fixed "Could not write to <path>" error when kioexec is triggered. M +2 -0 src/kioexec/main.cpp http://commits.kde.org/kio/ff412e0bd3ba543bc1ad4b96a661c10844cd993d
Git commit b290473167b9d0388715fffe494ee95a5c2c2851 by Boris Egorov. Committed on 02/05/2015 at 10:47. Pushed by egorov into branch 'master'. Fix path for writable location for kurl (kioexec) There was a porting issue with this code: QStandardPaths::writableLocation do not creates a directory [1], so we need QDir::mkpath. Commit ff412e0bd3ba54 tried to fix it, but it gone too far: we need to create directory only up to "/krun/", strings after that is filename. So we were creating directory instead of file, confusing some apps. For example, kate [2]. New behavior was tested by removing CacheLocation, and it successfully creates needed path. 1: http://doc.qt.io/qt-5/qstandardpaths.html#writableLocation 2: https://bugs.kde.org/show_bug.cgi?id=343329 Related: bug 343329 REVIEW: 123589 CHANGELOG: kioexec: Fixed path for writeable location for kurl M +3 -3 src/kioexec/main.cpp http://commits.kde.org/kio/b290473167b9d0388715fffe494ee95a5c2c2851
Is there anything left to do here after those commits?
I'm guessing not. Closing until someone responds otherwise.