File 0006-Fix-finding-install-prefix.patch of Package mingw32-kinit
From 83e78145faff99c17d43ec94aea5dab52ebe0a23 Mon Sep 17 00:00:00 2001
From: Ralf Habacker <ralf.habacker@freenet.de>
Date: Thu, 22 Jul 2021 17:06:30 +0200
Subject: [PATCH 06/18] Fix finding install prefix
QLibraryInfo::location(QLibraryInfo::PrefixPath) did not works as expected
and returns '/', although a qt.conf file has been used.
---
src/kdeinit/kinit_win.cpp | 27 ++++++++++++++++++++++-----
1 file changed, 22 insertions(+), 5 deletions(-)
diff --git a/src/kdeinit/kinit_win.cpp b/src/kdeinit/kinit_win.cpp
index 79e620b..f799f26 100644
--- a/src/kdeinit/kinit_win.cpp
+++ b/src/kdeinit/kinit_win.cpp
@@ -192,7 +192,24 @@ static PSID getCurrentProcessOwner()
static QString installRoot()
{
- return QLibraryInfo::location(QLibraryInfo::PrefixPath);
+ char spath[MAX_PATH*2];
+ HMODULE hm = NULL;
+
+ if (GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |
+ GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
+ (LPCSTR) &installRoot, &hm) == 0)
+ {
+ return QString(CMAKE_INSTALL_PREFIX);
+ }
+ if (GetModuleFileNameA(hm, spath, sizeof(spath)) == 0)
+ {
+ return QString(CMAKE_INSTALL_PREFIX);
+ }
+ QString path = QString(spath).toLower();
+ int index = path.lastIndexOf(QLatin1String("\\bin\\"));
+ if (index > -1)
+ path = path.left(index);
+ return path;
}
/**
@@ -204,7 +221,7 @@ public:
ProcessListEntry(HANDLE _handle, QString _path, int _pid, PSID _owner = 0)
{
QFileInfo p(_path);
- path = p.absolutePath();
+ path = p.absolutePath().replace("/", "\\").toLower();
name = p.baseName();
handle = _handle;
pid = _pid;
@@ -346,7 +363,7 @@ ProcessListEntry *ProcessList::find(const QString &name)
continue;
}
- if (!ple->path.isEmpty() && !ple->path.toLower().startsWith(installPrefix.toLower())) {
+ if (!ple->path.isEmpty() && !ple->path.startsWith(installPrefix)) {
// process is outside of installation directory
qDebug() << "path of the process" << name << "seems to be outside of the installPath:" << ple->path << installPrefix;
continue;
@@ -432,7 +449,7 @@ void listAllRunningKDEProcesses(ProcessList &processList)
const auto list = processList.list();
for (const ProcessListEntry *ple : list) {
- if (!ple->path.isEmpty() && ple->path.toLower().startsWith(installPrefix.toLower())) {
+ if (!ple->path.isEmpty() && ple->path.startsWith(installPrefix)) {
fprintf(stderr, "path: %s name: %s pid: %u\n", ple->path.toLatin1().data(), ple->name.toLatin1().data(), ple->pid);
}
}
@@ -444,7 +461,7 @@ void terminateAllRunningKDEProcesses(ProcessList &processList)
const auto list = processList.list();
for (const ProcessListEntry *ple : list) {
- if (!ple->path.isEmpty() && ple->path.toLower().startsWith(installPrefix.toLower())) {
+ if (!ple->path.isEmpty() && ple->path.startsWith(installPrefix)) {
if (verbose) {
fprintf(stderr, "terminating path: %s name: %s pid: %u\n", ple->path.toLatin1().data(), ple->name.toLatin1().data(), ple->pid);
}
--
2.26.2