diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2017-07-01 22:23:34 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2017-07-06 00:23:53 +0000 |
commit | 48e35e06ca19d9df6f345404e6120d0dcf69101a (patch) | |
tree | 244bb1e410f9cb66d30ecf0ec6368fc31a69c047 /src/corelib/io/qfsfileengine.cpp | |
parent | 8e40050efed8bc5bf262123c59a36f6a47594bab (diff) |
QFSFileEngine: handle refreshing of file times better
Clear the known times when we write to it and always refresh for the
Access time.
Change-Id: I8d96dea9955d4c749b99fffd14cd6c03b4253197
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/corelib/io/qfsfileengine.cpp')
-rw-r--r-- | src/corelib/io/qfsfileengine.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp index 75478f0467..b7f2f0d645 100644 --- a/src/corelib/io/qfsfileengine.cpp +++ b/src/corelib/io/qfsfileengine.cpp @@ -525,6 +525,25 @@ bool QFSFileEngine::seek(qint64 pos) } /*! + \reimp +*/ +QDateTime QFSFileEngine::fileTime(FileTime time) const +{ + Q_D(const QFSFileEngine); + + if (time == AccessTime) { + // always refresh for the access time + d->metaData.clearFlags(QFileSystemMetaData::AccessTime); + } + + if (d->doStat(QFileSystemMetaData::Times)) + return d->metaData.fileTime(time); + + return QDateTime(); +} + + +/*! \internal */ bool QFSFileEnginePrivate::seekFdFh(qint64 pos) @@ -708,6 +727,7 @@ qint64 QFSFileEnginePrivate::readLineFdFh(char *data, qint64 maxlen) qint64 QFSFileEngine::write(const char *data, qint64 len) { Q_D(QFSFileEngine); + d->metaData.clearFlags(QFileSystemMetaData::Times); // On Windows' stdlib implementation, the results of calling fread and // fwrite are undefined if not called either in sequence, or if preceded |