chiark / gitweb /
[PATCH] add /etc/dev.d/ support for udev add and remove events.
[elogind.git] / udev-add.c
index de1fb953c4e774c8427bbb4d1646ab9d53f88e5c..94a423dc6e56f36fe29d1b9f5f20352740be1a18 100644 (file)
@@ -37,6 +37,7 @@
 
 #include "libsysfs/sysfs/libsysfs.h"
 #include "udev.h"
+#include "udev_lib.h"
 #include "udev_version.h"
 #include "udev_dbus.h"
 #include "udev_selinux.h"
@@ -141,7 +142,7 @@ static void set_to_local_user(char *user)
        struct utmp *u;
        time_t recent = 0;
 
-       strnfieldcpy(user, default_owner_str, OWNER_SIZE);
+       strfieldcpymax(user, default_owner_str, OWNER_SIZE);
        setutent();
        while (1) {
                u = getutent();
@@ -158,7 +159,7 @@ static void set_to_local_user(char *user)
 
                if (u->ut_time > recent) {
                        recent = u->ut_time;
-                       strnfieldcpy(user, u->ut_user, OWNER_SIZE);
+                       strfieldcpymax(user, u->ut_user, OWNER_SIZE);
                        dbg("local user is '%s'", user);
                        break;
                }
@@ -282,7 +283,7 @@ static int create_node(struct udevice *dev, int fake)
 
        /* create symlink if requested */
        foreach_strpart(dev->symlink, " ", pos, len) {
-               strnfieldcpy(linkname, pos, len+1);
+               strfieldcpymax(linkname, pos, len+1);
                strfieldcpy(filename, udev_root);
                strfieldcat(filename, linkname);
                dbg("symlink '%s' to node '%s' requested", filename, dev->name);
@@ -416,8 +417,10 @@ int udev_add_device(char *path, char *subsystem, int fake)
        dbg("name='%s'", dev.name);
        retval = create_node(&dev, fake);
 
-       if ((retval == 0) && (!fake))
+       if ((retval == 0) && (!fake)) {
+               dev_d_send(&dev, subsystem);
                sysbus_send_create(&dev, path);
+       }
 
 exit:
        if (class_dev)