+
+int main(int argc, char *argv[], char *envp[])
+{
+ char *action;
+ char *devpath;
+ char *devnode;
+ int retval = 0;
+
+ init_logging("udev_dbus");
+
+ sysbus_connect();
+ if (sysbus_connection == NULL)
+ return;
+
+ action = get_action();
+ if (!action) {
+ dbg("no action?");
+ goto exit;
+ }
+ devpath = get_devpath();
+ if (!devpath) {
+ dbg("no devpath?");
+ goto exit;
+ }
+ devnode = get_devnode();
+ if (!devnode) {
+ dbg("no devnode?");
+ goto exit;
+ }
+
+ if (strcmp(action, "add") == 0) {
+ sysbus_send_create(devnode, devpath);
+ } else {
+ if (strcmp(action, "remove") == 0) {
+ sysbus_send_remove(devnode, devpath);
+ } else {
+ dbg("unknown action '%s'", action);
+ retval = -EINVAL;
+ }
+ }
+
+exit:
+ sysbus_disconnect();
+ return retval;
+}