QFSFileEngine: de-duplicate some code

The only difference is the name of the QFileSystemEngine method each one
calls.

This makes subsequent commits simpler, since now only one function will
need to be changed.

Change-Id: I1b7d2ceeab0ad98e2ee87b3a64f100ab906f7df5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Ahmad Samir 2024-04-17 15:18:38 +02:00
parent 11f242174b
commit 488545ca72
2 changed files with 15 additions and 19 deletions

View File

@ -990,26 +990,14 @@ bool QFSFileEngine::remove()
return ret;
}
/*!
\reimp
*/
bool QFSFileEngine::rename(const QString &newName)
bool QFSFileEngine::rename_helper(const QString &newName, RenameMode mode)
{
Q_D(QFSFileEngine);
auto func = mode == Rename ? QFileSystemEngine::renameFile
: QFileSystemEngine::renameOverwriteFile;
QSystemError error;
bool ret = QFileSystemEngine::renameFile(d->fileEntry, QFileSystemEntry(newName), error);
if (!ret)
setError(QFile::RenameError, error.toString());
return ret;
}
/*!
\reimp
*/
bool QFSFileEngine::renameOverwrite(const QString &newName)
{
Q_D(QFSFileEngine);
QSystemError error;
bool ret = QFileSystemEngine::renameOverwriteFile(d->fileEntry, QFileSystemEntry(newName), error);
const bool ret = func(d->fileEntry, QFileSystemEntry(newName), error);
if (!ret)
setError(QFile::RenameError, error.toString());
return ret;

View File

@ -60,8 +60,12 @@ public:
bool isSequential() const override;
bool remove() override;
bool copy(const QString &newName) override;
bool rename(const QString &newName) override;
bool renameOverwrite(const QString &newName) override;
bool rename(const QString &newName) override
{ return rename_helper(newName, Rename); }
bool renameOverwrite(const QString &newName) override
{ return rename_helper(newName, RenameOverwrite); }
bool link(const QString &newName) override;
bool mkdir(const QString &dirName, bool createParentDirectories,
std::optional<QFile::Permissions> permissions) const override;
@ -110,6 +114,10 @@ public:
protected:
QFSFileEngine(QFSFileEnginePrivate &dd);
private:
enum RenameMode : int { Rename, RenameOverwrite };
bool rename_helper(const QString &newName, RenameMode mode);
};
class Q_AUTOTEST_EXPORT QFSFileEnginePrivate : public QAbstractFileEnginePrivate