chiark / gitweb /
udev: do not skip the execution of RUN when renaming a network device fails
[elogind.git] / src / udev / udev-event.c
index 228232bf79f3f6ddfa4757308f77428e9a342443..5213a4abaa939b77ef559db847ba989d82a19f4d 100644 (file)
@@ -39,7 +39,7 @@ struct udev_event *udev_event_new(struct udev_device *dev)
         struct udev *udev = udev_device_get_udev(dev);
         struct udev_event *event;
 
-        event = calloc(1, sizeof(struct udev_event));
+        event = new0(struct udev_event, 1);
         if (event == NULL)
                 return NULL;
         event->dev = dev;
@@ -254,6 +254,8 @@ subst:
                                                 cpos++;
                                         while (isspace(cpos[0]))
                                                 cpos++;
+                                        if (cpos[0] == '\0')
+                                                break;
                                 }
                                 if (i > 0) {
                                         log_error("requested part of result string not found");
@@ -748,7 +750,7 @@ out:
 static int rename_netif(struct udev_event *event)
 {
         struct udev_device *dev = event->dev;
-        _cleanup_sd_rtnl_unref_ sd_rtnl *rtnl = NULL;
+        _cleanup_rtnl_unref_ sd_rtnl *rtnl = NULL;
         char name[IFNAMSIZ];
         const char *oldname;
         int r;
@@ -760,7 +762,7 @@ static int rename_netif(struct udev_event *event)
 
         strscpy(name, IFNAMSIZ, event->name);
 
-        r = sd_rtnl_open(0, &rtnl);
+        r = sd_rtnl_open(&rtnl, 0);
         if (r < 0)
                 return r;
 
@@ -769,18 +771,17 @@ static int rename_netif(struct udev_event *event)
                 log_error("error changing net interface name %s to %s: %s",
                           oldname, name, strerror(-r));
         else
-                print_kmsg("renamed network interface %s to %s", oldname, name);
+                print_kmsg("renamed network interface %s to %s\n", oldname, name);
 
         return r;
 }
 
-int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, const sigset_t *sigmask)
+void udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, const sigset_t *sigmask)
 {
         struct udev_device *dev = event->dev;
-        int err = 0;
 
         if (udev_device_get_subsystem(dev) == NULL)
-                return -1;
+                return;
 
         if (streq(udev_device_get_action(dev), "remove")) {
                 udev_device_read_db(dev, NULL);
@@ -814,9 +815,10 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules,
                     event->name != NULL && !streq(event->name, udev_device_get_sysname(dev))) {
                         char syspath[UTIL_PATH_SIZE];
                         char *pos;
+                        int r;
 
-                        err = rename_netif(event);
-                        if (err == 0) {
+                        r = rename_netif(event);
+                        if (r >= 0) {
                                 log_debug("renamed netif to '%s'", event->name);
 
                                 /* remember old name */
@@ -879,7 +881,6 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules,
                 udev_device_unref(event->dev_db);
                 event->dev_db = NULL;
         }
-        return err;
 }
 
 void udev_event_execute_run(struct udev_event *event, const sigset_t *sigmask)