When the directory ~/.cache/kioexec doesn't exist yet and "man:cp" is run from e.g. krunner, this error message will be shown.
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/" +
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().
CHANGELOG: fixed "Could not write to <path>" error when kioexec is triggered.
M +2 -0 src/kioexec/main.cpp
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 , 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 .
New behavior was tested by removing CacheLocation, and it successfully
creates needed path.
Related: bug 343329
CHANGELOG: kioexec: Fixed path for writeable location for kurl
M +3 -3 src/kioexec/main.cpp
Is there anything left to do here after those commits?
I'm guessing not. Closing until someone responds otherwise.