diff options
author | Ritt Konstantin <ritt.ks@gmail.com> | 2010-01-26 16:26:50 (GMT) |
---|---|---|
committer | João Abecasis <joao@trolltech.com> | 2010-01-26 16:26:50 (GMT) |
commit | 3c8ac0ee7f09bbef4dc56a05de538df1aa16a596 (patch) | |
tree | 4a2ee8e89172a1e627816ad8143ac0bbc9fe01f1 /src/corelib/io/qfileinfo.cpp | |
parent | fbd0b8c0f6dce834b241f6beb755d2c2cb013305 (diff) | |
download | Qt-3c8ac0ee7f09bbef4dc56a05de538df1aa16a596.zip Qt-3c8ac0ee7f09bbef4dc56a05de538df1aa16a596.tar.gz Qt-3c8ac0ee7f09bbef4dc56a05de538df1aa16a596.tar.bz2 |
QFileInfo: Implement additional caching of FileOwner strings
Reduce overhead of the uid/gid to user/group name conversion by caching
results from QAbstractFileEngine::owner().
Merge-request: 446
Reviewed-by: João Abecasis <joao@trolltech.com>
Diffstat (limited to 'src/corelib/io/qfileinfo.cpp')
-rw-r--r-- | src/corelib/io/qfileinfo.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/corelib/io/qfileinfo.cpp b/src/corelib/io/qfileinfo.cpp index f4e92a5..d827f57 100644 --- a/src/corelib/io/qfileinfo.cpp +++ b/src/corelib/io/qfileinfo.cpp @@ -137,6 +137,18 @@ QString QFileInfoPrivate::getFileName(QAbstractFileEngine::FileName name) const return ret; } +QString QFileInfoPrivate::getFileOwner(QAbstractFileEngine::FileOwner own) const +{ + if (data->cache_enabled && !data->fileOwners[(int)own].isNull()) + return data->fileOwners[(int)own]; + QString ret = data->fileEngine->owner(own); + if (ret.isNull()) + ret = QLatin1String(""); + if (data->cache_enabled) + data->fileOwners[(int)own] = ret; + return ret; +} + uint QFileInfoPrivate::getFileFlags(QAbstractFileEngine::FileFlags request) const { // We split the testing into tests for for LinkType, BundleType, PermsMask @@ -1089,7 +1101,7 @@ QString QFileInfo::owner() const Q_D(const QFileInfo); if(!d->data->fileEngine) return QLatin1String(""); - return d->data->fileEngine->owner(QAbstractFileEngine::OwnerUser); + return d->getFileOwner(QAbstractFileEngine::OwnerUser); } /*! @@ -1125,7 +1137,7 @@ QString QFileInfo::group() const Q_D(const QFileInfo); if(!d->data->fileEngine) return QLatin1String(""); - return d->data->fileEngine->owner(QAbstractFileEngine::OwnerGroup); + return d->getFileOwner(QAbstractFileEngine::OwnerGroup); } /*! |