From 4154cf252c17297f98a8ca33693ead003b4509da Mon Sep 17 00:00:00 2001
|
|
From: illiliti <illiliti@protonmail.com>
|
|
Date: Thu, 16 Dec 2021 07:09:16 +0300
|
|
Subject: [PATCH 15/15] udev_enumerate.c: support NULL value in match/nomatch
|
|
|
|
Fixes: #45
|
|
---
|
|
udev_enumerate.c | 16 +++++-----------
|
|
1 file changed, 5 insertions(+), 11 deletions(-)
|
|
|
|
--- a/udev_enumerate.c
|
|
+++ b/udev_enumerate.c
|
|
@@ -193,20 +193,17 @@ static int filter_property(struct udev_e
|
|
|
|
static int filter_sysattr(struct udev_enumerate *udev_enumerate, struct udev_device *udev_device)
|
|
{
|
|
+ const char *sysattr, *value, *value2;
|
|
struct udev_list_entry *list_entry;
|
|
- const char *sysattr, *value;
|
|
|
|
list_entry = udev_list_entry_get_next(&udev_enumerate->sysattr_nomatch);
|
|
|
|
while (list_entry) {
|
|
sysattr = udev_list_entry_get_name(list_entry);
|
|
+ value2 = udev_list_entry_get_value(list_entry);
|
|
value = udev_device_get_sysattr_value(udev_device, sysattr);
|
|
|
|
- if (!value) {
|
|
- return 1;
|
|
- }
|
|
-
|
|
- if (fnmatch(udev_list_entry_get_value(list_entry), value, 0) == 0) {
|
|
+ if (value && value2 && fnmatch(value2, value, 0) == 0) {
|
|
return 0;
|
|
}
|
|
|
|
@@ -218,13 +215,10 @@ static int filter_sysattr(struct udev_en
|
|
if (list_entry) {
|
|
while (list_entry) {
|
|
sysattr = udev_list_entry_get_name(list_entry);
|
|
+ value2 = udev_list_entry_get_value(list_entry);
|
|
value = udev_device_get_sysattr_value(udev_device, sysattr);
|
|
|
|
- if (!value) {
|
|
- return 0;
|
|
- }
|
|
-
|
|
- if (fnmatch(udev_list_entry_get_value(list_entry), value, 0) == 0) {
|
|
+ if (value && value2 && fnmatch(value2, value, 0) == 0) {
|
|
return 1;
|
|
}
|
|
|