summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qfilesystemengine_win.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2017-07-19 09:47:29 +0200
committerSimon Hausmann <simon.hausmann@qt.io>2017-07-19 09:47:29 +0200
commit407302fb1b823fbe0ae09c031862f87b252489e6 (patch)
treef192faf40b9009ee6a884ed4b7d0b3942b6810ac /src/corelib/io/qfilesystemengine_win.cpp
parent0f30dcaea8129092142fe87d2d14209c75363f66 (diff)
parentad3b41a06d9ba7219c79b5548c5b11698787288d (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: src/corelib/io/qwindowspipewriter.cpp src/widgets/styles/qcommonstyle.cpp Change-Id: I0d33efdc4dc256e234abc490a18ccda72cd1d9e6
Diffstat (limited to 'src/corelib/io/qfilesystemengine_win.cpp')
-rw-r--r--src/corelib/io/qfilesystemengine_win.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp
index 889fbfea7b..eac6519de5 100644
--- a/src/corelib/io/qfilesystemengine_win.cpp
+++ b/src/corelib/io/qfilesystemengine_win.cpp
@@ -561,19 +561,21 @@ typedef struct _FILE_ID_INFO {
// File ID for Windows up to version 7.
static inline QByteArray fileId(HANDLE handle)
{
- QByteArray result;
#ifndef Q_OS_WINRT
BY_HANDLE_FILE_INFORMATION info;
if (GetFileInformationByHandle(handle, &info)) {
- result = QByteArray::number(uint(info.nFileIndexLow), 16);
- result += ':';
- result += QByteArray::number(uint(info.nFileIndexHigh), 16);
+ char buffer[sizeof "01234567:0123456701234567"];
+ qsnprintf(buffer, sizeof(buffer), "%lx:%08lx%08lx",
+ info.dwVolumeSerialNumber,
+ info.nFileIndexHigh,
+ info.nFileIndexLow);
+ return buffer;
}
#else // !Q_OS_WINRT
Q_UNUSED(handle);
Q_UNIMPLEMENTED();
#endif // Q_OS_WINRT
- return result;
+ return QByteArray();
}
// File ID for Windows starting from version 8.
@@ -609,14 +611,20 @@ QByteArray QFileSystemEngine::id(const QFileSystemEntry &entry)
FILE_SHARE_READ, OPEN_EXISTING, NULL);
#endif // Q_OS_WINRT
if (handle != INVALID_HANDLE_VALUE) {
- result = QOperatingSystemVersion::current() >= QOperatingSystemVersion::Windows8 ?
- fileIdWin8(handle) : fileId(handle);
+ result = id(handle);
CloseHandle(handle);
}
return result;
}
//static
+QByteArray QFileSystemEngine::id(HANDLE fHandle)
+{
+ return QOperatingSystemVersion::current() >= QOperatingSystemVersion::Windows8 ?
+ fileIdWin8(HANDLE(fHandle)) : fileId(HANDLE(fHandle));
+}
+
+//static
QString QFileSystemEngine::owner(const QFileSystemEntry &entry, QAbstractFileEngine::FileOwner own)
{
QString name;