chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
libudev: allow to store negative values in the udev database
[elogind.git]
/
libudev
/
libudev-device.c
diff --git
a/libudev/libudev-device.c
b/libudev/libudev-device.c
index 22d8349275d1fcaef57a3cd47becd716279993b2..5d1ad9f223acb307adc65c9dec6f0af681807a1d 100644
(file)
--- a/
libudev/libudev-device.c
+++ b/
libudev/libudev-device.c
@@
-123,7
+123,7
@@
int udev_device_read_db(struct udev_device *udev_device)
next = &next[1];
}
util_strscpyl(devlink, sizeof(devlink), udev_get_dev_path(udev_device->udev), "/", lnk, NULL);
next = &next[1];
}
util_strscpyl(devlink, sizeof(devlink), udev_get_dev_path(udev_device->udev), "/", lnk, NULL);
- udev_device_add_devlink(udev_device, devlink);
+ udev_device_add_devlink(udev_device, devlink
, 0
);
}
info(udev_device->udev, "device %p filled with db symlink data '%s'\n", udev_device, udev_device->devnode);
return 0;
}
info(udev_device->udev, "device %p filled with db symlink data '%s'\n", udev_device, udev_device->devnode);
return 0;
@@
-150,7
+150,7
@@
int udev_device_read_db(struct udev_device *udev_device)
break;
case 'S':
util_strscpyl(filename, sizeof(filename), udev_get_dev_path(udev_device->udev), "/", val, NULL);
break;
case 'S':
util_strscpyl(filename, sizeof(filename), udev_get_dev_path(udev_device->udev), "/", val, NULL);
- udev_device_add_devlink(udev_device, filename);
+ udev_device_add_devlink(udev_device, filename
, 0
);
break;
case 'L':
udev_device_set_devlink_priority(udev_device, atoi(val));
break;
case 'L':
udev_device_set_devlink_priority(udev_device, atoi(val));
@@
-1118,11
+1118,16
@@
int udev_device_set_devnode(struct udev_device *udev_device, const char *devnode
return 0;
}
return 0;
}
-int udev_device_add_devlink(struct udev_device *udev_device, const char *devlink)
+int udev_device_add_devlink(struct udev_device *udev_device, const char *devlink
, int unique
)
{
{
+ struct udev_list_entry *list_entry;
+
udev_device->devlinks_uptodate = 0;
udev_device->devlinks_uptodate = 0;
- if (udev_list_entry_add(udev_device->udev, &udev_device->devlinks_list, devlink, NULL, 1, 0) == NULL)
+ list_entry = udev_list_entry_add(udev_device->udev, &udev_device->devlinks_list, devlink, NULL, 1, 0);
+ if (list_entry == NULL)
return -ENOMEM;
return -ENOMEM;
+ if (unique)
+ udev_list_entry_set_flag(list_entry, 1);
return 0;
}
return 0;
}