summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qfilesystemengine_unix.cpp
diff options
context:
space:
mode:
authorThomas Zander <t.zander@nokia.com>2010-09-23 11:14:01 +0200
committerThomas Zander <t.zander@nokia.com>2010-09-23 17:29:38 +0200
commit52090d6e292c165bfb08140c28068b796e295b10 (patch)
treefbc1fa750b5629ce80bfcd0774767ff4eb228f15 /src/corelib/io/qfilesystemengine_unix.cpp
parentd7df693b54337ea5050391751ae3243cee2f9159 (diff)
Make setPermissions update meta
in the unix QFileSystemEngine::setPermissions we now update the QFileSystemMetaData instance passed in on success, to avoid another stat later. Reviewed-by: João Abecasis
Diffstat (limited to 'src/corelib/io/qfilesystemengine_unix.cpp')
-rw-r--r--src/corelib/io/qfilesystemengine_unix.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp
index e85eb00725..060cf25461 100644
--- a/src/corelib/io/qfilesystemengine_unix.cpp
+++ b/src/corelib/io/qfilesystemengine_unix.cpp
@@ -575,7 +575,13 @@ bool QFileSystemEngine::setPermissions(const QFileSystemEntry &entry, QFile::Per
if (permissions & QFile::ExeOther)
mode |= S_IXOTH;
- return ::chmod(entry.nativeFilePath().constData(), mode) == 0;
+ bool success = ::chmod(entry.nativeFilePath().constData(), mode) == 0;
+ if (success && data) {
+ data->entryFlags &= ~QFileSystemMetaData::Permissions;
+ data->entryFlags |= QFileSystemMetaData::MetaDataFlag(uint(permissions));
+ data->knownFlagsMask |= QFileSystemMetaData::Permissions;
+ }
+ return success;
}
QString QFileSystemEngine::homePath()