chiark / gitweb /
replace_chars: replace spaces in node name
[elogind.git] / udevstart.c
index d9d6a7b5211f143cfe5d8355b04e4717808a8508..a381c411a80f437157ed38a622723f52ba531041 100644 (file)
@@ -1,13 +1,9 @@
 /*
- * udevstart.c
+ * quick and dirty way to populate a /dev directory
  *
+ * Copyright (C) 2004 Harald Hoyer <harald@redhat.com>
  * Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com>
- * Copyright (C) 2004 Kay Sievers <kay@vrfy.org>
- *
- * Quick and dirty way to populate a /dev with udev if your system
- * does not have access to a shell.  Based originally on a patch
- * from:
- *     Harald Hoyer <harald@redhat.com>
+ * Copyright (C) 2004-2006 Kay Sievers <kay@vrfy.org>
  *
  *     This program is free software; you can redistribute it and/or modify it
  *     under the terms of the GNU General Public License as published by the
@@ -20,7 +16,7 @@
  * 
  *     You should have received a copy of the GNU General Public License along
  *     with this program; if not, write to the Free Software Foundation, Inc.,
- *     675 Mass Ave, Cambridge, MA 02139, USA.
+ *     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  *
  */
 
@@ -40,6 +36,7 @@
 
 #include "udev.h"
 #include "udev_rules.h"
+#include "udev_selinux.h"
 
 static const char *udev_run_str;
 static const char *udev_log_str;
@@ -123,14 +120,13 @@ static int add_device(const char *devpath)
        if (dev == NULL)
                return -1;
 
-       udev = udev_device_init();
+       udev = udev_device_init(NULL);
        if (udev == NULL)
                return -1;
 
        /* override built-in sysfs device */
        udev->dev = dev;
        strcpy(udev->action, "add");
-       udev->devt = udev_device_get_devt(udev);
 
        if (strcmp(udev->dev->subsystem, "net") != 0) {
                udev->devt = udev_device_get_devt(udev);
@@ -148,13 +144,11 @@ static int add_device(const char *devpath)
                goto exit;
        }
        if (udev->name[0] != '\0')
-               retval = udev_add_device(udev);
-       else {
+               retval = udev_device_event(&rules, udev);
+       else
                info("device node creation supressed");
-               goto exit;
-       }
 
-       if (retval == 0 && !udev->ignore_device && udev_run) {
+       if (retval == 0 && udev_run) {
                struct name_entry *name_loop;
 
                dbg("executing run list");
@@ -342,6 +336,7 @@ int main(int argc, char *argv[], char *envp[])
 
        logging_init("udevstart");
        udev_config_init();
+       selinux_init();
        dbg("version %s", UDEV_VERSION);
 
        udev_run_str = getenv("UDEV_RUN");
@@ -372,6 +367,7 @@ int main(int argc, char *argv[], char *envp[])
 
        udev_rules_cleanup(&rules);
        sysfs_cleanup();
+       selinux_exit();
        logging_close();
        return 0;
 }