unsigned long long int seqnum;
int event_timeout;
int timeout;
- int num_fake_partitions;
int devlink_priority;
int refcount;
dev_t devnum;
unsigned int envp_uptodate:1;
unsigned int driver_set:1;
unsigned int info_loaded:1;
- unsigned int ignore_remove:1;
};
struct udev_list_entry *udev_device_add_property(struct udev_device *udev_device, const char *key, const char *value)
char *next;
target_len = readlink(filename, target, sizeof(target));
- if (target_len > 0)
- target[target_len] = '\0';
- else {
- dbg(udev_device->udev, "error reading db link %s: %m\n", filename);
+ if (target_len <= 0 || target_len == sizeof(target)) {
+ info(udev_device->udev, "error reading db link %s: %m\n", filename);
return -1;
}
+ target[target_len] = '\0';
next = strchr(target, ' ');
if (next != NULL) {
case 'T':
udev_device_set_event_timeout(udev_device, atoi(val));
break;
- case 'A':
- udev_device_set_num_fake_partitions(udev_device, atoi(val));
- break;
- case 'R':
- udev_device_set_ignore_remove(udev_device, atoi(val));
- break;
case 'E':
udev_device_add_property_from_string(udev_device, val);
break;
* @devnum: device major/minor number
*
* Create new udev device, and fill in information from the sys
- * device and the udev database entry. The device is looked up
- * by its major/minor number. Character and block device numbers
- * are not unique across the two types, they do not share the same
- * range of numbers.
+ * device and the udev database entry. The device is looked-up
+ * by its major/minor number and type. Character and block device
+ * numbers are not unique across the two types.
*
* The initial refcount is 1, and needs to be decremented to
* release the resources of the udev 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 subsystem and name string of the device, like "mem",
- * "zero", or "block", "sda".
+ * Create new udev device, and fill in information from the sys device
+ * and the udev database entry. The device is looked up 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
* release the resources of the udev device.
goto out;
len = readlink(path, target, sizeof(target));
- if (len > 0) {
- target[len] = '\0';
- pos = strrchr(target, '/');
- if (pos != NULL) {
- pos = &pos[1];
- dbg(udev_device->udev, "cache '%s' with link value '%s'\n", sysattr, pos);
- list_entry = udev_list_entry_add(udev_device->udev, &udev_device->sysattr_list, sysattr, pos, 0, 0);
- val = udev_list_entry_get_value(list_entry);
- }
+ if (len <= 0 || len == sizeof(target))
+ goto out;
+ target[len] = '\0';
+
+ pos = strrchr(target, '/');
+ if (pos != NULL) {
+ pos = &pos[1];
+ dbg(udev_device->udev, "cache '%s' with link value '%s'\n", sysattr, pos);
+ list_entry = udev_list_entry_add(udev_device->udev, &udev_device->sysattr_list, sysattr, pos, 0, 0);
+ val = udev_list_entry_get_value(list_entry);
}
+
goto out;
}
return 0;
}
-int udev_device_get_num_fake_partitions(struct udev_device *udev_device)
-{
- if (!udev_device->info_loaded)
- device_load_info(udev_device);
- return udev_device->num_fake_partitions;
-}
-
-int udev_device_set_num_fake_partitions(struct udev_device *udev_device, int num)
-{
- udev_device->num_fake_partitions = num;
- return 0;
-}
-
int udev_device_get_devlink_priority(struct udev_device *udev_device)
{
if (!udev_device->info_loaded)
return 0;
}
-int udev_device_get_ignore_remove(struct udev_device *udev_device)
-{
- if (!udev_device->info_loaded)
- device_load_info(udev_device);
- return udev_device->ignore_remove;
-}
-
-int udev_device_set_ignore_remove(struct udev_device *udev_device, int ignore)
-{
- udev_device->ignore_remove = ignore;
- return 0;
-}
-
int udev_device_get_watch_handle(struct udev_device *udev_device)
{
if (!udev_device->info_loaded)