static QFile methods optimizations

the QFile::remove() and QFile::rename() methods are used a lot (e.g. to
remove or move temporary files) so the optimization will be noticable

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-12-21 22:48:20 +02:00
parent a3effd891b
commit 2425b8d4b4

View file

@ -485,7 +485,6 @@ QString QFile::readLink() const
}
/*!
\fn static QString QFile::readLink(const QString &fileName)
\since 4.2
Returns the absolute path of the file or directory referred to by the
@ -497,6 +496,7 @@ QString QFile::readLink() const
*/
QString QFile::readLink(const QString &fileName)
{
// ###: static QFileSystemEngine method for this
return QFileInfo(fileName).readLink();
}
@ -542,7 +542,8 @@ bool QFile::remove()
*/
bool QFile::remove(const QString &fileName)
{
return QFile(fileName).remove();
int error = 0;
return QFileSystemEngine::removeFile(QFileSystemEntry(fileName), &error);
}
/*!
@ -564,7 +565,7 @@ bool QFile::rename(const QString &newName)
return false;
}
#ifndef QT_HAVE_RENAMEAT2
if (QFile(newName).exists()) {
if (QFile::exists(newName)) {
// ### Race condition. If a file is moved in after this, it /will/ be
// overwritten. On Unix, the proper solution is to use hardlinks:
// return ::link(old, new) && ::remove(old);
@ -607,7 +608,13 @@ bool QFile::rename(const QString &newName)
*/
bool QFile::rename(const QString &oldName, const QString &newName)
{
return QFile(oldName).rename(newName);
#ifndef QT_HAVE_RENAMEAT2
if (QFile::exists(newName)) {
return false;
}
#endif
int error = 0;
return QFileSystemEngine::renameFile(QFileSystemEntry(oldName), QFileSystemEntry(newName), &error);
}
/*!
@ -655,7 +662,8 @@ bool QFile::link(const QString &linkName)
*/
bool QFile::link(const QString &fileName, const QString &linkName)
{
return QFile(fileName).link(linkName);
int error = 0;
return QFileSystemEngine::createLink(QFileSystemEntry(fileName), QFileSystemEntry(linkName), &error);
}
/*!
@ -703,7 +711,8 @@ bool QFile::copy(const QString &newName)
*/
bool QFile::copy(const QString &fileName, const QString &newName)
{
return QFile(fileName).copy(newName);
int error = 0;
return QFileSystemEngine::copyFile(QFileSystemEntry(fileName), QFileSystemEntry(newName), &error);
}
/*!
@ -980,8 +989,9 @@ bool QFile::open(int fd, OpenMode mode, FileHandleFlags handleFlags)
int QFile::handle() const
{
Q_D(const QFile);
if (!isOpen())
if (!isOpen()) {
return -1;
}
return d->fd;
}
@ -1040,6 +1050,7 @@ bool QFile::resize(qint64 sz)
*/
bool QFile::resize(const QString &fileName, qint64 sz)
{
// ###: static QFileSystemEngine method for this
return QFile(fileName).resize(sz);
}
@ -1066,6 +1077,7 @@ QFile::Permissions QFile::permissions() const
*/
QFile::Permissions QFile::permissions(const QString &fileName)
{
// ###: static QFileSystemEngine method for this
return QFile(fileName).permissions();
}
@ -1080,7 +1092,7 @@ bool QFile::setPermissions(Permissions permissions)
{
Q_D(QFile);
int error = 0;
if (!QFileSystemEngine::setPermissions(d->fileEntry, QFile::Permissions(permissions), &error)) {
if (!QFileSystemEngine::setPermissions(d->fileEntry, permissions, &error)) {
d->setError(QFile::PermissionsError, qt_error_string(error));
return false;
}
@ -1095,7 +1107,8 @@ bool QFile::setPermissions(Permissions permissions)
*/
bool QFile::setPermissions(const QString &fileName, Permissions permissions)
{
return QFile(fileName).setPermissions(permissions);
int error = 0;
return QFileSystemEngine::setPermissions(QFileSystemEntry(fileName), permissions, &error);
}
/*!