- if (rule->action_operation != KEY_OP_UNSET) {
- dbg("check for " KEY_ACTION " rule->action='%s' udev->action='%s'",
- rule->action, udev->action);
- if (strcmp_pattern(rule->action, udev->action) != 0) {
- dbg(KEY_ACTION " is not matching");
- if (rule->action_operation != KEY_OP_NOMATCH)
- continue;
- } else {
- dbg(KEY_ACTION " matches");
- if (rule->action_operation == KEY_OP_NOMATCH)
- continue;
- }
- dbg(KEY_ACTION " key is true");
- }
-
- if (rule->kernel_operation != KEY_OP_UNSET) {
- dbg("check for " KEY_KERNEL " rule->kernel='%s' udev->kernel_name='%s'",
- rule->kernel, udev->kernel_name);
- if (strcmp_pattern(rule->kernel, udev->kernel_name) != 0) {
- dbg(KEY_KERNEL " is not matching");
- if (rule->kernel_operation != KEY_OP_NOMATCH)
- continue;
- } else {
- dbg(KEY_KERNEL " matches");
- if (rule->kernel_operation == KEY_OP_NOMATCH)
- continue;
- }
- dbg(KEY_KERNEL " key is true");
- }
-
- if (rule->subsystem_operation != KEY_OP_UNSET) {
- dbg("check for " KEY_SUBSYSTEM " rule->subsystem='%s' udev->subsystem='%s'",
- rule->subsystem, udev->subsystem);
- if (strcmp_pattern(rule->subsystem, udev->subsystem) != 0) {
- dbg(KEY_SUBSYSTEM " is not matching");
- if (rule->subsystem_operation != KEY_OP_NOMATCH)
- continue;
- } else {
- dbg(KEY_SUBSYSTEM " matches");
- if (rule->subsystem_operation == KEY_OP_NOMATCH)
- continue;
+ if (match_rule(udev, rule, NULL, sysfs_device) == 0) {
+ if (rule->ignore_device) {
+ info("configured rule in '%s[%i]' applied, '%s' is ignored",
+ rule->config_file, rule->config_line, udev->kernel_name);
+ udev->ignore_device = 1;
+ return 0;