make WAIT_FOR_SYSFS usable in non "wait-only" rules
authorKay Sievers <kay.sievers@suse.de>
Tue, 31 Jan 2006 15:24:22 +0000 (16:24 +0100)
committerKay Sievers <kay.sievers@suse.de>
Tue, 31 Jan 2006 15:24:22 +0000 (16:24 +0100)
Thanks to Andrey Borzenkov <arvidjaar@mail.ru> for noticing this
and the initial patch to fix it.

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
udev_rules.c

index 8e9c160..e9b32df 100644 (file)
@@ -733,19 +733,13 @@ static int match_rule(struct udevice *udev, struct udev_rule *rule)
        }
 
        if (rule->wait_for_sysfs.operation != KEY_OP_UNSET) {
-               int match;
+               int found;
 
-               match = (wait_for_sysfs(udev, key_val(rule, &rule->wait_for_sysfs), 3) == 0);
-               if (match && (rule->wait_for_sysfs.operation != KEY_OP_NOMATCH)) {
-                       dbg("WAIT_FOR_SYSFS is true (matching value)");
-                       return 0;
-               }
-               if (!match && (rule->wait_for_sysfs.operation == KEY_OP_NOMATCH)) {
-                       dbg("WAIT_FOR_SYSFS is true, (non matching value)");
-                       return 0;
+               found = (wait_for_sysfs(udev, key_val(rule, &rule->wait_for_sysfs), 3) == 0);
+               if (!found && (rule->wait_for_sysfs.operation != KEY_OP_NOMATCH)) {
+                       dbg("WAIT_FOR_SYSFS failed");
+                       goto nomatch;
                }
-               dbg("WAIT_FOR_SYSFS is false");
-               return -1;
        }
 
        /* walk up the chain of parent devices and find a match */