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/qfilesystemmetadata_p.h | |
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/qfilesystemmetadata_p.h')
-rw-r--r-- | src/corelib/io/qfilesystemmetadata_p.h | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/src/corelib/io/qfilesystemmetadata_p.h b/src/corelib/io/qfilesystemmetadata_p.h index 2f25721bee..3eeb26247f 100644 --- a/src/corelib/io/qfilesystemmetadata_p.h +++ b/src/corelib/io/qfilesystemmetadata_p.h @@ -129,12 +129,13 @@ public: Attributes = HiddenAttribute | SizeAttribute | ExistsAttribute | WasDeletedAttribute, - // Times - CreationTime = 0x01000000, // Note: overlaps with QAbstractFileEngine::Refresh + // Times - if we know one of them, we know them all + AccessTime = 0x02000000, + BirthTime = 0x02000000, + MetadataChangeTime = 0x02000000, ModificationTime = 0x02000000, - AccessTime = 0x04000000, - Times = CreationTime | ModificationTime | AccessTime, + Times = AccessTime | BirthTime | MetadataChangeTime | ModificationTime, // Owner IDs UserId = 0x10000000, @@ -208,9 +209,10 @@ public: QFile::Permissions permissions() const { return QFile::Permissions(Permissions & entryFlags); } - QDateTime creationTime() const; - QDateTime modificationTime() const; QDateTime accessTime() const; + QDateTime birthTime() const; + QDateTime metadataChangeTime() const; + QDateTime modificationTime() const; QDateTime fileTime(QAbstractFileEngine::FileTime time) const; uint userId() const; @@ -240,14 +242,16 @@ private: // Platform-specific data goes here: #if defined(Q_OS_WIN) DWORD fileAttribute_; - FILETIME creationTime_; + FILETIME birthTime_; + FILETIME changeTime_; FILETIME lastAccessTime_; FILETIME lastWriteTime_; #else // msec precision - qint64 creationTime_; - qint64 modificationTime_; qint64 accessTime_; + qint64 birthTime_; + qint64 metadataChangeTime_; + qint64 modificationTime_; uint userId_; uint groupId_; @@ -275,8 +279,11 @@ inline QDateTime QFileSystemMetaData::fileTime(QAbstractFileEngine::FileTime tim case QAbstractFileEngine::AccessTime: return accessTime(); - case QAbstractFileEngine::CreationTime: - return creationTime(); + case QAbstractFileEngine::BirthTime: + return birthTime(); + + case QAbstractFileEngine::MetadataChangeTime: + return metadataChangeTime(); } return QDateTime(); @@ -284,7 +291,9 @@ inline QDateTime QFileSystemMetaData::fileTime(QAbstractFileEngine::FileTime tim #endif #if defined(Q_OS_UNIX) -inline QDateTime QFileSystemMetaData::creationTime() const { return QDateTime::fromMSecsSinceEpoch(creationTime_); } +inline QDateTime QFileSystemMetaData::birthTime() const +{ return birthTime_ ? QDateTime::fromMSecsSinceEpoch(birthTime_) : QDateTime(); } +inline QDateTime QFileSystemMetaData::metadataChangeTime() const { return QDateTime::fromMSecsSinceEpoch(metadataChangeTime_); } inline QDateTime QFileSystemMetaData::modificationTime() const { return QDateTime::fromMSecsSinceEpoch(modificationTime_); } inline QDateTime QFileSystemMetaData::accessTime() const { return QDateTime::fromMSecsSinceEpoch(accessTime_); } @@ -325,9 +334,9 @@ inline void QFileSystemMetaData::fillFromFileAttribute(DWORD fileAttribute,bool inline void QFileSystemMetaData::fillFromFindData(WIN32_FIND_DATA &findData, bool setLinkType, bool isDriveRoot) { fillFromFileAttribute(findData.dwFileAttributes, isDriveRoot); - creationTime_ = findData.ftCreationTime; + birthTime_ = findData.ftCreationTime; lastAccessTime_ = findData.ftLastAccessTime; - lastWriteTime_ = findData.ftLastWriteTime; + changeTime_ = lastWriteTime_ = findData.ftLastWriteTime; if (fileAttribute_ & FILE_ATTRIBUTE_DIRECTORY) { size_ = 0; } else { @@ -350,9 +359,9 @@ inline void QFileSystemMetaData::fillFromFindData(WIN32_FIND_DATA &findData, boo inline void QFileSystemMetaData::fillFromFindInfo(BY_HANDLE_FILE_INFORMATION &fileInfo) { fillFromFileAttribute(fileInfo.dwFileAttributes); - creationTime_ = fileInfo.ftCreationTime; + birthTime_ = fileInfo.ftCreationTime; lastAccessTime_ = fileInfo.ftLastAccessTime; - lastWriteTime_ = fileInfo.ftLastWriteTime; + changeTime_ = lastWriteTime_ = fileInfo.ftLastWriteTime; if (fileAttribute_ & FILE_ATTRIBUTE_DIRECTORY) { size_ = 0; } else { |