chiark / gitweb /
extras: path_id - add comment about readdir() rebase logic
[elogind.git] / src / udev-event.c
index 9bdc5186df16603ed057e2dff0ab5cf62b67bd03..45dd77ba2edbaef83457f6747527a08c626132bf 100644 (file)
@@ -49,7 +49,7 @@ struct udev_event *udev_event_new(struct udev_device *dev)
         udev_list_init(udev, &event->run_list, false);
         event->fd_signal = -1;
         event->birth_usec = now_usec();
-        event->timeout_usec = 60 * 1000 * 1000;
+        event->timeout_usec = 30 * 1000 * 1000;
         dbg(event->udev, "allocated event %p\n", event);
         return event;
 }
@@ -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 */