do not handle unique values when no need

This commit is contained in:
illiliti
2020-07-29 12:27:40 +03:00
parent edaf268cac
commit 9b7641d9ec
4 changed files with 36 additions and 34 deletions
+18 -18
View File
@@ -254,7 +254,7 @@ const char *udev_device_get_sysattr_value(struct udev_device *udev_device, const
close(fd);
data[strcspn(data, "\n")] = '\0';
list_entry = udev_list_entry_add(&udev_device->sysattrs, sysattr, data);
list_entry = udev_list_entry_add(&udev_device->sysattrs, sysattr, data, 0);
return udev_list_entry_get_value(list_entry);
}
@@ -286,7 +286,7 @@ int udev_device_set_sysattr_value(struct udev_device *udev_device, const char *s
}
close(fd);
udev_list_entry_add(&udev_device->sysattrs, sysattr, value);
udev_list_entry_add(&udev_device->sysattrs, sysattr, value, 1);
return 0;
}
@@ -326,14 +326,14 @@ static void udev_device_set_properties_from_uevent(struct udev_device *udev_devi
if (strncmp(line, "DEVNAME", 7) == 0) {
snprintf(devnode, sizeof(devnode), "/dev/%s", line + 8);
udev_list_entry_add(&udev_device->properties, "DEVNAME", devnode);
udev_list_entry_add(&udev_device->properties, "DEVNAME", devnode, 0);
}
else if (strchr(line, '=')) {
val = strchr(line, '=') + 1;
key = line;
key[strcspn(key, "=")] = '\0';
udev_list_entry_add(&udev_device->properties, key, val);
udev_list_entry_add(&udev_device->properties, key, val, 1);
}
}
@@ -357,7 +357,7 @@ static void udev_device_set_properties_from_ioctl(struct udev_device *udev_devic
return;
}
udev_list_entry_add(&udev_device->properties, "ID_INPUT", "1");
udev_list_entry_add(&udev_device->properties, "ID_INPUT", "1", 0);
fd = open(udev_device_get_devnode(udev_device), O_RDONLY);
@@ -374,30 +374,30 @@ static void udev_device_set_properties_from_ioctl(struct udev_device *udev_devic
}
if (test_bit(bits, EV_SW)) {
udev_list_entry_add(&udev_device->properties, "ID_INPUT_SWITCH", "1");
udev_list_entry_add(&udev_device->properties, "ID_INPUT_SWITCH", "1", 0);
}
if (test_bit(bits, EV_KEY) && test_bit(key_bits, KEY_ENTER)) {
udev_list_entry_add(&udev_device->properties, "ID_INPUT_KEY", "1");
udev_list_entry_add(&udev_device->properties, "ID_INPUT_KEYBOARD", "1");
udev_list_entry_add(&udev_device->properties, "ID_INPUT_KEY", "1", 0);
udev_list_entry_add(&udev_device->properties, "ID_INPUT_KEYBOARD", "1", 0);
}
if (test_bit(bits, EV_REL) && test_bit(rel_bits, REL_Y) && test_bit(rel_bits, REL_X) &&
test_bit(key_bits, BTN_MOUSE)) {
udev_list_entry_add(&udev_device->properties, "ID_INPUT_MOUSE", "1");
udev_list_entry_add(&udev_device->properties, "ID_INPUT_MOUSE", "1", 0);
}
if (test_bit(bits, EV_ABS) && test_bit(abs_bits, ABS_Y) && test_bit(abs_bits, ABS_X)) {
if (test_bit(key_bits, BTN_TOUCH) && !test_bit(key_bits, BTN_TOOL_PEN)) {
if (test_bit(key_bits, BTN_TOOL_FINGER)) {
udev_list_entry_add(&udev_device->properties, "ID_INPUT_TOUCHPAD", "1");
udev_list_entry_add(&udev_device->properties, "ID_INPUT_TOUCHPAD", "1", 0);
}
else {
udev_list_entry_add(&udev_device->properties, "ID_INPUT_TOUCHSCREEN", "1");
udev_list_entry_add(&udev_device->properties, "ID_INPUT_TOUCHSCREEN", "1", 0);
}
}
else if (test_bit(key_bits, BTN_MOUSE)) {
udev_list_entry_add(&udev_device->properties, "ID_INPUT_MOUSE", "1");
udev_list_entry_add(&udev_device->properties, "ID_INPUT_MOUSE", "1", 0);
}
}
@@ -438,15 +438,15 @@ struct udev_device *udev_device_new_from_syspath(struct udev *udev, const char *
udev_list_entry_init(&udev_device->properties);
udev_list_entry_init(&udev_device->sysattrs);
udev_list_entry_add(&udev_device->properties, "SYSPATH", path);
udev_list_entry_add(&udev_device->properties, "DEVPATH", path + 4);
udev_list_entry_add(&udev_device->properties, "SYSPATH", path, 0);
udev_list_entry_add(&udev_device->properties, "DEVPATH", path + 4, 0);
sysname = strrchr(path, '/') + 1;
udev_list_entry_add(&udev_device->properties, "SYSNAME", sysname);
udev_list_entry_add(&udev_device->properties, "SYSNAME", sysname, 0);
for (i = 0; sysname[i] != '\0'; i++) {
if (sysname[i] >= '0' && sysname[i] <= '9') {
udev_list_entry_add(&udev_device->properties, "SYSNUM", sysname + i);
udev_list_entry_add(&udev_device->properties, "SYSNUM", sysname + i, 0);
break;
}
}
@@ -454,14 +454,14 @@ struct udev_device *udev_device_new_from_syspath(struct udev *udev, const char *
subsystem = udev_device_read_symlink(udev_device, "subsystem");
if (subsystem) {
udev_list_entry_add(&udev_device->properties, "SUBSYSTEM", subsystem);
udev_list_entry_add(&udev_device->properties, "SUBSYSTEM", subsystem, 0);
free(subsystem);
}
driver = udev_device_read_symlink(udev_device, "driver");
if (driver) {
udev_list_entry_add(&udev_device->properties, "DRIVER", driver);
udev_list_entry_add(&udev_device->properties, "DRIVER", driver, 0);
free(driver);
}
+7 -7
View File
@@ -35,7 +35,7 @@ int udev_enumerate_add_match_subsystem(struct udev_enumerate *udev_enumerate, co
return -1;
}
return udev_list_entry_add(&udev_enumerate->subsystem_match, subsystem, NULL) ? 0 : -1;
return udev_list_entry_add(&udev_enumerate->subsystem_match, subsystem, NULL, 0) ? 0 : -1;
}
int udev_enumerate_add_nomatch_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem)
@@ -44,7 +44,7 @@ int udev_enumerate_add_nomatch_subsystem(struct udev_enumerate *udev_enumerate,
return -1;
}
return udev_list_entry_add(&udev_enumerate->subsystem_nomatch, subsystem, NULL) ? 0 : -1;
return udev_list_entry_add(&udev_enumerate->subsystem_nomatch, subsystem, NULL, 0) ? 0 : -1;
}
int udev_enumerate_add_match_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value)
@@ -53,7 +53,7 @@ int udev_enumerate_add_match_sysattr(struct udev_enumerate *udev_enumerate, cons
return -1;
}
return udev_list_entry_add(&udev_enumerate->sysattr_match, sysattr, value) ? 0 : -1;
return udev_list_entry_add(&udev_enumerate->sysattr_match, sysattr, value, 0) ? 0 : -1;
}
int udev_enumerate_add_nomatch_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value)
@@ -62,7 +62,7 @@ int udev_enumerate_add_nomatch_sysattr(struct udev_enumerate *udev_enumerate, co
return -1;
}
return udev_list_entry_add(&udev_enumerate->sysattr_nomatch, sysattr, value) ? 0 : -1;
return udev_list_entry_add(&udev_enumerate->sysattr_nomatch, sysattr, value, 0) ? 0 : -1;
}
int udev_enumerate_add_match_property(struct udev_enumerate *udev_enumerate, const char *property, const char *value)
@@ -71,7 +71,7 @@ int udev_enumerate_add_match_property(struct udev_enumerate *udev_enumerate, con
return -1;
}
return udev_list_entry_add(&udev_enumerate->property_match, property, value) ? 0 : -1;
return udev_list_entry_add(&udev_enumerate->property_match, property, value, 0) ? 0 : -1;
}
int udev_enumerate_add_match_sysname(struct udev_enumerate *udev_enumerate, const char *sysname)
@@ -80,7 +80,7 @@ int udev_enumerate_add_match_sysname(struct udev_enumerate *udev_enumerate, cons
return -1;
}
return udev_list_entry_add(&udev_enumerate->sysname_match, sysname, NULL) ? 0 : -1;
return udev_list_entry_add(&udev_enumerate->sysname_match, sysname, NULL, 0) ? 0 : -1;
}
int udev_enumerate_add_match_tag(struct udev_enumerate *udev_enumerate, const char *tag)
@@ -274,7 +274,7 @@ static void *udev_enumerate_add_device(void *ptr)
udev_device_unref(udev_device);
pthread_mutex_lock(data->mutex);
udev_list_entry_add(&data->udev_enumerate->devices, path, NULL);
udev_list_entry_add(&data->udev_enumerate->devices, path, NULL, 0);
pthread_mutex_unlock(data->mutex);
return NULL;
+10 -8
View File
@@ -31,20 +31,22 @@ void udev_list_entry_free_all(struct udev_list_entry *list_entry)
}
}
struct udev_list_entry *udev_list_entry_add(struct udev_list_entry *list_entry, const char *name, const char *value)
struct udev_list_entry *udev_list_entry_add(struct udev_list_entry *list_entry, const char *name, const char *value, int uniq)
{
struct udev_list_entry *new, *old;
old = udev_list_entry_get_by_name(list_entry, name);
if (uniq) {
old = udev_list_entry_get_by_name(list_entry, name);
if (old) {
if (old->value && strcmp(old->value, value) == 0) {
if (old) {
if (old->value && strcmp(old->value, value) == 0) {
return old;
}
free(old->value);
old->value = value ? strdup(value) : NULL;
return old;
}
free(old->value);
old->value = value ? strdup(value) : NULL;
return old;
}
new = calloc(1, sizeof(struct udev_list_entry));
+1 -1
View File
@@ -7,4 +7,4 @@ struct udev_list_entry {
void udev_list_entry_init(struct udev_list_entry *list_entry);
void udev_list_entry_free(struct udev_list_entry *list_entry);
void udev_list_entry_free_all(struct udev_list_entry *list_entry);
struct udev_list_entry *udev_list_entry_add(struct udev_list_entry *list_entry, const char *name, const char *value);
struct udev_list_entry *udev_list_entry_add(struct udev_list_entry *list_entry, const char *name, const char *value, int uniq);