diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2016-07-23 11:14:57 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2017-08-05 16:41:38 +0000 |
commit | 6c3a3d498a8797c481a394418fff8f7bf1886c61 (patch) | |
tree | b64407f2b2520d46b42f96495c41600aaae03d3c /src/corelib/io/qfilesystemengine_win.cpp | |
parent | db433bdf65e011e64be51948e79abc02034dddbf (diff) |
Filesystem: Use "birth time" to avoid confusion with Unix ctime
The Unix stat fields "st_ctime" and "st_ctim" mean "change time", the
last time that the file/inode status fields were changed. It does not
mean "creation time". So this commit splits all of the internal API to
"birth" and "metadata change" instead of "creation" to avoid the
conflict.
Change-Id: I149e0540c00745fe8119fffd1463fe78b619649e
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/corelib/io/qfilesystemengine_win.cpp')
-rw-r--r-- | src/corelib/io/qfilesystemengine_win.cpp | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp index 5796b1ba66..e171de9e9f 100644 --- a/src/corelib/io/qfilesystemengine_win.cpp +++ b/src/corelib/io/qfilesystemengine_win.cpp @@ -412,7 +412,8 @@ void QFileSystemEngine::clearWinStatData(QFileSystemMetaData &data) { data.size_ = 0; data.fileAttribute_ = 0; - data.creationTime_ = FILETIME(); + data.birthTime_ = FILETIME(); + data.changeTime_ = FILETIME(); data.lastAccessTime_ = FILETIME(); data.lastWriteTime_ = FILETIME(); } @@ -610,7 +611,7 @@ bool QFileSystemEngine::setFileTime(HANDLE fHandle, const QDateTime &newDate, pLastAccess = &fTime; break; - case QAbstractFileEngine::CreationTime: + case QAbstractFileEngine::BirthTime: pCreationTime = &fTime; break; @@ -889,8 +890,10 @@ bool QFileSystemEngine::fillMetaData(HANDLE fHandle, QFileSystemMetaData &data, FILE_BASIC_INFO fileBasicInfo; if (GetFileInformationByHandleEx(fHandle, FileBasicInfo, &fileBasicInfo, sizeof(fileBasicInfo))) { data.fillFromFileAttribute(fileBasicInfo.FileAttributes); - data.creationTime_.dwHighDateTime = fileBasicInfo.CreationTime.HighPart; - data.creationTime_.dwLowDateTime = fileBasicInfo.CreationTime.LowPart; + data.birthTime_.dwHighDateTime = fileBasicInfo.CreationTime.HighPart; + data.birthTime_.dwLowDateTime = fileBasicInfo.CreationTime.LowPart; + data.changeTime_.dwHighDateTime = fileBasicInfo.ChangeTime.HighPart; + data.changeTime_.dwLowDateTime = fileBasicInfo.ChangeTime.LowPart; data.lastAccessTime_.dwHighDateTime = fileBasicInfo.LastAccessTime.HighPart; data.lastAccessTime_.dwLowDateTime = fileBasicInfo.LastAccessTime.LowPart; data.lastWriteTime_.dwHighDateTime = fileBasicInfo.LastWriteTime.HighPart; @@ -1347,6 +1350,9 @@ bool QFileSystemEngine::setPermissions(const QFileSystemEntry &entry, QFile::Per static inline QDateTime fileTimeToQDateTime(const FILETIME *time) { + if (time->dwHighDateTime == 0 && time->dwLowDateTime == 0) + return QDateTime(); + SYSTEMTIME sTime; FileTimeToSystemTime(time, &sTime); return QDateTime(QDate(sTime.wYear, sTime.wMonth, sTime.wDay), @@ -1354,9 +1360,13 @@ static inline QDateTime fileTimeToQDateTime(const FILETIME *time) Qt::UTC); } -QDateTime QFileSystemMetaData::creationTime() const +QDateTime QFileSystemMetaData::birthTime() const +{ + return fileTimeToQDateTime(&birthTime_); +} +QDateTime QFileSystemMetaData::metadataChangeTime() const { - return fileTimeToQDateTime(&creationTime_); + return fileTimeToQDateTime(&changeTime_); } QDateTime QFileSystemMetaData::modificationTime() const { |