* Representation of kernel sys devices. Devices are uniquely identified
* by their syspath, every device has exactly one path in the kernel sys
* filesystem. Devices usually belong to a kernel subsystem, and and have
- * a unique name inside that subsytem.
+ * a unique name inside that subsystem.
*/
/**
* @syspath: sys device path including sys directory
*
* Create new udev device, and fill in information from the sys
- * device and the udev database entry. The sypath is the absolute
+ * device and the udev database entry. The syspath is the absolute
* path to the device, including the sys mount point.
*
* The initial refcount is 1, and needs to be decremented to
/**
* udev_device_new_from_subsystem_sysname:
* @udev: udev library context
- * @subsystem: the subsytem of the device
+ * @subsystem: the subsystem of the device
* @sysname: the name of the device
*
* Create new udev device, and fill in information from the sys
* device and the udev database entry. The device is looked up
- * by the subsytem and name string of the device, like "mem",
+ * by the subsystem and name string of the device, like "mem",
* "zero", or "block", "sda".
*
* The initial refcount is 1, and needs to be decremented to
* child device, and will be cleaned up when the child device
* is cleaned up.
*
- * It is not neccessarily just the upper level directory, empty or not
+ * It is not necessarily just the upper level directory, empty or not
* recognized sys directories are ignored.
*
* It can be called as many times as needed, without caring about
/**
* udev_device_get_parent_with_subsystem_devtype:
* @udev_device: udev device to start searching from
- * @subsystem: the subsytem of the device
+ * @subsystem: the subsystem of the device
* @devtype: the type (DEVTYPE) of the device
*
* Find the next parent device, with a matching subsystem and devtype
* It can be called as many times as needed, without caring about
* references.
*
- * Returns: a new udev device, or #NULL, if no matching parent exists.
+ * Returns: a new udev device, or #NULL if no matching parent exists.
**/
struct udev_device *udev_device_get_parent_with_subsystem_devtype(struct udev_device *udev_device, const char *subsystem, const char *devtype)
{
return NULL;
if (!udev_device->subsystem_set) {
udev_device->subsystem_set = 1;
- /* read "subsytem" link */
+ /* read "subsystem" link */
if (util_get_sys_subsystem(udev_device->udev, udev_device->syspath, subsystem, sizeof(subsystem)) > 0) {
udev_device_set_subsystem(udev_device, subsystem);
return udev_device->subsystem;
* @udev_device: udev device
* @sysattr: attribute name
*
- * The retrieved value is cached in the device. Repeated reads will return the same
+ * The retrieved value is cached in the device. Repeated calls will return the same
* value and not open the attribute again.
*
* Returns: the content of a sys attribute file, or #NULL if there is no sys attribute value.
s = udev_device->monitor_buf;
l = MONITOR_BUF_SIZE;
udev_list_entry_foreach(list_entry, udev_device_get_properties_list_entry(udev_device)) {
+ const char *key;
+
+ key = udev_list_entry_get_name(list_entry);
+ /* skip private variables */
+ if (key[0] == '.')
+ continue;
+
/* add string to envp array */
udev_device->envp[i++] = s;
if (i+1 >= ENVP_SIZE)
return -EINVAL;
/* add property string to monitor buffer */
- l = util_strpcpyl(&s, l, udev_list_entry_get_name(list_entry), "=",
- udev_list_entry_get_value(list_entry), NULL);
+ l = util_strpcpyl(&s, l, key, "=", udev_list_entry_get_value(list_entry), NULL);
if (l == 0)
return -EINVAL;
s++;
int udev_device_set_devpath_old(struct udev_device *udev_device, const char *devpath_old)
{
+ free(udev_device->devpath_old);
udev_device->devpath_old = strdup(devpath_old);
if (udev_device->devpath_old == NULL)
return -ENOMEM;
int udev_device_set_knodename(struct udev_device *udev_device, const char *knodename)
{
+ free(udev_device->knodename);
udev_device->knodename = strdup(knodename);
if (udev_device->knodename == NULL)
return -ENOMEM;
+ udev_device_add_property(udev_device, "DEVNAME", udev_device->knodename);
return 0;
}