+
+static int udev_hotplug(void)
+{
+ char *action;
+ char *devpath;
+ char *subsystem;
+
+ action = get_action();
+ if (!action) {
+ dbg("no action?");
+ return -EINVAL;
+ }
+
+ devpath = get_devpath();
+ if (!devpath) {
+ dbg("no devpath?");
+ return -EINVAL;
+ }
+
+ /* skip blacklisted subsystems */
+ subsystem = get_subsystem(main_argv[1]);
+ if (!subsystem) {
+ dbg("no subsystem?");
+ return -EINVAL;
+ }
+
+ return __udev_hotplug(action, devpath, subsystem);
+}
+
+int main(int argc, char *argv[], char *envp[])
+{
+ main_argv = argv;
+ main_envp = envp;
+
+ if (strstr(argv[0], "udevstart"))
+ is_udevstart = 1;
+
+ /* initialize our configuration */
+ udev_init_config();
+
+ dbg("version %s", UDEV_VERSION);
+
+ if (is_udevstart) {
+ namedev_init();
+ return udev_start();
+ } else
+ return udev_hotplug();
+}