Hello community,

here is the log from the commit of package kcoreaddons for openSUSE:Factory 
checked in at 2019-06-22 11:09:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kcoreaddons (Old)
 and      /work/SRC/openSUSE:Factory/.kcoreaddons.new.4615 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kcoreaddons"

Sat Jun 22 11:09:05 2019 rev:70 rq:710726 version:5.59.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kcoreaddons/kcoreaddons.changes  2019-05-21 
10:26:10.215534199 +0200
+++ /work/SRC/openSUSE:Factory/.kcoreaddons.new.4615/kcoreaddons.changes        
2019-06-22 11:10:13.640412092 +0200
@@ -1,0 +2,14 @@
+Sun Jun 09 07:35:11 UTC 2019 - [email protected]
+
+- Update to 5.59.0
+  * New feature release
+  * For more details please see:
+  * https://www.kde.org/announcements/kde-frameworks-5.59.0.php
+- Changes since 5.58.0:
+  * Fix compliation for python bindings (kde#407306)
+  * Avoid method name clash in windows KProcessList backend
+  * Add namespace to windows kprocesslist clas
+  * Fix windows KProcessList return type
+  * Add GetProcessList for retrieving the list of currently active processes
+
+-------------------------------------------------------------------

Old:
----
  kcoreaddons-5.58.0.tar.xz

New:
----
  kcoreaddons-5.59.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kcoreaddons.spec ++++++
--- /var/tmp/diff_new_pack.fiPE1D/_old  2019-06-22 11:10:15.384414662 +0200
+++ /var/tmp/diff_new_pack.fiPE1D/_new  2019-06-22 11:10:15.416414709 +0200
@@ -17,14 +17,14 @@
 
 
 %define lname   libKF5CoreAddons5
-%define _tar_path 5.58
+%define _tar_path 5.59
 # Full KF5 version (e.g. 5.33.0)
 %{!?_kf5_version: %global _kf5_version %{version}}
 # Last major and minor KF5 version (e.g. 5.33)
 %{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | 
awk -F. '{print $1"."$2}')}
 %bcond_without lang
 Name:           kcoreaddons
-Version:        5.58.0
+Version:        5.59.0
 Release:        0
 Summary:        Utilities for core application functionality and accessing the 
OS
 License:        LGPL-2.1-or-later

++++++ kcoreaddons-5.58.0.tar.xz -> kcoreaddons-5.59.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcoreaddons-5.58.0/CMakeLists.txt 
new/kcoreaddons-5.59.0/CMakeLists.txt
--- old/kcoreaddons-5.58.0/CMakeLists.txt       2019-05-08 10:27:20.000000000 
+0200
+++ new/kcoreaddons-5.59.0/CMakeLists.txt       2019-06-01 18:53:54.000000000 
+0200
@@ -1,10 +1,10 @@
 cmake_minimum_required(VERSION 3.5)
 
-set(KF5_VERSION "5.58.0") # handled by release scripts
+set(KF5_VERSION "5.59.0") # handled by release scripts
 project(KCoreAddons VERSION ${KF5_VERSION})
 
 include(FeatureSummary)
-find_package(ECM 5.58.0  NO_MODULE)
+find_package(ECM 5.59.0  NO_MODULE)
 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake 
Modules." URL 
"https://projects.kde.org/projects/kdesupport/extra-cmake-modules";)
 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcoreaddons-5.58.0/autotests/CMakeLists.txt 
new/kcoreaddons-5.59.0/autotests/CMakeLists.txt
--- old/kcoreaddons-5.58.0/autotests/CMakeLists.txt     2019-05-08 
10:27:20.000000000 +0200
+++ new/kcoreaddons-5.59.0/autotests/CMakeLists.txt     2019-06-01 
18:53:54.000000000 +0200
@@ -49,6 +49,7 @@
     kusertest.cpp
     kdelibs4migrationtest.cpp
     kdelibs4configmigratortest.cpp
+    kprocesslisttest.cpp
     LINK_LIBRARIES Qt5::Test KF5::CoreAddons
 )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcoreaddons-5.58.0/autotests/kprocesslisttest.cpp 
new/kcoreaddons-5.59.0/autotests/kprocesslisttest.cpp
--- old/kcoreaddons-5.58.0/autotests/kprocesslisttest.cpp       1970-01-01 
01:00:00.000000000 +0100
+++ new/kcoreaddons-5.59.0/autotests/kprocesslisttest.cpp       2019-06-01 
18:53:54.000000000 +0200
@@ -0,0 +1,94 @@
+/*
+ *  This file is part of the KDE project
+ *  Copyright (C) 2019 David Hallas <[email protected]>
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Library General Public
+ *  License version 2 as published by the Free Software Foundation.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Library General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Library General Public License
+ *  along with this library; see the file COPYING.LIB.  If not, write to
+ *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ *  Boston, MA 02110-1301, USA.
+*/
+
+#include "kprocesslisttest.h"
+#include "kprocesslist.h"
+#include "kuser.h"
+#include <QCoreApplication>
+#include <QTest>
+#include <algorithm>
+
+namespace {
+
+QString getTestExeName()
+{
+    static QString testExeName = 
QCoreApplication::instance()->applicationFilePath().section(QLatin1Char('/'), 
-1);
+    return testExeName;
+}
+
+}
+
+QTEST_MAIN(KProcessListTest)
+
+void KProcessListTest::testKProcessInfoConstructionAssignment()
+{
+    KProcessList::KProcessInfo processInfoDefaultConstructed;
+    QVERIFY(processInfoDefaultConstructed.isValid() == false);
+    const qint64 pid(42);
+    const QString name(QStringLiteral("/bin/some_exe"));
+    const QString user(QStringLiteral("some_user"));
+    KProcessList::KProcessInfo processInfo(pid, name, user);
+    QVERIFY(processInfo.isValid() == true);
+    QCOMPARE(processInfo.pid(), pid);
+    QCOMPARE(processInfo.name(), name);
+    QCOMPARE(processInfo.user(), user);
+    KProcessList::KProcessInfo processInfoCopy(processInfo);
+    QVERIFY(processInfoCopy.isValid() == true);
+    QCOMPARE(processInfoCopy.pid(), pid);
+    QCOMPARE(processInfoCopy.name(), name);
+    QCOMPARE(processInfoCopy.user(), user);
+    KProcessList::KProcessInfo processInfoAssignment;
+    processInfoAssignment = processInfo;
+    QVERIFY(processInfoAssignment.isValid() == true);
+    QCOMPARE(processInfoAssignment.pid(), pid);
+    QCOMPARE(processInfoAssignment.name(), name);
+    QCOMPARE(processInfoAssignment.user(), user);
+}
+
+void KProcessListTest::testProcessInfoList()
+{
+    KProcessList::KProcessInfoList processInfoList = 
KProcessList::processInfoList();
+    QVERIFY(processInfoList.empty() == false);
+    auto testProcessIterator = std::find_if(processInfoList.begin(), 
processInfoList.end(), [](const KProcessList::KProcessInfo& info)
+    {
+        return info.name().endsWith(QStringLiteral("/") + getTestExeName());
+    });
+    QVERIFY(testProcessIterator != processInfoList.end());
+    const auto& processInfo = *testProcessIterator;
+    QVERIFY(processInfo.isValid() == true);
+    QVERIFY(processInfo.name().endsWith(QStringLiteral("/") + 
getTestExeName()));
+    QCOMPARE(processInfo.pid(), QCoreApplication::applicationPid());
+    QCOMPARE(processInfo.user(), KUser().loginName());
+}
+
+void KProcessListTest::testProcessInfo()
+{
+    const qint64 testExePid = QCoreApplication::applicationPid();
+    KProcessList::KProcessInfo processInfo = 
KProcessList::processInfo(testExePid);
+    QVERIFY(processInfo.isValid() == true);
+    QVERIFY(processInfo.name().endsWith(QStringLiteral("/") + 
getTestExeName()));
+    QCOMPARE(processInfo.pid(), testExePid);
+    QCOMPARE(processInfo.user(), KUser().loginName());
+}
+
+void KProcessListTest::testProcessInfoNotFound()
+{
+    KProcessList::KProcessInfo processInfo = KProcessList::processInfo(-1);
+    QVERIFY(processInfo.isValid() == false);
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcoreaddons-5.58.0/autotests/kprocesslisttest.h 
new/kcoreaddons-5.59.0/autotests/kprocesslisttest.h
--- old/kcoreaddons-5.58.0/autotests/kprocesslisttest.h 1970-01-01 
01:00:00.000000000 +0100
+++ new/kcoreaddons-5.59.0/autotests/kprocesslisttest.h 2019-06-01 
18:53:54.000000000 +0200
@@ -0,0 +1,36 @@
+/*
+ *  This file is part of the KDE project
+ *  Copyright (C) 2019 David Hallas <[email protected]>
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Library General Public
+ *  License version 2 as published by the Free Software Foundation.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Library General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Library General Public License
+ *  along with this library; see the file COPYING.LIB.  If not, write to
+ *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ *  Boston, MA 02110-1301, USA.
+*/
+
+#ifndef KPROCESSLISTTEST_H
+#define KPROCESSLISTTEST_H
+
+#include <QObject>
+
+class KProcessListTest : public QObject
+{
+    Q_OBJECT
+
+private Q_SLOTS:
+    void testKProcessInfoConstructionAssignment();
+    void testProcessInfoList();
+    void testProcessInfo();
+    void testProcessInfoNotFound();
+};
+
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcoreaddons-5.58.0/po/da/kcoreaddons5_qt.po 
new/kcoreaddons-5.59.0/po/da/kcoreaddons5_qt.po
--- old/kcoreaddons-5.58.0/po/da/kcoreaddons5_qt.po     2019-05-08 
10:27:20.000000000 +0200
+++ new/kcoreaddons-5.59.0/po/da/kcoreaddons5_qt.po     2019-06-01 
18:53:54.000000000 +0200
@@ -2,14 +2,14 @@
 # Copyright (C) YEAR This_file_is_part_of_KDE
 # This file is distributed under the same license as the PACKAGE package.
 #
-# Martin Schlander <[email protected]>, 2008, 2009, 2010, 2011, 2012, 
2013, 2014, 2015, 2016, 2017, 2018.
+# Martin Schlander <[email protected]>, 2008, 2009, 2010, 2011, 2012, 
2013, 2014, 2015, 2016, 2017, 2018, 2019.
 # Keld Simonsen <[email protected]>, 2010.
 msgid ""
 msgstr ""
 "Project-Id-Version: kdelibs4\n"
 "Report-Msgid-Bugs-To: http://bugs.kde.org\n";
 "POT-Creation-Date: 2014-03-23 01:50+0000\n"
-"PO-Revision-Date: 2018-07-18 21:03+0100\n"
+"PO-Revision-Date: 2019-05-07 12:07+0100\n"
 "Last-Translator: Martin Schlander <[email protected]>\n"
 "Language-Team: Danish <[email protected]>\n"
 "Language: da\n"
@@ -192,172 +192,142 @@
 #: lib/util/kformatprivate.cpp:116
 msgctxt "KFormat|SI prefix for 10^⁻24"
 msgid "y"
-msgstr ""
+msgstr "y"
 
 #: lib/util/kformatprivate.cpp:117
 msgctxt "KFormat|SI prefix for 10^⁻21"
 msgid "z"
-msgstr ""
+msgstr "z"
 
 #: lib/util/kformatprivate.cpp:118
-#, fuzzy
-#| msgid "am"
 msgctxt "KFormat|SI prefix for 10^⁻18"
 msgid "a"
-msgstr "am"
+msgstr "a"
 
 #: lib/util/kformatprivate.cpp:119
 msgctxt "KFormat|SI prefix for 10^⁻15"
 msgid "f"
-msgstr ""
+msgstr "f"
 
 #: lib/util/kformatprivate.cpp:120
-#, fuzzy
-#| msgid "pm"
 msgctxt "KFormat|SI prefix for 10^⁻12"
 msgid "p"
-msgstr "pm"
+msgstr "p"
 
 #: lib/util/kformatprivate.cpp:121
 msgctxt "KFormat|SI prefix for 10^⁻9"
 msgid "n"
-msgstr ""
+msgstr "n"
 
 #: lib/util/kformatprivate.cpp:122
 msgctxt "KFormat|SI prefix for 10^⁻6"
 msgid "µ"
-msgstr ""
+msgstr "µ"
 
 #: lib/util/kformatprivate.cpp:123
-#, fuzzy
-#| msgid "am"
 msgctxt "KFormat|SI prefix for 10^⁻3"
 msgid "m"
-msgstr "am"
+msgstr "m"
 
 #: lib/util/kformatprivate.cpp:125
 msgctxt "KFormat|SI prefix for 10^3"
 msgid "k"
-msgstr ""
+msgstr "k"
 
 #: lib/util/kformatprivate.cpp:125
-#, fuzzy
-#| msgctxt "Coptic month 4 - ShortName"
-#| msgid "Kia"
 msgctxt "KFormat|IEC binary prefix for 2^10"
 msgid "Ki"
-msgstr "Kia"
+msgstr "Ki"
 
 #: lib/util/kformatprivate.cpp:126
-#, fuzzy
-#| msgctxt "Before Noon KLocale::ShortName"
-#| msgid "AM"
 msgctxt "KFormat|SI prefix for 10^6"
 msgid "M"
-msgstr "AM"
+msgstr "M"
 
 #: lib/util/kformatprivate.cpp:126
-#, fuzzy
-#| msgctxt "Ethiopian month 8 - ShortName"
-#| msgid "Miy"
 msgctxt "KFormat|IEC binary prefix for 2^20"
 msgid "Mi"
-msgstr "Miy"
+msgstr "Mi"
 
 #: lib/util/kformatprivate.cpp:127
 msgctxt "KFormat|SI prefix for 10^9"
 msgid "G"
-msgstr ""
+msgstr "G"
 
 #: lib/util/kformatprivate.cpp:127
 msgctxt "KFormat|IEC binary prefix for 2^30"
 msgid "Gi"
-msgstr ""
+msgstr "Gi"
 
 #: lib/util/kformatprivate.cpp:128
 msgctxt "KFormat|SI prefix for 10^12"
 msgid "T"
-msgstr ""
+msgstr "T"
 
 #: lib/util/kformatprivate.cpp:128
-#, fuzzy
-#| msgctxt "Tir short"
-#| msgid "Tir"
 msgctxt "KFormat|IEC binary prefix for 2^40"
 msgid "Ti"
-msgstr "Tir"
+msgstr "Ti"
 
 #: lib/util/kformatprivate.cpp:129
-#, fuzzy
-#| msgctxt "After Noon KLocale::NarrowName"
-#| msgid "P"
 msgctxt "KFormat|SI prefix for 10^15"
 msgid "P"
 msgstr "P"
 
 #: lib/util/kformatprivate.cpp:129
-#, fuzzy
-#| msgctxt "Coptic weekday 4 - ShortDayName"
-#| msgid "Pti"
 msgctxt "KFormat|IEC binary prefix for 2^50"
 msgid "Pi"
-msgstr "Pti"
+msgstr "Pi"
 
 #: lib/util/kformatprivate.cpp:130
 msgctxt "KFormat|SI prefix for 10^18"
 msgid "E"
-msgstr ""
+msgstr "E"
 
 #: lib/util/kformatprivate.cpp:130
-#, fuzzy
-#| msgid "Edit"
 msgctxt "KFormat|IEC binary prefix for 2^60"
 msgid "Ei"
-msgstr "Redigér"
+msgstr "Ei"
 
 #: lib/util/kformatprivate.cpp:131
 msgctxt "KFormat|SI prefix for 10^21"
 msgid "Z"
-msgstr ""
+msgstr "Z"
 
 #: lib/util/kformatprivate.cpp:131
 msgctxt "KFormat|IEC binary prefix for 2^70"
 msgid "Zi"
-msgstr ""
+msgstr "Zi"
 
 #: lib/util/kformatprivate.cpp:132
 msgctxt "KFormat|SI prefix for 10^24"
 msgid "Y"
-msgstr ""
+msgstr "Y"
 
 #: lib/util/kformatprivate.cpp:132
 msgctxt "KFormat|IEC binary prefix for 2^80"
 msgid "Yi"
-msgstr ""
+msgstr "Yi"
 
 #: lib/util/kformatprivate.cpp:140
-#, fuzzy
-#| msgid "Submit"
 msgctxt "KFormat|Symbol of binary digit"
 msgid "bit"
-msgstr "Indsend"
+msgstr "bit"
 
 #: lib/util/kformatprivate.cpp:143
 msgctxt "KFormat|Symbol of byte"
 msgid "B"
-msgstr ""
+msgstr "B"
 
 #: lib/util/kformatprivate.cpp:146
-#, fuzzy
-#| msgid "am"
 msgctxt "KFormat|Symbol of meter"
 msgid "m"
-msgstr "am"
+msgstr "m"
 
 #: lib/util/kformatprivate.cpp:149
 msgctxt "KFormat|Symbol of hertz"
 msgid "Hz"
-msgstr ""
+msgstr "Hz"
 
 #. value without prefix, format "<val> <unit>"
 #: lib/util/kformatprivate.cpp:158
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcoreaddons-5.58.0/po/ja/kcoreaddons5_qt.po 
new/kcoreaddons-5.59.0/po/ja/kcoreaddons5_qt.po
--- old/kcoreaddons-5.58.0/po/ja/kcoreaddons5_qt.po     2019-05-08 
10:27:20.000000000 +0200
+++ new/kcoreaddons-5.59.0/po/ja/kcoreaddons5_qt.po     2019-06-01 
18:53:54.000000000 +0200
@@ -7,15 +7,16 @@
 # AWASHIRO Ikuya <[email protected]>, 2004.
 # Shinichi Tsunoda <[email protected]>, 2005.
 # Yukiko Bando <[email protected]>, 2006, 2007, 2008, 2009, 2010.
-# Fumiaki Okushi <[email protected]>, 2006, 2007, 2008, 2010, 2011.
+# Tomohiro Hyakutake <[email protected]>, 2019.
+# Fumiaki Okushi <[email protected]>, 2006, 2007, 2008, 2010, 2011, 
2019.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: kdelibs4\n"
 "Report-Msgid-Bugs-To: http://bugs.kde.org\n";
 "POT-Creation-Date: 2014-03-23 01:50+0000\n"
-"PO-Revision-Date: 2011-08-27 14:05-0700\n"
-"Last-Translator: Fumiaki Okushi <[email protected]>\n"
+"PO-Revision-Date: 2019-05-11 16:53-0700\n"
+"Last-Translator: Fumiaki Okushi <[email protected]>\n"
 "Language-Team: Japanese <[email protected]>\n"
 "Language: ja\n"
 "MIME-Version: 1.0\n"
@@ -24,7 +25,7 @@
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Accelerator-Marker: &\n"
 "X-Text-Markup: qtrich\n"
-"X-Generator: Lokalize 1.1\n"
+"X-Generator: Lokalize 19.04.0\n"
 "X-Qt-Contexts: true\n"
 
 #: lib/kaboutdata.cpp:296
@@ -178,29 +179,16 @@
 msgstr "GNU Lesser General Public License Version 2"
 
 #: lib/kaboutdata.cpp:385
-#, fuzzy
-#| msgctxt "@item license"
-#| msgid "Custom"
 msgctxt "KAboutLicense|@item license"
 msgid "Custom"
 msgstr "カスタム"
 
 #: lib/kaboutdata.cpp:388
-#, fuzzy
-#| msgctxt "@item license"
-#| msgid "Not specified"
 msgctxt "KAboutLicense|@item license"
 msgid "Not specified"
 msgstr "指定なし"
 
 #: lib/kaboutdata.cpp:937
-#, fuzzy
-#| msgctxt "replace this with information about your translation team"
-#| msgid ""
-#| "<p>KDE is translated into many languages thanks to the work of the "
-#| "translation teams all over the world.</p><p>For more information on KDE "
-#| "internationalization visit <a href=\"http://l10n.kde.org\";>http://l10n.";
-#| "kde.org</a></p>"
 msgctxt "KAboutData|replace this with information about your translation team"
 msgid ""
 "<p>KDE is translated into many languages thanks to the work of the "
@@ -209,8 +197,8 @@
 "org</a></p>"
 msgstr ""
 "<html><p>KDE は世界中の翻訳チームの手によってさまざまな言語に翻訳されていま"
-"す。</p><p>KDE の国際化対応の詳細については <link>http://l10n.kde.org</link> "
-"をご覧ください。</p></html>"
+"す。</p><p>KDE の国際化対応の詳細については <a href=\"http://l10n.kde.org";
+"\">http://l10n.kde.org</a> をご覧ください。</p></html>"
 
 #: lib/kaboutdata.cpp:1168
 #, fuzzy
@@ -220,8 +208,6 @@
 msgstr "著作者情報"
 
 #: lib/kaboutdata.cpp:1169
-#, fuzzy
-#| msgid "Show license information"
 msgctxt "KAboutData CLI|"
 msgid "Show license information."
 msgstr "ライセンス情報を表示"
@@ -234,12 +220,9 @@
 #: lib/kaboutdata.cpp:1172
 msgctxt "KAboutData CLI|"
 msgid "file name"
-msgstr ""
+msgstr "ファイル名"
 
 #: lib/kaboutdata.cpp:1181
-#, fuzzy
-#| msgid ""
-#| "This application was written by somebody who wants to remain anonymous."
 msgctxt "KAboutData CLI|"
 msgid "This application was written by somebody who wants to remain anonymous."
 msgstr "このアプリケーションは匿名でありたい誰かによって書かれました。"
@@ -259,13 +242,13 @@
 #: lib/kaboutdata.cpp:1194
 msgctxt "KAboutData CLI|"
 msgid "Please use https://bugs.kde.org to report bugs."
-msgstr ""
+msgstr "バグは http://bugs.kde.org へ報告してください。"
 
 #: lib/kaboutdata.cpp:1196
 #, qt-format
 msgctxt "KAboutData CLI|"
 msgid "Please report bugs to %1."
-msgstr ""
+msgstr "バグは %1 へ報告してください。"
 
 #: lib/plugin/kpluginloader.cpp:122
 #, fuzzy, qt-format
@@ -738,95 +721,76 @@
 
 #. @item:intext %1 is a real number, e.g. 1.23 days
 #: lib/util/kformatprivate.cpp:414
-#, fuzzy, qt-format
-#| msgctxt "@item:intext %1 is a real number, e.g. 1.23 days"
-#| msgid "%1 days"
+#, qt-format
 msgctxt "KFormat|"
 msgid "%1 days"
 msgstr "%1 日"
 
 #. @item:intext %1 is a real number, e.g. 1.23 hours
 #: lib/util/kformatprivate.cpp:417
-#, fuzzy, qt-format
-#| msgctxt "@item:intext %1 is a real number, e.g. 1.23 hours"
-#| msgid "%1 hours"
+#, qt-format
 msgctxt "KFormat|"
 msgid "%1 hours"
 msgstr "%1 時間"
 
 #. @item:intext %1 is a real number, e.g. 1.23 minutes
 #: lib/util/kformatprivate.cpp:420
-#, fuzzy, qt-format
-#| msgctxt "@item:intext %1 is a real number, e.g. 1.23 minutes"
-#| msgid "%1 minutes"
+#, qt-format
 msgctxt "KFormat|"
 msgid "%1 minutes"
 msgstr "%1 分"
 
 #. @item:intext %1 is a real number, e.g. 1.23 seconds
 #: lib/util/kformatprivate.cpp:423
-#, fuzzy, qt-format
-#| msgctxt "@item:intext %1 is a real number, e.g. 1.23 seconds"
-#| msgid "%1 seconds"
+#, qt-format
 msgctxt "KFormat|"
 msgid "%1 seconds"
 msgstr "%1 秒"
 
 #. @item:intext %1 is a whole number
 #: lib/util/kformatprivate.cpp:428
-#, fuzzy, qt-format
-#| msgctxt "@item:intext"
-#| msgid "%1 millisecond"
-#| msgid_plural "%1 milliseconds"
+#, qt-format
 msgctxt "KFormat|"
 msgid "%n millisecond(s)"
 msgid_plural "%n millisecond(s)"
-msgstr[0] "%1 ミリ秒"
-msgstr[1] "%1 ミリ秒"
+msgstr[0] "%n ミリ秒"
+msgstr[1] "%n ミリ秒"
 
 #. @item:intext %n is a whole number
 #: lib/util/kformatprivate.cpp:446
-#, fuzzy, qt-format
-#| msgctxt "@item:intext %1 is a real number, e.g. 1.23 days"
-#| msgid "%1 days"
+#, qt-format
 msgctxt "KFormat|"
 msgid "%n day(s)"
 msgid_plural "%n day(s)"
-msgstr[0] "%1 日"
-msgstr[1] "%1 日"
+msgstr[0] "%n 日"
+msgstr[1] "%n 日"
 
 #. @item:intext %n is a whole number
 #: lib/util/kformatprivate.cpp:451
-#, fuzzy, qt-format
-#| msgctxt "@item:intext %1 is a real number, e.g. 1.23 hours"
-#| msgid "%1 hours"
+#, qt-format
 msgctxt "KFormat|"
 msgid "%n hour(s)"
 msgid_plural "%n hour(s)"
-msgstr[0] "%1 時間"
-msgstr[1] "%1 時間"
+msgstr[0] "%n 時間"
+msgstr[1] "%n 時間"
 
 #. @item:intext %n is a whole number
 #: lib/util/kformatprivate.cpp:456
-#, fuzzy, qt-format
-#| msgctxt "@item:intext %1 is a real number, e.g. 1.23 minutes"
-#| msgid "%1 minutes"
+#, qt-format
 msgctxt "KFormat|"
 msgid "%n minute(s)"
 msgid_plural "%n minute(s)"
-msgstr[0] "%1 分"
-msgstr[1] "%1 分"
+msgstr[0] "%n 分"
+msgstr[1] "%n 分"
 
 #. @item:intext %n is a whole number
 #: lib/util/kformatprivate.cpp:461
-#, fuzzy, qt-format
-#| msgctxt "@item:intext %1 is a real number, e.g. 1.23 seconds"
-#| msgid "%1 seconds"
+#, qt-format
 msgctxt "KFormat|"
 msgid "%n second(s)"
 msgid_plural "%n second(s)"
-msgstr[0] "%1 秒"
-msgstr[1] "%1 秒"
+msgstr[0] "%n 秒"
+msgstr[1] "%n 秒"
 
 #. @item:intext days and hours. This uses the previous item:intext messages. 
If this does not fit the grammar of your language please contact the i18n team 
to solve the problem
 #. ----------
@@ -853,23 +817,16 @@
 msgstr ""
 
 #: lib/util/kformatprivate.cpp:519
-#, fuzzy
-#| msgctxt "@option tomorrow"
-#| msgid "Tomorrow"
 msgctxt "KFormat|"
 msgid "Tomorrow"
 msgstr "明日"
 
 #: lib/util/kformatprivate.cpp:521
-#, fuzzy
-#| msgid "Today"
 msgctxt "KFormat|"
 msgid "Today"
 msgstr "今日"
 
 #: lib/util/kformatprivate.cpp:523
-#, fuzzy
-#| msgid "Yesterday"
 msgctxt "KFormat|"
 msgid "Yesterday"
 msgstr "昨日"
@@ -877,72 +834,72 @@
 #: lib/util/kformatprivate.cpp:529
 msgctxt "KFormat|most recent such day before today"
 msgid "Last Monday"
-msgstr ""
+msgstr "月曜日"
 
 #: lib/util/kformatprivate.cpp:531
 msgctxt "KFormat|most recent such day before today"
 msgid "Last Tuesday"
-msgstr ""
+msgstr "火曜日"
 
 #: lib/util/kformatprivate.cpp:533
 msgctxt "KFormat|most recent such day before today"
 msgid "Last Wednesday"
-msgstr ""
+msgstr "水曜日"
 
 #: lib/util/kformatprivate.cpp:535
 msgctxt "KFormat|most recent such day before today"
 msgid "Last Thursday"
-msgstr ""
+msgstr "木曜日"
 
 #: lib/util/kformatprivate.cpp:537
 msgctxt "KFormat|most recent such day before today"
 msgid "Last Friday"
-msgstr ""
+msgstr "金曜日"
 
 #: lib/util/kformatprivate.cpp:539
 msgctxt "KFormat|most recent such day before today"
 msgid "Last Saturday"
-msgstr ""
+msgstr "土曜日"
 
 #: lib/util/kformatprivate.cpp:541
 msgctxt "KFormat|most recent such day before today"
 msgid "Last Sunday"
-msgstr ""
+msgstr "日曜日"
 
 #: lib/util/kformatprivate.cpp:546
 msgctxt "KFormat|the next such day after today"
 msgid "Next Monday"
-msgstr ""
+msgstr "次の月曜日"
 
 #: lib/util/kformatprivate.cpp:548
 msgctxt "KFormat|the next such day after today"
 msgid "Next Tuesday"
-msgstr ""
+msgstr "次の火曜日"
 
 #: lib/util/kformatprivate.cpp:550
 msgctxt "KFormat|the next such day after today"
 msgid "Next Wednesday"
-msgstr ""
+msgstr "次の水曜日"
 
 #: lib/util/kformatprivate.cpp:552
 msgctxt "KFormat|the next such day after today"
 msgid "Next Thursday"
-msgstr ""
+msgstr "次の木曜日"
 
 #: lib/util/kformatprivate.cpp:554
 msgctxt "KFormat|the next such day after today"
 msgid "Next Friday"
-msgstr ""
+msgstr "次の金曜日"
 
 #: lib/util/kformatprivate.cpp:556
 msgctxt "KFormat|the next such day after today"
 msgid "Next Saturday"
-msgstr ""
+msgstr "次の土曜日"
 
 #: lib/util/kformatprivate.cpp:558
 msgctxt "KFormat|the next such day after today"
 msgid "Next Sunday"
-msgstr ""
+msgstr "次の日曜日"
 
 #. relative datetime with %1 result of formatReleativeDate() and %2 the 
formatted time If this does not fit the grammar of your language please contact 
the i18n team to solve the problem
 #: lib/util/kformatprivate.cpp:573
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcoreaddons-5.58.0/po/ko/kcoreaddons5_qt.po 
new/kcoreaddons-5.59.0/po/ko/kcoreaddons5_qt.po
--- old/kcoreaddons-5.58.0/po/ko/kcoreaddons5_qt.po     2019-05-08 
10:27:20.000000000 +0200
+++ new/kcoreaddons-5.59.0/po/ko/kcoreaddons5_qt.po     2019-06-01 
18:53:54.000000000 +0200
@@ -1,23 +1,22 @@
 # Korean messages for kdelibs.
 # Copyright (C) Free Software Foundation, Inc.
 # Cho Sung Jae <[email protected]>, 2007.
-# Shinjo Park <[email protected]>, 2007, 2008, 2009, 2010, 2011.
-# Shinjo Park <[email protected]>, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 
2018.
+# Shinjo Park <[email protected]>, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 
2014, 2015, 2016, 2017, 2018, 2019.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: kdelibs4\n"
 "Report-Msgid-Bugs-To: http://bugs.kde.org\n";
 "POT-Creation-Date: 2014-03-23 01:50+0000\n"
-"PO-Revision-Date: 2018-08-14 23:01+0100\n"
+"PO-Revision-Date: 2019-05-18 15:16+0200\n"
 "Last-Translator: Shinjo Park <[email protected]>\n"
-"Language-Team: Korean <[email protected]>\n"
+"Language-Team: Korean <[email protected]>\n"
 "Language: ko\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Lokalize 2.0\n"
+"X-Generator: Lokalize 18.12.3\n"
 "X-Qt-Contexts: true\n"
 
 #: lib/kaboutdata.cpp:296
@@ -191,142 +190,142 @@
 #: lib/util/kformatprivate.cpp:116
 msgctxt "KFormat|SI prefix for 10^⁻24"
 msgid "y"
-msgstr ""
+msgstr "y"
 
 #: lib/util/kformatprivate.cpp:117
 msgctxt "KFormat|SI prefix for 10^⁻21"
 msgid "z"
-msgstr ""
+msgstr "z"
 
 #: lib/util/kformatprivate.cpp:118
 msgctxt "KFormat|SI prefix for 10^⁻18"
 msgid "a"
-msgstr ""
+msgstr "a"
 
 #: lib/util/kformatprivate.cpp:119
 msgctxt "KFormat|SI prefix for 10^⁻15"
 msgid "f"
-msgstr ""
+msgstr "f"
 
 #: lib/util/kformatprivate.cpp:120
 msgctxt "KFormat|SI prefix for 10^⁻12"
 msgid "p"
-msgstr ""
+msgstr "p"
 
 #: lib/util/kformatprivate.cpp:121
 msgctxt "KFormat|SI prefix for 10^⁻9"
 msgid "n"
-msgstr ""
+msgstr "n"
 
 #: lib/util/kformatprivate.cpp:122
 msgctxt "KFormat|SI prefix for 10^⁻6"
 msgid "µ"
-msgstr ""
+msgstr "µ"
 
 #: lib/util/kformatprivate.cpp:123
 msgctxt "KFormat|SI prefix for 10^⁻3"
 msgid "m"
-msgstr ""
+msgstr "m"
 
 #: lib/util/kformatprivate.cpp:125
 msgctxt "KFormat|SI prefix for 10^3"
 msgid "k"
-msgstr ""
+msgstr "k"
 
 #: lib/util/kformatprivate.cpp:125
 msgctxt "KFormat|IEC binary prefix for 2^10"
 msgid "Ki"
-msgstr ""
+msgstr "Ki"
 
 #: lib/util/kformatprivate.cpp:126
 msgctxt "KFormat|SI prefix for 10^6"
 msgid "M"
-msgstr ""
+msgstr "M"
 
 #: lib/util/kformatprivate.cpp:126
 msgctxt "KFormat|IEC binary prefix for 2^20"
 msgid "Mi"
-msgstr ""
+msgstr "Mi"
 
 #: lib/util/kformatprivate.cpp:127
 msgctxt "KFormat|SI prefix for 10^9"
 msgid "G"
-msgstr ""
+msgstr "G"
 
 #: lib/util/kformatprivate.cpp:127
 msgctxt "KFormat|IEC binary prefix for 2^30"
 msgid "Gi"
-msgstr ""
+msgstr "Gi"
 
 #: lib/util/kformatprivate.cpp:128
 msgctxt "KFormat|SI prefix for 10^12"
 msgid "T"
-msgstr ""
+msgstr "T"
 
 #: lib/util/kformatprivate.cpp:128
 msgctxt "KFormat|IEC binary prefix for 2^40"
 msgid "Ti"
-msgstr ""
+msgstr "Ti"
 
 #: lib/util/kformatprivate.cpp:129
 msgctxt "KFormat|SI prefix for 10^15"
 msgid "P"
-msgstr ""
+msgstr "P"
 
 #: lib/util/kformatprivate.cpp:129
 msgctxt "KFormat|IEC binary prefix for 2^50"
 msgid "Pi"
-msgstr ""
+msgstr "Pi"
 
 #: lib/util/kformatprivate.cpp:130
 msgctxt "KFormat|SI prefix for 10^18"
 msgid "E"
-msgstr ""
+msgstr "E"
 
 #: lib/util/kformatprivate.cpp:130
 msgctxt "KFormat|IEC binary prefix for 2^60"
 msgid "Ei"
-msgstr ""
+msgstr "Ei"
 
 #: lib/util/kformatprivate.cpp:131
 msgctxt "KFormat|SI prefix for 10^21"
 msgid "Z"
-msgstr ""
+msgstr "Z"
 
 #: lib/util/kformatprivate.cpp:131
 msgctxt "KFormat|IEC binary prefix for 2^70"
 msgid "Zi"
-msgstr ""
+msgstr "Zi"
 
 #: lib/util/kformatprivate.cpp:132
 msgctxt "KFormat|SI prefix for 10^24"
 msgid "Y"
-msgstr ""
+msgstr "Y"
 
 #: lib/util/kformatprivate.cpp:132
 msgctxt "KFormat|IEC binary prefix for 2^80"
 msgid "Yi"
-msgstr ""
+msgstr "Yi"
 
 #: lib/util/kformatprivate.cpp:140
 msgctxt "KFormat|Symbol of binary digit"
 msgid "bit"
-msgstr ""
+msgstr "bit"
 
 #: lib/util/kformatprivate.cpp:143
 msgctxt "KFormat|Symbol of byte"
 msgid "B"
-msgstr ""
+msgstr "B"
 
 #: lib/util/kformatprivate.cpp:146
 msgctxt "KFormat|Symbol of meter"
 msgid "m"
-msgstr ""
+msgstr "m"
 
 #: lib/util/kformatprivate.cpp:149
 msgctxt "KFormat|Symbol of hertz"
 msgid "Hz"
-msgstr ""
+msgstr "Hz"
 
 #. value without prefix, format "<val> <unit>"
 #: lib/util/kformatprivate.cpp:158
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcoreaddons-5.58.0/src/lib/CMakeLists.txt 
new/kcoreaddons-5.59.0/src/lib/CMakeLists.txt
--- old/kcoreaddons-5.58.0/src/lib/CMakeLists.txt       2019-05-08 
10:27:20.000000000 +0200
+++ new/kcoreaddons-5.59.0/src/lib/CMakeLists.txt       2019-06-01 
18:53:54.000000000 +0200
@@ -45,6 +45,7 @@
     set(kcoreaddons_OPTIONAL_SRCS
         ${kcoreaddons_OPTIONAL_SRCS}
         text/kmacroexpander_win.cpp
+        util/kprocesslist_win.cpp
         util/kshell_win.cpp
         util/kuser_win.cpp
     )
@@ -54,6 +55,7 @@
     set(kcoreaddons_OPTIONAL_SRCS
         ${kcoreaddons_OPTIONAL_SRCS}
         text/kmacroexpander_unix.cpp
+        util/kprocesslist_unix.cpp
         util/kuser_unix.cpp
         util/kshell_unix.cpp
     )
@@ -87,6 +89,7 @@
     util/kformat.cpp
     util/kformatprivate.cpp
     util/kosrelease.cpp
+    util/kprocesslist.cpp
     util/kshell.cpp
     ${kcoreaddons_OPTIONAL_SRCS}
     ${kcoreaddons_QM_LOADER}
@@ -201,6 +204,7 @@
         KOSRelease
         KUser
         KShell
+        KProcessList
         Kdelibs4Migration
         Kdelibs4ConfigMigrator
     RELATIVE util
@@ -244,6 +248,7 @@
       text/ktexttohtmlemoticonsinterface.h
       util/kformat.h
       util/kosrelease.h
+      util/kprocesslist.h
       util/kuser.h
       util/kshell.h
       util/kdelibs4migration.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcoreaddons-5.58.0/src/lib/util/kprocesslist.cpp 
new/kcoreaddons-5.59.0/src/lib/util/kprocesslist.cpp
--- old/kcoreaddons-5.58.0/src/lib/util/kprocesslist.cpp        1970-01-01 
01:00:00.000000000 +0100
+++ new/kcoreaddons-5.59.0/src/lib/util/kprocesslist.cpp        2019-06-01 
18:53:54.000000000 +0200
@@ -0,0 +1,105 @@
+/**************************************************************************
+**
+** This file is part of the KDE Frameworks
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (c) 2019 David Hallas <[email protected]>
+**
+** GNU Lesser General Public License Usage
+**
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at [email protected].
+**
+**************************************************************************/
+
+#include "kprocesslist.h"
+#include "kprocesslist_p.h"
+#include <algorithm>
+
+using namespace KProcessList;
+
+KProcessInfoPrivate::KProcessInfoPrivate() :
+    valid(false),
+    pid(-1)
+{
+}
+
+KProcessInfo::KProcessInfo() :
+    d_ptr(new KProcessInfoPrivate)
+{
+}
+
+KProcessInfo::KProcessInfo(qint64 pid, const QString& name, const QString& 
user) :
+    d_ptr(new KProcessInfoPrivate)
+{
+    d_ptr->valid = true;
+    d_ptr->pid = pid;
+    d_ptr->name = name;
+    d_ptr->user = user;
+}
+
+KProcessInfo::KProcessInfo(const KProcessInfo &other) :
+    d_ptr(new KProcessInfoPrivate)
+{
+    *this = other;
+}
+
+KProcessInfo::~KProcessInfo()
+{
+}
+
+KProcessInfo &KProcessInfo::operator=(const KProcessInfo &other)
+{
+    d_ptr = other.d_ptr;
+    return *this;
+}
+
+bool KProcessInfo::isValid() const
+{
+    return d_ptr->valid;
+}
+
+qint64 KProcessInfo::pid() const
+{
+    return d_ptr->pid;
+}
+
+QString KProcessInfo::name() const
+{
+    return d_ptr->name;
+}
+
+QString KProcessInfo::user() const
+{
+    return d_ptr->user;
+}
+
+KProcessInfo KProcessList::processInfo(qint64 pid)
+{
+    KProcessInfoList processInfoList = KProcessList::processInfoList();
+    auto testProcessIterator = std::find_if(processInfoList.begin(), 
processInfoList.end(),
+                                            [pid](const 
KProcessList::KProcessInfo& info)
+    {
+        return info.pid() == pid;
+    });
+    if (testProcessIterator != processInfoList.end()) {
+        return *testProcessIterator;
+    }
+    return KProcessInfo();
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcoreaddons-5.58.0/src/lib/util/kprocesslist.h 
new/kcoreaddons-5.59.0/src/lib/util/kprocesslist.h
--- old/kcoreaddons-5.58.0/src/lib/util/kprocesslist.h  1970-01-01 
01:00:00.000000000 +0100
+++ new/kcoreaddons-5.59.0/src/lib/util/kprocesslist.h  2019-06-01 
18:53:54.000000000 +0200
@@ -0,0 +1,96 @@
+/**************************************************************************
+**
+** This file is part of the KDE Frameworks
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (c) 2019 David Hallas <[email protected]>
+**
+** GNU Lesser General Public License Usage
+**
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at [email protected].
+**
+**************************************************************************/
+
+#ifndef KPROCESSLIST_H
+#define KPROCESSLIST_H
+
+#include <kcoreaddons_export.h>
+#include <QSharedDataPointer>
+#include <QString>
+#include <QList>
+
+namespace KProcessList
+{
+
+class KProcessInfoPrivate;
+
+/**
+ * @brief Contains information about a process. This class is usually not used 
alone but rather returned by
+ * processInfoList and processInfo. To check if the data contained in this 
class is valid use the isValid method.
+ * @since 5.58
+ */
+class KCOREADDONS_EXPORT KProcessInfo {
+public:
+    KProcessInfo();
+    KProcessInfo(qint64 pid, const QString &name, const QString &user);
+    KProcessInfo(const KProcessInfo &other);
+    ~KProcessInfo();
+    KProcessInfo &operator=(const KProcessInfo &other);
+    /**
+     * @brief If the KProcessInfo contains valid information. If it returns 
true the pid, name and user function
+     * returns valid information, otherwise they return value is undefined.
+     */
+    bool isValid() const;
+    /**
+     * @brief The pid of the process
+     */
+    qint64 pid() const;
+    /**
+     * @brief The name of the process. The class will try to get the full path 
to the executable file for the process
+     * but if it is not available the name of the process will be used instead.
+     */
+    QString name() const;
+    /**
+     * @brief The username the process is running under.
+     */
+    QString user() const;
+private:
+    QSharedDataPointer<KProcessInfoPrivate> d_ptr;
+};
+
+typedef QList<KProcessInfo> KProcessInfoList;
+
+/**
+ * @brief Retrieves the list of currently active processes.
+ * @since 5.58
+ */
+KCOREADDONS_EXPORT KProcessInfoList processInfoList();
+
+/**
+ * @brief Retrieves process information for a specific process-id. If the 
process is not found a KProcessInfo with
+ * isValid == false will be returned.
+ * @param pid The process-id to retrieve information for.
+ * @since 5.58
+ */
+KCOREADDONS_EXPORT KProcessInfo processInfo(qint64 pid);
+
+} // KProcessList namespace
+
+#endif // KPROCESSLIST_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcoreaddons-5.58.0/src/lib/util/kprocesslist_p.h 
new/kcoreaddons-5.59.0/src/lib/util/kprocesslist_p.h
--- old/kcoreaddons-5.58.0/src/lib/util/kprocesslist_p.h        1970-01-01 
01:00:00.000000000 +0100
+++ new/kcoreaddons-5.59.0/src/lib/util/kprocesslist_p.h        2019-06-01 
18:53:54.000000000 +0200
@@ -0,0 +1,52 @@
+/**************************************************************************
+**
+** This file is part of the KDE Frameworks
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (c) 2019 David Hallas <[email protected]>
+**
+** GNU Lesser General Public License Usage
+**
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at [email protected].
+**
+**************************************************************************/
+
+#ifndef KPROCESSLIST_P_H
+#define KPROCESSLIST_P_H
+
+#include <QSharedData>
+#include "kprocesslist.h"
+
+namespace KProcessList
+{
+
+class KProcessInfoPrivate : public QSharedData {
+public:
+    KProcessInfoPrivate();
+
+    bool valid;
+    qint64 pid;
+    QString name;
+    QString user;
+};
+
+} // KProcessList namespace
+
+#endif // KPROCESSLIST_P_H
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kcoreaddons-5.58.0/src/lib/util/kprocesslist_unix.cpp 
new/kcoreaddons-5.59.0/src/lib/util/kprocesslist_unix.cpp
--- old/kcoreaddons-5.58.0/src/lib/util/kprocesslist_unix.cpp   1970-01-01 
01:00:00.000000000 +0100
+++ new/kcoreaddons-5.59.0/src/lib/util/kprocesslist_unix.cpp   2019-06-01 
18:53:54.000000000 +0200
@@ -0,0 +1,140 @@
+/**************************************************************************
+**
+** This file is part of the KDE Frameworks
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (c) 2019 David Hallas <[email protected]>
+**
+** GNU Lesser General Public License Usage
+**
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at [email protected].
+**
+**************************************************************************/
+
+#include "kprocesslist.h"
+
+#include <QProcess>
+#include <QDir>
+
+using namespace KProcessList;
+
+namespace {
+
+bool isUnixProcessId(const QString &procname)
+{
+    for (int i = 0; i != procname.size(); ++i) {
+        if (!procname.at(i).isDigit())
+            return false;
+    }
+    return true;
+}
+
+// Determine UNIX processes by running ps
+KProcessInfoList unixProcessListPS()
+{
+#ifdef Q_OS_MAC
+    // command goes last, otherwise it is cut off
+    static const char formatC[] = "pid state user command";
+#else
+    static const char formatC[] = "pid,state,user,cmd";
+#endif
+    KProcessInfoList rc;
+    QProcess psProcess;
+    QStringList args;
+    args << QStringLiteral("-e") << QStringLiteral("-o") << 
QLatin1String(formatC);
+    psProcess.start(QStringLiteral("ps"), args);
+    if (!psProcess.waitForStarted())
+        return rc;
+    psProcess.waitForFinished();
+    QByteArray output = psProcess.readAllStandardOutput();
+    // Split "457 S+   /Users/foo.app"
+    const QStringList lines = 
QString::fromLocal8Bit(output).split(QLatin1Char('\n'));
+    const int lineCount = lines.size();
+    const QChar blank = QLatin1Char(' ');
+    for (int l = 1; l < lineCount; l++) { // Skip header
+        const QString line = lines.at(l).simplified();
+        // we can't just split on blank as the process name might
+        // contain them
+        const int endOfPid = line.indexOf(blank);
+        const int endOfState = line.indexOf(blank, endOfPid+1);
+        const int endOfUser = line.indexOf(blank, endOfState+1);
+        if (endOfPid >= 0 && endOfState >= 0 && endOfUser >= 0) {
+            qint64 pid = line.left(endOfPid).toUInt();
+            QString user = line.mid(endOfState+1, endOfUser-endOfState-1);
+            QString name = line.right(line.size()-endOfUser-1);
+            rc.push_back(KProcessInfo(pid, name, user));
+        }
+    }
+
+    return rc;
+}
+
+} // unnamed namespace
+
+// Determine UNIX processes by reading "/proc". Default to ps if
+// it does not exist
+KProcessInfoList KProcessList::processInfoList()
+{
+    const QDir procDir(QStringLiteral("/proc/"));
+#ifdef Q_OS_FREEBSD
+    QString statusFileName(QStringLiteral("/status"));
+#else
+    QString statusFileName(QStringLiteral("/stat"));
+#endif
+    if (!procDir.exists())
+        return unixProcessListPS();
+    KProcessInfoList rc;
+    const QStringList procIds = procDir.entryList();
+    if (procIds.isEmpty())
+        return rc;
+    for (const QString &procId : procIds) {
+        if (!isUnixProcessId(procId))
+            continue;
+        QString filename = QStringLiteral("/proc/");
+        filename += procId;
+        filename += statusFileName;
+        QFile file(filename);
+        if (!file.open(QIODevice::ReadOnly))
+            continue;     // process may have exited
+
+        const QStringList data = 
QString::fromLocal8Bit(file.readAll()).split(QLatin1Char(' '));
+        qint64 pid = procId.toUInt();
+        QString name = data.at(1);
+        if (name.startsWith(QLatin1Char('(')) && 
name.endsWith(QLatin1Char(')'))) {
+            name.truncate(name.size() - 1);
+            name.remove(0, 1);
+        }
+        // State is element 2
+        // PPID is element 3
+        QString user = QFileInfo(file).owner();
+        file.close();
+
+        QFile cmdFile(QLatin1String("/proc/") + procId + 
QLatin1String("/cmdline"));
+        if (cmdFile.open(QFile::ReadOnly)) {
+            QByteArray cmd = cmdFile.readAll();
+            cmd.replace('\0', ' ');
+            if (!cmd.isEmpty())
+                name = QString::fromLocal8Bit(cmd).trimmed();
+        }
+        cmdFile.close();
+        rc.push_back(KProcessInfo(pid, name, user));
+    }
+    return rc;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kcoreaddons-5.58.0/src/lib/util/kprocesslist_win.cpp 
new/kcoreaddons-5.59.0/src/lib/util/kprocesslist_win.cpp
--- old/kcoreaddons-5.58.0/src/lib/util/kprocesslist_win.cpp    1970-01-01 
01:00:00.000000000 +0100
+++ new/kcoreaddons-5.59.0/src/lib/util/kprocesslist_win.cpp    2019-06-01 
18:53:54.000000000 +0200
@@ -0,0 +1,134 @@
+/**************************************************************************
+**
+** This file is part of the KDE Frameworks
+**
+** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (c) 2019 David Hallas <[email protected]>
+**
+** GNU Lesser General Public License Usage
+**
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this file.
+** Please review the following information to ensure the GNU Lesser General
+** Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** Other Usage
+**
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at [email protected].
+**
+**************************************************************************/
+
+#include "kprocesslist.h"
+
+#include <QLibrary>
+
+// Enable Win API of XP SP1 and later
+#ifdef Q_OS_WIN
+#    if !defined(_WIN32_WINNT)
+#        define _WIN32_WINNT 0x0502
+#    endif
+#    include <qt_windows.h>
+#    if !defined(PROCESS_SUSPEND_RESUME) // Check flag for MinGW
+#        define PROCESS_SUSPEND_RESUME (0x0800)
+#    endif // PROCESS_SUSPEND_RESUME
+#endif // Q_OS_WIN
+
+#include <tlhelp32.h>
+#include <psapi.h>
+
+using namespace KProcessList;
+
+// Resolve QueryFullProcessImageNameW out of kernel32.dll due
+// to incomplete MinGW import libs and it not being present
+// on Windows XP.
+static inline BOOL queryFullProcessImageName(HANDLE h, DWORD flags, LPWSTR 
buffer, DWORD *size)
+{
+    // Resolve required symbols from the kernel32.dll
+    typedef BOOL (WINAPI *QueryFullProcessImageNameWProtoType)(HANDLE, DWORD, 
LPWSTR, PDWORD);
+    static QueryFullProcessImageNameWProtoType queryFullProcessImageNameW = 0;
+    if (!queryFullProcessImageNameW) {
+        QLibrary kernel32Lib(QLatin1String("kernel32.dll"), 0);
+        if (kernel32Lib.isLoaded() || kernel32Lib.load()) {
+            queryFullProcessImageNameW
+                = (QueryFullProcessImageNameWProtoType)kernel32Lib.resolve(
+                "QueryFullProcessImageNameW");
+        }
+    }
+    if (!queryFullProcessImageNameW)
+        return FALSE;
+    // Read out process
+    return (*queryFullProcessImageNameW)(h, flags, buffer, size);
+}
+
+struct ProcessInfo {
+    QString processOwner;
+};
+
+static inline ProcessInfo winProcessInfo(DWORD processId)
+{
+    ProcessInfo pi;
+    HANDLE handle = OpenProcess(PROCESS_QUERY_INFORMATION, TOKEN_READ, 
processId);
+    if (handle == INVALID_HANDLE_VALUE)
+        return pi;
+    HANDLE processTokenHandle = NULL;
+    if (!OpenProcessToken(handle, TOKEN_READ, &processTokenHandle) || 
!processTokenHandle)
+        return pi;
+
+    DWORD size = 0;
+    GetTokenInformation(processTokenHandle, TokenUser, NULL, 0, &size);
+
+    if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+        QByteArray buf;
+        buf.resize(size);
+        PTOKEN_USER userToken = reinterpret_cast<PTOKEN_USER>(buf.data());
+        if (userToken
+            && GetTokenInformation(processTokenHandle, TokenUser, userToken, 
size, &size)) {
+            SID_NAME_USE sidNameUse;
+            TCHAR user[MAX_PATH] = { 0 };
+            DWORD userNameLength = MAX_PATH;
+            TCHAR domain[MAX_PATH] = { 0 };
+            DWORD domainNameLength = MAX_PATH;
+
+            if (LookupAccountSid(NULL,
+                                 userToken->User.Sid,
+                                 user,
+                                 &userNameLength,
+                                 domain,
+                                 &domainNameLength,
+                                 &sidNameUse))
+                pi.processOwner = QString::fromUtf16(reinterpret_cast<const 
ushort *>(user));
+        }
+    }
+
+    CloseHandle(processTokenHandle);
+    CloseHandle(handle);
+    return pi;
+}
+
+KProcessInfoList KProcessList::processInfoList()
+{
+    KProcessInfoList rc;
+
+    PROCESSENTRY32 pe;
+    pe.dwSize = sizeof(PROCESSENTRY32);
+    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
+    if (snapshot == INVALID_HANDLE_VALUE)
+        return rc;
+
+    for (bool hasNext = Process32First(snapshot, &pe); hasNext; hasNext = 
Process32Next(snapshot, &pe)) {
+        const ProcessInfo processInf = winProcessInfo(pe.th32ProcessID);
+        rc.push_back(KProcessInfo(pe.th32ProcessID, 
QString::fromUtf16(reinterpret_cast<ushort *>(pe.szExeFile)), 
processInf.processOwner));
+    }
+    CloseHandle(snapshot);
+    return rc;
+}


Reply via email to