diff options
Diffstat (limited to 'x11/kde-workspace-kde4/files/patch-kinfocenter')
-rw-r--r-- | x11/kde-workspace-kde4/files/patch-kinfocenter | 375 |
1 files changed, 375 insertions, 0 deletions
diff --git a/x11/kde-workspace-kde4/files/patch-kinfocenter b/x11/kde-workspace-kde4/files/patch-kinfocenter new file mode 100644 index 000000000000..effd580055ab --- /dev/null +++ b/x11/kde-workspace-kde4/files/patch-kinfocenter @@ -0,0 +1,375 @@ + Clean up info_fbsd.cpp. + Use libpci for pci access if possible - on FreeBSD it requires root + privileges (rw access to /dev/pci), therefore leave old method + as a fallback. + Improve GetInfo_ReadfromPipe function to use Qt types, pass program name + and its parameters as separate arguments. + +--- cmake/modules/FindBSDDevinfo.cmake.orig 2016-12-13 11:26:31 UTC ++++ cmake/modules/FindBSDDevinfo.cmake +@@ -0,0 +1,15 @@ ++# Find FreeBSD devinfo library ++# Once done this will define ++# ++# BSDDEVINFO_FOUND - system has devinfo ++# BSDDEVINFO_INCLUDE_DIR - devinfo include directory ++# BSDDEVINFO_LIBRARY - devinfo library ++ ++find_path(BSDDEVINFO_INCLUDE_DIR devinfo.h) ++ ++find_library(BSDDEVINFO_LIBRARY NAMES devinfo) ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(BSDDEVINFO DEFAULT_MSG BSDDEVINFO_LIBRARY BSDDEVINFO_INCLUDE_DIR) ++ ++mark_as_advanced(BSDDEVINFO_INCLUDE_DIR BSDDEVINFO_LIBRARY) +--- kinfocenter/Modules/base/CMakeLists.txt.orig 2015-06-26 03:17:21 UTC ++++ kinfocenter/Modules/base/CMakeLists.txt +@@ -1,6 +1,7 @@ + # TODO: HAVE_LIBDEVINFO_H (for Solaris 7 and later) + # to be set if both -ldevinfo and libdevinfo.h exist + +-check_include_files(devinfo.h HAVE_DEVINFO_H) # info_fbsd.cpp ++macro_optional_find_package(BSDDevinfo) # info_fbsd.cpp ++macro_bool_to_01(BSDDEVINFO_FOUND HAVE_DEVINFO_H) + + configure_file (../base/config-infocenter.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-infocenter.h ) +--- kinfocenter/Modules/base/info_fbsd.cpp.orig 2015-06-26 03:17:21 UTC ++++ kinfocenter/Modules/base/info_fbsd.cpp +@@ -15,8 +15,6 @@ + */ + + #include "config-infocenter.h" // HAVE_DEVINFO_H +-#include <sys/types.h> +-#include <sys/sysctl.h> + + #ifdef HAVE_DEVINFO_H + extern "C" { +@@ -24,13 +22,16 @@ extern "C" { + } + #endif + +-#include <string.h> ++#ifdef HAVE_PCIUTILS ++#include "kpci.h" ++#endif + +-#include <QMap> + #include <QFileInfo> +- ++#include <QStringList> + #include <QTextStream> + ++#include <KGlobalSettings> ++ + void ProcessChildren(QString name); + + #ifdef HAVE_DEVINFO_H +@@ -44,13 +45,12 @@ extern "C" { + + bool GetInfo_IRQ(QTreeWidget* tree) { + #ifdef HAVE_DEVINFO_H +- /* systat lists the interrupts assigned to devices as well as how many were +- generated. Parsing its output however is about as fun as a sandpaper +- enema. The best idea would probably be to rip out the guts of systat. +- Too bad it's not very well commented */ +- /* Oh neat, current now has a neat little utility called devinfo */ + if (devinfo_init()) +- return false; ++ return false; ++ ++ QStringList headers; ++ headers << i18n("IRQ") << i18n("Used By"); ++ tree->setHeaderLabels(headers); + devinfo_foreach_rman(print_irq, tree); + return true; + #else +@@ -60,9 +60,13 @@ bool GetInfo_IRQ(QTreeWidget* tree) { + + bool GetInfo_DMA(QTreeWidget* tree) { + #ifdef HAVE_DEVINFO_H +- /* Oh neat, current now has a neat little utility called devinfo */ + if (devinfo_init()) +- return false; ++ return false; ++ ++ QStringList headers; ++ headers << i18n("DMA-Channel") << i18n("Used By"); ++ tree->setHeaderLabels(headers); ++ + devinfo_foreach_rman(print_dma, tree); + return true; + #else +@@ -72,9 +76,12 @@ bool GetInfo_DMA(QTreeWidget* tree) { + + bool GetInfo_IO_Ports(QTreeWidget* tree) { + #ifdef HAVE_DEVINFO_H +- /* Oh neat, current now has a neat little utility called devinfo */ + if (devinfo_init()) +- return false; ++ return false; ++ ++ QStringList headers; ++ headers << i18n("I/O-Range") << i18n("Used By"); ++ tree->setHeaderLabels(headers); + devinfo_foreach_rman(print_ioports, tree); + return true; + #else +@@ -83,50 +90,28 @@ bool GetInfo_IO_Ports(QTreeWidget* tree) + } + + bool GetInfo_SCSI(QTreeWidget* tree) { +- FILE *pipe; +- QTextStream *t; +- QString s; +- + if (!QFileInfo(QLatin1String("/sbin/camcontrol")).exists()) { +- s = i18n("SCSI subsystem could not be queried: /sbin/camcontrol could not be found"); +- QStringList list; +- list << s; +- new QTreeWidgetItem(tree, list); +- } else if ((pipe = popen("/sbin/camcontrol devlist 2>&1", "r")) == NULL) { +- s = i18n("SCSI subsystem could not be queried: /sbin/camcontrol could not be executed"); + QStringList list; +- list << s; ++ list << i18n("SCSI subsystem could not be queried: /sbin/camcontrol could not be found"); + new QTreeWidgetItem(tree, list); +- } else { +- +- /* This prints out a list of all the scsi devies, perhaps eventually we could +- parse it as opposed to schlepping it into a listbox */ +- +- t = new QTextStream(pipe, QIODevice::ReadOnly); +- +- while (true) { +- s = t->readLine(); +- if (s.isEmpty() ) +- break; +- QStringList list; +- list << s; +- new QTreeWidgetItem(tree, list); +- } +- +- delete t; +- pclose(pipe); + } ++ if (GetInfo_ReadfromPipe(tree, "/sbin/camcontrol", QStringList() << "devlist", true)) ++ return true; + +- if (!tree->topLevelItemCount()) +- return false; +- +- return true; ++ return false; + } + + bool GetInfo_PCI(QTreeWidget* tree) { +- FILE *pipe; +- QString s, cmd; +- QTreeWidgetItem *olditem= NULL; ++#ifdef HAVE_PCIUTILS ++// libpci exits immediately if /dev/pci can't be open in rw mode ++ QFile pcidev("/dev/pci"); ++ if (pcidev.open(QIODevice::ReadWrite)) { ++ pcidev.close(); ++ if ( GetInfo_PCIUtils(tree)) { ++ return true; ++ } ++ } ++#endif //HAVE_PCIUTILS + + const QStringList headers(i18nc("@title:column Column name for PCI information", "Information")); + tree->setHeaderLabels(headers); +@@ -136,40 +121,11 @@ bool GetInfo_PCI(QTreeWidget* tree) { + list << i18n("Could not find any programs with which to query your system's PCI information"); + new QTreeWidgetItem(tree, list); + return true; +- } else { +- cmd = "/usr/sbin/pciconf -l -v 2>&1"; + } +- +- // TODO: GetInfo_ReadfromPipe should be improved so that we could pass the program name and its +- // arguments to it and remove most of the code below. +- if ((pipe = popen(cmd.toLatin1(), "r")) == NULL) { +- QStringList list; +- list << i18n("PCI subsystem could not be queried: %1 could not be executed", cmd); +- olditem = new QTreeWidgetItem(olditem, list); +- } else { +- /* This prints out a list of all the pci devies, perhaps eventually we could +- parse it as opposed to schlepping it into a listbox */ +- QTextStream outputStream(pipe, QIODevice::ReadOnly); +- +- while (!outputStream.atEnd()) { +- s = outputStream.readLine(); +- if (s.isEmpty() ) +- break; +- const QStringList list(s); +- new QTreeWidgetItem(tree, list); +- } +- +- pclose(pipe); +- } +- +- if (!tree->topLevelItemCount()) { +- QString str = i18n("The PCI subsystem could not be queried, this may need root privileges."); +- olditem = new QTreeWidgetItem(tree, olditem); +- olditem->setText(0, str); ++ if (GetInfo_ReadfromPipe(tree, "/usr/sbin/pciconf", QStringList() << "-l" << "-v", true)) + return true; +- } + +- return true; ++ return false; + } + + bool GetInfo_XServer_and_Video(QTreeWidget* tree) { +@@ -179,12 +135,7 @@ bool GetInfo_XServer_and_Video(QTreeWidg + #ifdef HAVE_DEVINFO_H + + int print_irq(struct devinfo_rman *rman, void *arg) { +- QTreeWidget* tree = (QTreeWidget *)arg; + if (strcmp(rman->dm_desc, "Interrupt request lines")==0) { +- +- QStringList list; +- list << rman->dm_desc; +- new QTreeWidgetItem(tree, list); + devinfo_foreach_rman_resource(rman, print_resource, arg); + } + return 0; +@@ -192,11 +143,7 @@ int print_irq(struct devinfo_rman *rman, + + int print_dma(struct devinfo_rman *rman, void *arg) + { +- QTreeWidget* tree = (QTreeWidget *)arg; + if (strcmp(rman->dm_desc, "DMA request lines")==0) { +- QStringList list; +- list << rman->dm_desc; +- new QTreeWidgetItem(tree, list); + devinfo_foreach_rman_resource(rman, print_resource, arg); + } + return(0); +@@ -230,29 +177,25 @@ int print_resource(struct devinfo_res *r + int hexmode; + + QTreeWidget* tree = (QTreeWidget*) arg; ++ tree->setFont(KGlobalSettings::fixedFont()); ++ QStringList list; + +- QString s, tmp; ++ QString s; ++ QTextStream result(&s); + + rman = devinfo_handle_to_rman(res->dr_rman); + hexmode = (rman->dm_size > 100) || (rman->dm_size == 0); +- tmp.sprintf(hexmode ? "0x%lx" : "%lu", res->dr_start); +- s += tmp; +- if (res->dr_size > 1) { +- tmp.sprintf(hexmode ? "-0x%lx" : "-%lu", +- res->dr_start + res->dr_size - 1); +- s += tmp; +- } ++ if (hexmode) ++ result << showbase << hex; ++ result << res->dr_start; ++ if (res->dr_size > 1) ++ result << "-" << res->dr_start + res->dr_size - 1; ++ list << s; + + dev = devinfo_handle_to_device(res->dr_device); +- if ((dev != NULL) && (dev->dd_name[0] != 0)) { +- tmp.sprintf(" (%s)", dev->dd_name); +- } else { +- tmp.sprintf(" ----"); +- } +- s += tmp; ++ if ((dev != NULL) && (dev->dd_name[0] != 0)) ++ list << QString(dev->dd_name); + +- QStringList list; +- list << s; + new QTreeWidgetItem(tree, list); + + return 0; +--- kinfocenter/Modules/base/info_hpux.cpp.orig 2015-06-26 03:17:21 UTC ++++ kinfocenter/Modules/base/info_hpux.cpp +@@ -30,6 +30,7 @@ along with this program. If not, see <h + #include <stdlib.h> + #include <QFile> + #include <QFontMetrics> ++#include <QStringList> + #include <QTextStream> + + # define INFO_PCI "" // Please, who know it ???? +@@ -178,14 +179,14 @@ bool GetInfo_PCI(QTreeWidget* tree) { + } + + bool GetInfo_IO_Ports(QListView *lBox) { +- if (GetInfo_ReadfromPipe(lBox, INFO_IOPORTS_1, false)) ++ if (GetInfo_ReadfromPipe(lBox, INFO_IOPORTS_1, QStringList(), false)) + return true; + else +- return GetInfo_ReadfromPipe(lBox, INFO_IOPORTS_2, false); ++ return GetInfo_ReadfromPipe(lBox, INFO_IOPORTS_2, QStringList(), false); + } + + bool GetInfo_SCSI(QListView *lBox) { +- return GetInfo_ReadfromPipe(lBox, INFO_DEVICES, false); ++ return GetInfo_ReadfromPipe(lBox, INFO_DEVICES, QStringList(), false); + } + /* Parts taken from fsusage.c from the Midnight Commander (mc) + +--- kinfocenter/Modules/base/info_linux.cpp.orig 2015-06-26 03:17:21 UTC ++++ kinfocenter/Modules/base/info_linux.cpp +@@ -33,6 +33,7 @@ along with this program. If not, see <h + #include <QRegExp> + #include <QFile> + #include <QHeaderView> ++#include <QStringList> + + #include <klocale.h> + #include <kiconloader.h> +@@ -140,9 +141,12 @@ bool GetInfo_PCI(QTreeWidget* tree) { + tree->setSortingEnabled(false); + + /* try to get the output of the lspci package first */ +- if ((num = GetInfo_ReadfromPipe(tree, "lspci -v", true)) || (num = GetInfo_ReadfromPipe(tree, "/sbin/lspci -v", true)) || (num = GetInfo_ReadfromPipe(tree, "/usr/sbin/lspci -v", true)) || (num = GetInfo_ReadfromPipe(tree, "/usr/local/sbin/lspci -v", true)) || (num = GetInfo_ReadfromPipe(tree, +- "/usr/bin/lspci -v", true))) +- return num; ++ QStringList lspci; ++ lspci << "lspci" << "/sbin/lspci" << "/usr/sbin/lspci" << "/usr/local/sbin/lspci" << "/usr/bin/lspci"; ++ QString p; ++ foreach(p, lspci) ++ if (num = GetInfo_ReadfromPipe(tree, p, QStringList() << "-v", true)) ++ return num; + + /* if lspci failed, read the contents of /proc/pci */ + return GetInfo_ReadfromFile(tree, INFO_PCI, 0); +--- kinfocenter/Modules/base/os_base.h.orig 2015-06-26 03:17:21 UTC ++++ kinfocenter/Modules/base/os_base.h +@@ -330,12 +330,12 @@ static bool GetInfo_XServer_Generic(QTre + } + + /* Helper-function to read output from an external program */ +-static int GetInfo_ReadfromPipe(QTreeWidget* tree, const char *FileName, bool WithEmptyLines = true) { ++static int GetInfo_ReadfromPipe(QTreeWidget* tree, const QString &program, const QStringList &arguments, bool WithEmptyLines = true) { + QProcess proc; + QTreeWidgetItem* olditem= NULL; + QString s; + +- proc.start(FileName, QIODevice::ReadOnly); ++ proc.start(program, arguments, QIODevice::ReadOnly); + if (!proc.waitForFinished()) { + // Process hanged or did not start + return 0; +--- kinfocenter/Modules/info/CMakeLists.txt.orig 2015-06-26 03:17:21 UTC ++++ kinfocenter/Modules/info/CMakeLists.txt +@@ -13,6 +13,9 @@ set(kcm_info_PART_SRCS main.cpp info.cpp + kde4_add_plugin(kcm_info ${kcm_info_PART_SRCS}) + + target_link_libraries(kcm_info ${KDE4_KDEUI_LIBS} ${QT_QTGUI_LIBRARY} ${X11_X11_LIB}) ++if(BSDDEVINFO_FOUND) ++ target_link_libraries(kcm_info ${BSDDEVINFO_LIBRARY}) ++endif(BSDDEVINFO_FOUND) + + install(TARGETS kcm_info DESTINATION ${PLUGIN_INSTALL_DIR} ) + |