forked from qt-creator/qt-creator
		
	Fix check if example location is writable on Windows
The normal permission check done by QFileInfo is not sufficient in many cases. Task-number: QTCREATORBUG-18184 Change-Id: Icab92c592e6d3c8610304e0b987eded6142f4ab3 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
		| @@ -49,6 +49,11 @@ class QWidget; | ||||
|  | ||||
| QTCREATOR_UTILS_EXPORT QDebug operator<<(QDebug dbg, const Utils::FileName &c); | ||||
|  | ||||
| // for withNTFSPermissions | ||||
| #ifdef Q_OS_WIN | ||||
| extern Q_CORE_EXPORT int qt_ntfs_permission_lookup; | ||||
| #endif | ||||
|  | ||||
| QT_END_NAMESPACE | ||||
|  | ||||
| namespace Utils { | ||||
| @@ -121,6 +126,28 @@ public: | ||||
|     static QString resolvePath(const QString &baseDir, const QString &fileName); | ||||
| }; | ||||
|  | ||||
| // for actually finding out if e.g. directories are writable on Windows | ||||
| #ifdef Q_OS_WIN | ||||
|  | ||||
| template <typename T> | ||||
| static T withNTFSPermissions(const std::function<T()> &task) | ||||
| { | ||||
|     qt_ntfs_permission_lookup++; | ||||
|     T result = task(); | ||||
|     qt_ntfs_permission_lookup--; | ||||
|     return result; | ||||
| } | ||||
|  | ||||
| #else // Q_OS_WIN | ||||
|  | ||||
| template <typename T> | ||||
| static T withNTFSPermissions(const std::function<T()> &task) | ||||
| { | ||||
|     return task(); | ||||
| } | ||||
|  | ||||
| #endif // Q_OS_WIN | ||||
|  | ||||
| class QTCREATOR_UTILS_EXPORT FileReader | ||||
| { | ||||
|     Q_DECLARE_TR_FUNCTIONS(Utils::FileUtils) // sic! | ||||
|   | ||||
		Reference in New Issue
	
	Block a user