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 <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2021-06-13 02:48:04 +03:00
parent 0b472471a5
commit dbc5f9a9c8
3 changed files with 16 additions and 5 deletions

View file

@ -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}

View file

@ -26,12 +26,15 @@
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <unistd.h>
#ifdef Q_OS_LINUX
#include <linux/if_arp.h>
#include <linux/wireless.h>
#endif
#include <QFile>
#include <QFileInfo>
#include <QtCore/QStringList>
#include <QStringList>
#include <QDebug>
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

View file

@ -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