diff options
Diffstat (limited to 'rbutil/rbutilqt/quazip/quazipnewinfo.cpp')
-rw-r--r-- | rbutil/rbutilqt/quazip/quazipnewinfo.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/rbutil/rbutilqt/quazip/quazipnewinfo.cpp b/rbutil/rbutilqt/quazip/quazipnewinfo.cpp index 02e01da9c5..98630e086a 100644 --- a/rbutil/rbutilqt/quazip/quazipnewinfo.cpp +++ b/rbutil/rbutilqt/quazip/quazipnewinfo.cpp | |||
@@ -22,16 +22,25 @@ Original ZIP package is copyrighted by Gilles Vollant and contributors, | |||
22 | see quazip/(un)zip.h files for details. Basically it's the zlib license. | 22 | see quazip/(un)zip.h files for details. Basically it's the zlib license. |
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include <QFileInfo> | 25 | #include <QtCore/QFileInfo> |
26 | 26 | ||
27 | #include "quazipnewinfo.h" | 27 | #include "quazipnewinfo.h" |
28 | 28 | ||
29 | #include <string.h> | 29 | #include <string.h> |
30 | 30 | ||
31 | static void QuaZipNewInfo_setPermissions(QuaZipNewInfo *info, | 31 | static void QuaZipNewInfo_setPermissions(QuaZipNewInfo *info, |
32 | QFile::Permissions perm, bool isDir) | 32 | QFile::Permissions perm, bool isDir, bool isSymLink = false) |
33 | { | 33 | { |
34 | quint32 uPerm = isDir ? 0040000 : 0100000; | 34 | quint32 uPerm = isDir ? 0040000 : 0100000; |
35 | |||
36 | if ( isSymLink ) { | ||
37 | #ifdef Q_OS_WIN | ||
38 | uPerm = 0200000; | ||
39 | #else | ||
40 | uPerm = 0120000; | ||
41 | #endif | ||
42 | } | ||
43 | |||
35 | if ((perm & QFile::ReadOwner) != 0) | 44 | if ((perm & QFile::ReadOwner) != 0) |
36 | uPerm |= 0400; | 45 | uPerm |= 0400; |
37 | if ((perm & QFile::WriteOwner) != 0) | 46 | if ((perm & QFile::WriteOwner) != 0) |
@@ -91,7 +100,7 @@ QuaZipNewInfo::QuaZipNewInfo(const QString& name, const QString& file): | |||
91 | dateTime = QDateTime::currentDateTime(); | 100 | dateTime = QDateTime::currentDateTime(); |
92 | } else { | 101 | } else { |
93 | dateTime = lm; | 102 | dateTime = lm; |
94 | QuaZipNewInfo_setPermissions(this, info.permissions(), info.isDir()); | 103 | QuaZipNewInfo_setPermissions(this, info.permissions(), info.isDir(), info.isSymLink()); |
95 | } | 104 | } |
96 | } | 105 | } |
97 | 106 | ||
@@ -107,12 +116,12 @@ void QuaZipNewInfo::setFilePermissions(const QString &file) | |||
107 | { | 116 | { |
108 | QFileInfo info = QFileInfo(file); | 117 | QFileInfo info = QFileInfo(file); |
109 | QFile::Permissions perm = info.permissions(); | 118 | QFile::Permissions perm = info.permissions(); |
110 | QuaZipNewInfo_setPermissions(this, perm, info.isDir()); | 119 | QuaZipNewInfo_setPermissions(this, perm, info.isDir(), info.isSymLink()); |
111 | } | 120 | } |
112 | 121 | ||
113 | void QuaZipNewInfo::setPermissions(QFile::Permissions permissions) | 122 | void QuaZipNewInfo::setPermissions(QFile::Permissions permissions) |
114 | { | 123 | { |
115 | QuaZipNewInfo_setPermissions(this, permissions, name.endsWith('/')); | 124 | QuaZipNewInfo_setPermissions(this, permissions, name.endsWith(QLatin1String("/"))); |
116 | } | 125 | } |
117 | 126 | ||
118 | void QuaZipNewInfo::setFileNTFSTimes(const QString &fileName) | 127 | void QuaZipNewInfo::setFileNTFSTimes(const QString &fileName) |
@@ -125,7 +134,11 @@ void QuaZipNewInfo::setFileNTFSTimes(const QString &fileName) | |||
125 | } | 134 | } |
126 | setFileNTFSmTime(fi.lastModified()); | 135 | setFileNTFSmTime(fi.lastModified()); |
127 | setFileNTFSaTime(fi.lastRead()); | 136 | setFileNTFSaTime(fi.lastRead()); |
137 | #if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) | ||
138 | setFileNTFScTime(fi.birthTime()); | ||
139 | #else | ||
128 | setFileNTFScTime(fi.created()); | 140 | setFileNTFScTime(fi.created()); |
141 | #endif | ||
129 | } | 142 | } |
130 | 143 | ||
131 | static void setNTFSTime(QByteArray &extra, const QDateTime &time, int position, | 144 | static void setNTFSTime(QByteArray &extra, const QDateTime &time, int position, |