chiark / gitweb /
udev/libudev: event - move {OLD_,}INTERFACE handling from udevd to libudev
authorTom Gundersen <teg@jklm.no>
Thu, 5 Mar 2015 16:44:12 +0000 (17:44 +0100)
committerTom Gundersen <teg@jklm.no>
Mon, 9 Mar 2015 21:50:44 +0000 (22:50 +0100)
This should be internal to the library as it is only about reflecting the sysfs state in the udev_device.

src/libudev/libudev-device.c
src/udev/udev-event.c

index d0296b7..978b03d 100644 (file)
@@ -1926,6 +1926,7 @@ void udev_device_set_db_persist(struct udev_device *udev_device)
 int udev_device_rename(struct udev_device *udev_device, const char *name)
 {
         _cleanup_free_ char *dirname = NULL;
+        const char *interface;
         char *new_syspath;
         int r;
 
@@ -1942,6 +1943,13 @@ int udev_device_rename(struct udev_device *udev_device, const char *name)
         if (r < 0)
                 return r;
 
+        interface = udev_device_get_property_value(udev_device, "INTERFACE");
+        if (interface) {
+                /* like DEVPATH_OLD, INTERFACE_OLD is not saved to the db, but only stays around for the current event */
+                udev_device_add_property(udev_device, "INTERFACE_OLD", interface);
+                udev_device_add_property(udev_device, "INTERFACE", name);
+        }
+
         return 0;
 }
 
index 1c5d5e9..e5a5175 100644 (file)
@@ -849,20 +849,12 @@ void udev_event_execute_rules(struct udev_event *event,
                                 log_warning_errno(r, "could not rename interface '%d' from '%s' to '%s': %m", udev_device_get_ifindex(dev),
                                                   udev_device_get_sysname(dev), event->name);
                         else {
-                                const char *interface_old;
-
-                                /* remember old name */
-                                interface_old = udev_device_get_sysname(dev);
-
                                 r = udev_device_rename(dev, event->name);
                                 if (r < 0)
                                         log_warning_errno(r, "renamed interface '%d' from '%s' to '%s', but could not update udev_device: %m",
                                                           udev_device_get_ifindex(dev), udev_device_get_sysname(dev), event->name);
-                                else {
-                                        udev_device_add_property(dev, "INTERFACE_OLD", interface_old);
-                                        udev_device_add_property(dev, "INTERFACE", event->name);
+                                else
                                         log_debug("changed devpath to '%s'", udev_device_get_devpath(dev));
-                                }
                         }
                 }