+ if (strstr(argv[0], "udevstart")) {
+ act_type = UDEVSTART;
+ } else {
+ action = get_action();
+ if (!action) {
+ dbg("no action?");
+ goto exit;
+ }
+ if (strcmp(action, "add") == 0) {
+ act_type = ADD;
+ } else if (strcmp(action, "remove") == 0) {
+ act_type = REMOVE;
+ } else {
+ dbg("unknown action '%s'", action);
+ goto exit;
+ }
+
+ devpath = get_devpath();
+ if (!devpath) {
+ dbg("no devpath?");
+ goto exit;
+ }
+ dbg("looking at '%s'", devpath);
+
+ /* we only care about class devices and block stuff */
+ if (!strstr(devpath, "class") && !strstr(devpath, "block")) {
+ dbg("not a block or class device");
+ goto exit;
+ }
+
+ subsystem = get_subsystem(main_argv[1]);
+ if (!subsystem) {
+ dbg("no subsystem?");
+ goto exit;
+ }
+
+ /* skip blacklisted subsystems */
+ i = 0;
+ while (subsystem_blacklist[i][0] != '\0') {
+ if (strcmp(subsystem, subsystem_blacklist[i]) == 0) {
+ dbg("don't care about '%s' devices", subsystem);
+ goto exit;
+ }
+ i++;
+ }