D4847: KAuth integration in document saving
David Faure
noreply at phabricator.kde.org
Tue Mar 7 08:15:35 UTC 2017
dfaure added a comment.
Right the only way to get atomic renaming is to write the tempfile next to its final destination, NOT in /tmp.
(just like QSaveFile does ;)
INLINE COMMENTS
> katesecuretextbuffer.cpp:74
> + /**
> + * There is no atomic rename operation publicly exposed by QT.
> + *
It's Qt, not QT.
QT is QuickTime ;)
> katesecuretextbuffer.cpp:88
> + char buffer[len];
> + QDataStream dataStreamFrom(&readFile);
> + QDataStream dataStreamTo(&saveFile);
You definitely don't need QDataStream just to call read and write on QIODevices.
> katesecuretextbuffer.cpp:101
> +#ifndef Q_OS_WIN
> + // ensure that the file is written to disk
> +#ifdef HAVE_FDATASYNC
Not necessary if you use QSaveFile, which does this already.
But maybe the best solution here (to avoid the file copy) is a temp file that you can atomically rename, so let's discuss that before you get rid of all the stuff-that-QSaveFile-does ;)
> katetextbuffer.cpp:807
> +
> +#ifndef Q_OS_WIN
> + if (newFile) {
The thing about using Qt's setPermissions() is that it should work on Windows too.
> katetextbuffer.cpp:815
> + // set original file's permissions
> + saveFile->setPermissions(QFile(filename).permissions());
> }
Doesn't QSaveFile do this?
> katetextbuffer.cpp:885
> #ifdef HAVE_FDATASYNC
> - fdatasync(saveFile.handle());
> + fdatasync(saveFile->handle());
> #else
(pre-existing) done by QSaveFile already
> katetextbuffer.cpp:904
> + QVariantMap args;
> + args[QLatin1String("sourceFile")] = saveFile->fileName();
> + args[QLatin1String("targetFile")] = filename;
use .insert() to avoid the creation of a temporary.
REPOSITORY
R39 KTextEditor
REVISION DETAIL
https://phabricator.kde.org/D4847
To: martinkostolny, dhaumann, #ktexteditor
Cc: dfaure, anthonyfieroni, cullmann, ltoscano, dhaumann, graesslin, davidedmundson, palant, kwrite-devel, #frameworks, head7, kfunk, sars
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20170307/544ca264/attachment.html>
More information about the Kde-frameworks-devel
mailing list