From dbc5f9a9c8f49cd2fe33eed5c7363982eb44b004 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Sun, 13 Jun 2021 02:48:04 +0300 Subject: [PATCH] solid: deal with FIXME related to UDev backend and FreeBSD input devices are detected, if more functionality is implemented in libudev-devd (https://github.com/FreeBSDDesktop/libudev-devd) and linprocfs (https://www.freebsd.org/cgi/man.cgi?linprocfs(5)) more backend features may be working Signed-off-by: Ivailo Monev --- solid/solid/CMakeLists.txt | 3 +-- solid/solid/backends/udev/udevnetworkinterface.cpp | 14 +++++++++++++- solid/solid/managerbase.cpp | 4 ++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/solid/solid/CMakeLists.txt b/solid/solid/CMakeLists.txt index 0d67a0c2..13e97672 100644 --- a/solid/solid/CMakeLists.txt +++ b/solid/solid/CMakeLists.txt @@ -126,8 +126,7 @@ if(HUPNP_FOUND) set(solid_OPTIONAL_LIBS ${solid_OPTIONAL_LIBS} ${HUPNP_LIBS}) endif() -# FIXME: this may work on BSD with some adjustments -if(UDEV_FOUND AND CMAKE_SYSTEM_NAME MATCHES Linux) +if(UDEV_FOUND) include_directories(${UDEV_INCLUDES}) message(STATUS "Building Solid UDev backend.") set(solid_LIB_SRCS ${solid_LIB_SRCS} diff --git a/solid/solid/backends/udev/udevnetworkinterface.cpp b/solid/solid/backends/udev/udevnetworkinterface.cpp index dadcace2..7e431bf1 100644 --- a/solid/solid/backends/udev/udevnetworkinterface.cpp +++ b/solid/solid/backends/udev/udevnetworkinterface.cpp @@ -26,12 +26,15 @@ #include #include #include + +#ifdef Q_OS_LINUX #include #include +#endif #include #include -#include +#include #include using namespace Solid::Backends::UDev; @@ -54,6 +57,7 @@ QString NetworkInterface::ifaceName() const bool NetworkInterface::isWireless() const { +#ifdef Q_OS_LINUX QFile typeFile(m_device->deviceName() + "/type"); if (!typeFile.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug() << "UdevNetworkInterface: typeFile can't be opened"; @@ -75,12 +79,16 @@ bool NetworkInterface::isWireless() const } close(ioctl_fd); } +#else +#warning Not implemented for non-Linux platforms +#endif // Q_OS_LINUX return false; } bool NetworkInterface::isLoopback() const { +#ifdef Q_OS_LINUX QFile typeFile(m_device->deviceName() + "/type"); if (!typeFile.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug() << "UdevNetworkInterface: typeFile can't be opened"; @@ -89,6 +97,10 @@ bool NetworkInterface::isLoopback() const int mediaType = typeFile.readAll().trimmed().toInt(); return (mediaType == ARPHRD_LOOPBACK); +#else +#warning Not implemented for non-Linux platforms + return false; +#endif } QString NetworkInterface::hwAddress() const diff --git a/solid/solid/managerbase.cpp b/solid/solid/managerbase.cpp index f6e9418d..8fa00f7a 100644 --- a/solid/solid/managerbase.cpp +++ b/solid/solid/managerbase.cpp @@ -26,7 +26,7 @@ #include "backends/fakehw/fakemanager.h" #include "backends/fstab/fstabmanager.h" -#if defined (UDEV_FOUND) && defined(Q_OS_LINUX) +#if defined (UDEV_FOUND) #include "backends/udev/udevmanager.h" #endif @@ -52,7 +52,7 @@ void Solid::ManagerBasePrivate::loadBackends() } else { m_backends << new Solid::Backends::Fstab::FstabManager(0); -# if defined(UDEV_FOUND) && defined(Q_OS_LINUX) +# if defined(UDEV_FOUND) m_backends << new Solid::Backends::UDev::UDevManager(0); # endif