X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fudev-event.c;h=45dd77ba2edbaef83457f6747527a08c626132bf;hb=e7f32890335886cfa0f2f835413aed5af8ac2b53;hp=f0b9548f3dc07e926192b402b2e868d0eaf9e485;hpb=e64fae5573e566ce4fd9b23c68ac8f3096603314;p=elogind.git diff --git a/src/udev-event.c b/src/udev-event.c index f0b9548f3..45dd77ba2 100644 --- a/src/udev-event.c +++ b/src/udev-event.c @@ -346,15 +346,21 @@ subst: if (udev_device_get_devnode(dev) != NULL) l = util_strpcpy(&s, l, udev_device_get_devnode(dev)); break; - case SUBST_NAME: + case SUBST_NAME: { if (event->name != NULL) { l = util_strpcpy(&s, l, event->name); - dbg(event->udev, "substitute name '%s'\n", event->name); + dbg(event->udev, "substitute custom node name '%s'\n", event->name); + } else if (udev_device_get_devnode(dev) != NULL) { + size_t devlen = strlen(udev_get_dev_path(event->udev))+1; + + l = util_strpcpy(&s, l, &udev_device_get_devnode(dev)[devlen]); + dbg(event->udev, "substitute node name'%s'\n", &udev_device_get_devnode(dev)[devlen]); } else { l = util_strpcpy(&s, l, udev_device_get_sysname(dev)); - dbg(event->udev, "substitute sysname '%s'\n", udev_device_get_sysname(dev)); + dbg(event->udev, "substitute device name'%s'\n", udev_device_get_sysname(dev)); } break; + } case SUBST_LINKS: { size_t devlen = strlen(udev_get_dev_path(event->udev))+1; struct udev_list_entry *list_entry; @@ -888,7 +894,7 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, udev_rules_apply_to_event(rules, event, sigmask); if (major(udev_device_get_devnum(dev)) != 0) - err = udev_node_remove(dev); + udev_node_remove(dev); } else { event->dev_db = udev_device_new_from_syspath(event->udev, udev_device_get_syspath(dev)); if (event->dev_db != NULL) { @@ -928,7 +934,7 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, } } - if (major(udev_device_get_devnum(dev)) != 0) { + if (major(udev_device_get_devnum(dev)) > 0) { /* remove/update possible left-over symlinks from old database entry */ if (event->dev_db != NULL) udev_node_update_old_links(dev, event->dev_db); @@ -946,7 +952,7 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, } } - err = udev_node_add(dev, event->mode, event->uid, event->gid); + udev_node_add(dev, event->mode, event->uid, event->gid); } /* preserve old, or get new initialization timestamp */