diff options
-rw-r--r-- | man/udev.xml | 15 | ||||
-rw-r--r-- | src/udev/udev-rules.c | 4 |
2 files changed, 11 insertions, 8 deletions
diff --git a/man/udev.xml b/man/udev.xml index 142f295f3e..332c7ac096 100644 --- a/man/udev.xml +++ b/man/udev.xml @@ -186,10 +186,10 @@ <varlistentry> <term><varname>SYMLINK</varname></term> <listitem> - <para>Match the name of a symlink targeting the node. It can - be used once a SYMLINK key has been set in one of the preceding - rules. There may be multiple symlinks; only one needs to match. - </para> + <para>Match the name of a symlink targeting the node. It can be used once a SYMLINK key has + been set in one of the preceding rules. There may be multiple symlinks; only one needs to + match. If the operator is <literal>!=</literal>, the token returns true only if there is no + symlink matched.</para> </listitem> </varlistentry> @@ -287,14 +287,17 @@ <varlistentry> <term><varname>TAG</varname></term> <listitem> - <para>Match against a device tag.</para> + <para>Match against one of device tags. It can be used once a TAG key has been set in one of + the preceding rules. There may be multiple tags; only one needs to match. If the operator is + <literal>!=</literal>, the token returns true only if there is no tag matched.</para> </listitem> </varlistentry> <varlistentry> <term><varname>TAGS</varname></term> <listitem> - <para>Search the devpath upwards for a device with matching tag.</para> + <para>Search the devpath upwards for a device with matching tag. If the operator is + <literal>!=</literal>, the token returns true only if there is no tag matched.</para> </listitem> </varlistentry> diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index e3d2adbafd..d6e701f3cc 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -1896,7 +1896,7 @@ static int udev_rule_apply_token_to_event( const char *val; FOREACH_DEVICE_DEVLINK(dev, val) - if (token_match_string(token, strempty(startswith(val, "/dev/")))) + if (token_match_string(token, strempty(startswith(val, "/dev/"))) == (token->op == OP_MATCH)) return token->op == OP_MATCH; return token->op == OP_NOMATCH; } @@ -1926,7 +1926,7 @@ static int udev_rule_apply_token_to_event( const char *val; FOREACH_DEVICE_CURRENT_TAG(dev, val) - if (token_match_string(token, val)) + if (token_match_string(token, val) == (token->op == OP_MATCH)) return token->op == OP_MATCH; return token->op == OP_NOMATCH; } |