summaryrefslogtreecommitdiffstats
path: root/source/kde/kde/patch/ktexteditor
diff options
context:
space:
mode:
Diffstat (limited to 'source/kde/kde/patch/ktexteditor')
-rw-r--r--source/kde/kde/patch/ktexteditor/804e4944.patch104
-rw-r--r--source/kde/kde/patch/ktexteditor/c80f935c.patch55
2 files changed, 159 insertions, 0 deletions
diff --git a/source/kde/kde/patch/ktexteditor/804e4944.patch b/source/kde/kde/patch/ktexteditor/804e4944.patch
new file mode 100644
index 000000000..854cf0da4
--- /dev/null
+++ b/source/kde/kde/patch/ktexteditor/804e4944.patch
@@ -0,0 +1,104 @@
+From 804e49444c093fe58ec0df2ab436565e50dc147e Mon Sep 17 00:00:00 2001
+From: Christoph Cullmann <cullmann@kde.org>
+Date: Thu, 20 Jan 2022 09:46:34 +0100
+Subject: [PATCH] only start programs in user's path
+
+don't use QProcess with just program name
+first search the right program in the user's path
+---
+ src/document/katedocument.cpp | 29 ++++++++++++++++------------
+ src/swapfile/kateswapdiffcreator.cpp | 17 ++++++++++++----
+ 2 files changed, 30 insertions(+), 16 deletions(-)
+
+diff --git a/src/document/katedocument.cpp b/src/document/katedocument.cpp
+index 01f74da1..05d0e91b 100644
+--- a/src/document/katedocument.cpp
++++ b/src/document/katedocument.cpp
+@@ -72,6 +72,7 @@
+ #include <QMimeDatabase>
+ #include <QProcess>
+ #include <QRegularExpression>
++#include <QStandardPaths>
+ #include <QTemporaryFile>
+ #include <QTextCodec>
+ #include <QTextStream>
+@@ -5054,18 +5055,22 @@ void KTextEditor::DocumentPrivate::slotDelayedHandleModOnHd()
+ // skip that, if document is modified!
+ // only do that, if the file is still there, else reload makes no sense!
+ if (m_modOnHd && !isModified() && QFile::exists(url().toLocalFile())) {
+- QProcess git;
+- const QStringList args{QStringLiteral("cat-file"), QStringLiteral("-e"), QString::fromUtf8(oldDigest)};
+- git.start(QStringLiteral("git"), args);
+- if (git.waitForStarted()) {
+- git.closeWriteChannel();
+- if (git.waitForFinished()) {
+- if (git.exitCode() == 0) {
+- // this hash exists still in git => just reload
+- m_modOnHd = false;
+- m_modOnHdReason = OnDiskUnmodified;
+- m_prevModOnHdReason = OnDiskUnmodified;
+- documentReload();
++ // we only want to use git from PATH, cache this
++ static const QString fullGitPath = QStandardPaths::findExecutable(QStringLiteral("git"));
++ if (!fullGitPath.isEmpty()) {
++ QProcess git;
++ const QStringList args{QStringLiteral("cat-file"), QStringLiteral("-e"), QString::fromUtf8(oldDigest)};
++ git.start(fullGitPath, args);
++ if (git.waitForStarted()) {
++ git.closeWriteChannel();
++ if (git.waitForFinished()) {
++ if (git.exitCode() == 0) {
++ // this hash exists still in git => just reload
++ m_modOnHd = false;
++ m_modOnHdReason = OnDiskUnmodified;
++ m_prevModOnHdReason = OnDiskUnmodified;
++ documentReload();
++ }
+ }
+ }
+ }
+diff --git a/src/swapfile/kateswapdiffcreator.cpp b/src/swapfile/kateswapdiffcreator.cpp
+index 5c515c45..a185123a 100644
+--- a/src/swapfile/kateswapdiffcreator.cpp
++++ b/src/swapfile/kateswapdiffcreator.cpp
+@@ -14,6 +14,7 @@
+ #include <KMessageBox>
+
+ #include <QDir>
++#include <QStandardPaths>
+ #include <QTextCodec>
+
+ // BEGIN SwapDiffCreator
+@@ -85,17 +86,25 @@ void SwapDiffCreator::viewDiff()
+ connect(&m_proc, &QProcess::readyRead, this, &SwapDiffCreator::slotDataAvailable, Qt::UniqueConnection);
+ connect(&m_proc, &QProcess::finished, this, &SwapDiffCreator::slotDiffFinished, Qt::UniqueConnection);
+
+- // try to start diff process, if we can't be started be done with error
+- m_proc.start(QStringLiteral("diff"), QStringList() << QStringLiteral("-u") << m_originalFile.fileName() << m_recoveredFile.fileName());
+- if (!m_proc.waitForStarted()) {
++ // use diff from PATH only => inform if not found at all
++ const QString fullDiffPath = QStandardPaths::findExecutable(QStringLiteral("diff"));
++ if (fullDiffPath.isEmpty()) {
+ KMessageBox::sorry(nullptr,
+- i18n("The diff command could not be started. Please make sure that "
++ i18n("The diff command could not be found. Please make sure that "
+ "diff(1) is installed and in your PATH."),
+ i18n("Error Creating Diff"));
+ deleteLater();
+ return;
+ }
+
++ // try to start the diff program, might fail, too
++ m_proc.start(fullDiffPath, QStringList() << QStringLiteral("-u") << m_originalFile.fileName() << m_recoveredFile.fileName());
++ if (!m_proc.waitForStarted()) {
++ KMessageBox::sorry(nullptr, i18n("The diff command '%1' could not be started.").arg(fullDiffPath), i18n("Error Creating Diff"));
++ deleteLater();
++ return;
++ }
++
+ // process is up and running, we can write data to it
+ QTextStream ts(&m_proc);
+ int lineCount = recoverDoc.lines();
+--
+GitLab
+
diff --git a/source/kde/kde/patch/ktexteditor/c80f935c.patch b/source/kde/kde/patch/ktexteditor/c80f935c.patch
new file mode 100644
index 000000000..8cccfe3a9
--- /dev/null
+++ b/source/kde/kde/patch/ktexteditor/c80f935c.patch
@@ -0,0 +1,55 @@
+From c80f935c345de2e2fb10635202800839ca9697bf Mon Sep 17 00:00:00 2001
+From: Christoph Cullmann <cullmann@kde.org>
+Date: Thu, 20 Jan 2022 10:30:20 +0100
+Subject: [PATCH] only execute diff in path
+
+---
+ src/dialogs/katedialogs.cpp | 5 +++--
+ src/dialogs/katedialogs.h | 1 +
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/dialogs/katedialogs.cpp b/src/dialogs/katedialogs.cpp
+index 5b949f36..63a58aee 100644
+--- a/src/dialogs/katedialogs.cpp
++++ b/src/dialogs/katedialogs.cpp
+@@ -1317,6 +1317,7 @@ KateModOnHdPrompt::KateModOnHdPrompt(KTextEditor::DocumentPrivate *doc, KTextEdi
+ : QObject(doc)
+ , m_doc(doc)
+ , m_modtype(modtype)
++ , m_fullDiffPath(QStandardPaths::findExecutable(QStringLiteral("diff")))
+ , m_proc(nullptr)
+ , m_diffFile(nullptr)
+ , m_diffAction(nullptr)
+@@ -1334,7 +1335,7 @@ KateModOnHdPrompt::KateModOnHdPrompt(KTextEditor::DocumentPrivate *doc, KTextEdi
+ m_message->addAction(aAutoReload, false);
+ connect(aAutoReload, &QAction::triggered, this, &KateModOnHdPrompt::autoReloadTriggered);
+
+- if (!QStandardPaths::findExecutable(QStringLiteral("diff")).isEmpty()) {
++ if (!m_fullDiffPath.isEmpty()) {
+ m_diffAction = new QAction(i18n("View &Difference"), this);
+ m_diffAction->setIcon(QIcon::fromTheme(QStringLiteral("document-multiple")));
+ m_diffAction->setToolTip(i18n("Shows a diff of the changes"));
+@@ -1394,7 +1395,7 @@ void KateModOnHdPrompt::slotDiff()
+ // Start a KProcess that creates a diff
+ m_proc = new KProcess(this);
+ m_proc->setOutputChannelMode(KProcess::MergedChannels);
+- *m_proc << QStringLiteral("diff") << QStringLiteral("-u") << QStringLiteral("-") << m_doc->url().toLocalFile();
++ *m_proc << m_fullDiffPath << QStringLiteral("-u") << QStringLiteral("-") << m_doc->url().toLocalFile();
+ connect(m_proc, &KProcess::readyRead, this, &KateModOnHdPrompt::slotDataAvailable);
+ connect(m_proc, &KProcess::finished, this, &KateModOnHdPrompt::slotPDone);
+
+diff --git a/src/dialogs/katedialogs.h b/src/dialogs/katedialogs.h
+index 80b611d9..e5574023 100644
+--- a/src/dialogs/katedialogs.h
++++ b/src/dialogs/katedialogs.h
+@@ -376,6 +376,7 @@ private:
+ KTextEditor::DocumentPrivate *m_doc;
+ QPointer<KTextEditor::Message> m_message;
+ KTextEditor::ModificationInterface::ModifiedOnDiskReason m_modtype;
++ QString m_fullDiffPath;
+ KProcess *m_proc;
+ QTemporaryFile *m_diffFile;
+ QAction *m_diffAction;
+--
+GitLab
+