summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qfilesystemengine_unix.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/io/qfilesystemengine_unix.cpp')
-rw-r--r--src/corelib/io/qfilesystemengine_unix.cpp28
1 files changed, 9 insertions, 19 deletions
diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp
index 9fb3855472..52512c5e13 100644
--- a/src/corelib/io/qfilesystemengine_unix.cpp
+++ b/src/corelib/io/qfilesystemengine_unix.cpp
@@ -412,8 +412,11 @@ bool QFileSystemEngine::fillMetaData(int fd, QFileSystemMetaData &data)
int ret = qt_fstatx(fd, &statxBuffer);
if (ret != -ENOSYS) {
- data.fillFromStatxBuf(statxBuffer);
- return ret == 0;
+ if (ret == 0) {
+ data.fillFromStatxBuf(statxBuffer);
+ return true;
+ }
+ return false;
}
if (QT_FSTAT(fd, &statBuffer) == 0) {
@@ -635,13 +638,8 @@ QFileSystemEntry QFileSystemEngine::getLinkTarget(const QFileSystemEntry &link,
}
ret += QFile::decodeName(s);
- if (!ret.startsWith(QLatin1Char('/'))) {
- const QString linkPath = link.path();
- if (linkPath.startsWith(QLatin1Char('/')))
- ret.prepend(linkPath + QLatin1Char('/'));
- else
- ret.prepend(QDir::currentPath() + QLatin1Char('/') + linkPath + QLatin1Char('/'));
- }
+ if (!ret.startsWith(QLatin1Char('/')))
+ ret.prepend(absoluteName(link).path() + QLatin1Char('/'));
ret = QDir::cleanPath(ret);
if (ret.size() > 1 && ret.endsWith(QLatin1Char('/')))
ret.chop(1);
@@ -1234,11 +1232,7 @@ bool QFileSystemEngine::createLink(const QFileSystemEntry &source, const QFileSy
bool QFileSystemEngine::copyFile(const QFileSystemEntry &source, const QFileSystemEntry &target, QSystemError &error)
{
#if QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(101200, 100000, 100000, 30000)
- const auto current = QOperatingSystemVersion::current();
- if (current >= QOperatingSystemVersion::MacOSSierra ||
- current >= QOperatingSystemVersion(QOperatingSystemVersion::IOS, 10) ||
- current >= QOperatingSystemVersion(QOperatingSystemVersion::TvOS, 10) ||
- current >= QOperatingSystemVersion(QOperatingSystemVersion::WatchOS, 3)) {
+ if (__builtin_available(macOS 10.12, iOS 10, tvOS 10, watchOS 3, *)) {
if (::clonefile(source.nativeFilePath().constData(),
target.nativeFilePath().constData(), 0) == 0)
return true;
@@ -1273,11 +1267,7 @@ bool QFileSystemEngine::renameFile(const QFileSystemEntry &source, const QFileSy
}
#endif
#if defined(Q_OS_DARWIN) && defined(RENAME_EXCL)
- const auto current = QOperatingSystemVersion::current();
- if (current >= QOperatingSystemVersion::MacOSSierra ||
- current >= QOperatingSystemVersion(QOperatingSystemVersion::IOS, 10) ||
- current >= QOperatingSystemVersion(QOperatingSystemVersion::TvOS, 10) ||
- current >= QOperatingSystemVersion(QOperatingSystemVersion::WatchOS, 3)) {
+ if (__builtin_available(macOS 10.12, iOS 10, tvOS 10, watchOS 3, *)) {
if (renameatx_np(AT_FDCWD, srcPath, AT_FDCWD, tgtPath, RENAME_EXCL) == 0)
return true;
if (errno != ENOTSUP) {