rfkill: Do not log errors for missing device path

In the case of our products, we lack a physical RFKILL switch and do
not have the rfkill module enabled in the kernel which resulted in an
error message each time bluetoothd was started.

This commit looks at the errno code after failing to open the RFKILL
device and only logs an error if it is something other than ENOENT
(No such file or directory).

Fixes: https://github.com/bluez/bluez/issues/792
This commit is contained in:
Marcus Prebble 2024-11-13 15:12:56 +01:00 committed by Luiz Augusto von Dentz
parent f0302d90a1
commit 63f1ab560c

View File

@ -55,6 +55,7 @@ struct rfkill_event {
uint8_t hard;
};
#define RFKILL_EVENT_SIZE_V1 8
#define RFKILL_DEVICE_PATH "/dev/rfkill"
static int get_adapter_id_for_rfkill(uint32_t rfkill_id)
{
@ -88,7 +89,7 @@ int rfkill_get_blocked(uint16_t index)
int fd;
int blocked = -1;
fd = open("/dev/rfkill", O_RDWR);
fd = open(RFKILL_DEVICE_PATH, O_RDWR);
if (fd < 0) {
DBG("Failed to open RFKILL control device");
return -1;
@ -178,9 +179,16 @@ void rfkill_init(void)
int fd;
GIOChannel *channel;
fd = open("/dev/rfkill", O_RDWR);
errno = 0;
fd = open(RFKILL_DEVICE_PATH, O_RDWR);
if (fd < 0) {
error("Failed to open RFKILL control device");
if (errno == ENOENT) {
DBG("No RFKILL device available at '%s'",
RFKILL_DEVICE_PATH);
} else {
error("Failed to open RFKILL control device: %s",
strerror(errno));
}
return;
}