diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-04-09 01:00:06 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-04-09 01:00:06 +0200 |
commit | 93acb76222f8cfedc46cedc428a42d164c3c0f02 (patch) | |
tree | e4400085802f907b7b7c8fb09171036875128164 /qmake | |
parent | ce7f14d2e0791acc92622fdc23886a06d6712e90 (diff) | |
parent | a02a2a1e73206b3955438b38bb9311067ef04794 (diff) |
Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I05d14a40e17554691bad369d0363e88413afd9b3
Diffstat (limited to 'qmake')
-rw-r--r-- | qmake/main.cpp | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/qmake/main.cpp b/qmake/main.cpp index e5f7032554..a4ef79227b 100644 --- a/qmake/main.cpp +++ b/qmake/main.cpp @@ -260,25 +260,31 @@ static int installFile(const QString &source, const QString &target, bool exe = return 3; } - QFileDevice::Permissions targetPermissions = QFileDevice::ReadOwner | QFileDevice::WriteOwner - | QFileDevice::ReadUser | QFileDevice::WriteUser - | QFileDevice::ReadGroup | QFileDevice::ReadOther; if (exe) { - targetPermissions |= QFileDevice::ExeOwner | QFileDevice::ExeUser | - QFileDevice::ExeGroup | QFileDevice::ExeOther; - } - if (!targetFile.setPermissions(targetPermissions)) { - fprintf(stderr, "Error setting permissions on %s: %s\n", - qPrintable(target), qPrintable(targetFile.errorString())); - return 3; + if (!targetFile.setPermissions(sourceFile.permissions() | QFileDevice::ExeOwner | QFileDevice::ExeUser | + QFileDevice::ExeGroup | QFileDevice::ExeOther)) { + fprintf(stderr, "Error setting execute permissions on %s: %s\n", + qPrintable(target), qPrintable(targetFile.errorString())); + return 3; + } } // Copy file times QString error; +#ifdef Q_OS_WIN + const QFile::Permissions permissions = targetFile.permissions(); + const bool readOnly = !(permissions & QFile::WriteUser); + if (readOnly) + targetFile.setPermissions(permissions | QFile::WriteUser); +#endif if (!IoUtils::touchFile(target, sourceFile.fileName(), &error)) { fprintf(stderr, "%s", qPrintable(error)); return 3; } +#ifdef Q_OS_WIN + if (readOnly) + targetFile.setPermissions(permissions); +#endif return 0; } |