do not handle unique values when no need
This commit is contained in:
+18
-18
@@ -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
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user