summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@vrfy.org>2007-02-01 20:23:41 +0100
committerKay Sievers <kay.sievers@vrfy.org>2007-02-01 20:23:41 +0100
commit273bebdba66cd5543dc1b076447e3275c81c221c (patch)
treea0ceba63a33b4b6fedb280f0b7e48b8f6746c392
parentc0c865d4664ea10309b0ffc12b2fad19ecb98129 (diff)
exclude parent devices from DRIVER== match
We have DRIVERS= for this.
-rw-r--r--RELEASE-NOTES6
-rw-r--r--udev_rules_parse.c15
2 files changed, 12 insertions, 9 deletions
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index e3aeb68f3e..39abb7262c 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,3 +1,9 @@
+udev 105
+========
+Bugfixes. DRIVER== will match only for devices that actually have
+a driver. DRIVERS== must be used, to include the parent devices
+in the match.
+
udev 104
========
Bugfixes.
diff --git a/udev_rules_parse.c b/udev_rules_parse.c
index 3f7e43f839..00b53285fa 100644
--- a/udev_rules_parse.c
+++ b/udev_rules_parse.c
@@ -307,15 +307,7 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena
}
if (strcasecmp(key, "DRIVER") == 0) {
- if (operation != KEY_OP_MATCH &&
- operation != KEY_OP_NOMATCH) {
- err("invalid DRIVER operation");
- goto invalid;
- }
- err("DRIVER== will change in a future relase, "
- "please use DRIVERS== in %s:%u", filename, lineno);
- /* FIXME: this should be rule->driver to match only the event device */
- add_rule_key(rule, &rule->drivers, operation, value);
+ add_rule_key(rule, &rule->driver, operation, value);
valid = 1;
continue;
}
@@ -369,6 +361,11 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena
if (strncasecmp(key, "ATTRS{", sizeof("ATTRS{")-1) == 0 ||
strncasecmp(key, "SYSFS{", sizeof("SYSFS{")-1) == 0) {
+ if (operation != KEY_OP_MATCH &&
+ operation != KEY_OP_NOMATCH) {
+ err("invalid ATTRS operation");
+ goto invalid;
+ }
attr = get_key_attribute(key + sizeof("ATTRS")-1);
if (attr == NULL) {
err("error parsing ATTRS attribute");