+ /* connect to the system message bus */
+ sysbus_connect();
+
+ /* initialize our configuration */
+ udev_init_config();
+
+ /* initialize udev database */
+ retval = udevdb_init(UDEVDB_DEFAULT);
+ if (retval != 0) {
+ dbg("unable to initialize database");
+ goto exit_sysbus;
+ }
+
+ /* set up a default signal handler for now */
+ signal(SIGINT, sig_handler);
+ signal(SIGTERM, sig_handler);
+ signal(SIGKILL, sig_handler);
+
+ /* initialize the naming deamon */
+ namedev_init();
+
+ if (strcmp(action, "add") == 0)
+ retval = udev_add_device(devpath, subsystem);
+
+ else if (strcmp(action, "remove") == 0)
+ retval = udev_remove_device(devpath, subsystem);
+
+ else {
+ dbg("unknown action '%s'", action);
+ retval = -EINVAL;
+ }
+ udevdb_exit();
+
+exit_sysbus:
+ /* disconnect from the system message bus */
+ sysbus_disconnect();
+
+exit:
+ if (retval > 0)
+ retval = 0;
+
+ return -retval;