chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
cd94c04
)
match_attr() - copy attr value only when needed
author
Kay Sievers
<kay.sievers@vrfy.org>
Sun, 26 Oct 2008 01:16:54 +0000
(
02:16
+0100)
committer
Kay Sievers
<kay.sievers@vrfy.org>
Sun, 26 Oct 2008 01:16:54 +0000
(
02:16
+0100)
udev/udev-rules.c
patch
|
blob
|
history
diff --git
a/udev/udev-rules.c
b/udev/udev-rules.c
index 44b26906b48465d8cfe3de3583d14933f8c59223..1647f5cb097aa2555b6fbf12778b9342811ab1a1 100644
(file)
--- a/
udev/udev-rules.c
+++ b/
udev/udev-rules.c
@@
-1791,15
+1791,18
@@
static int match_key(struct udev_rules *rules, struct token *token, const char *
static int match_attr(struct udev_rules *rules, struct udev_device *dev, struct udev_event *event, struct token *cur)
{
static int match_attr(struct udev_rules *rules, struct udev_device *dev, struct udev_event *event, struct token *cur)
{
- char attr[UTIL_PATH_SIZE];
const char *key_name = &rules->buf[cur->key.attr_off];
const char *key_value = &rules->buf[cur->key.value_off];
char value[UTIL_NAME_SIZE];
size_t len;
const char *key_name = &rules->buf[cur->key.attr_off];
const char *key_value = &rules->buf[cur->key.value_off];
char value[UTIL_NAME_SIZE];
size_t len;
- util_strlcpy(attr, key_name, sizeof(attr));
- util_strlcpy(value, "", sizeof(value));
- util_resolve_subsys_kernel(event->udev, attr, value, sizeof(value), 1);
+ value[0] = '\0';
+ if (key_name[0] == '[') {
+ char attr[UTIL_PATH_SIZE];
+
+ util_strlcpy(attr, key_name, sizeof(attr));
+ util_resolve_subsys_kernel(event->udev, attr, value, sizeof(value), 1);
+ }
if (value[0] == '\0') {
const char *val;
if (value[0] == '\0') {
const char *val;
@@
-1807,7
+1810,7
@@
static int match_attr(struct udev_rules *rules, struct udev_device *dev, struct
if (val != NULL)
util_strlcpy(value, val, sizeof(value));
}
if (val != NULL)
util_strlcpy(value, val, sizeof(value));
}
- if (value[0]
==
'\0')
+ if (value[0]
==
'\0')
return -1;
/* strip trailing whitespace of value, if not asked to match for it */
return -1;
/* strip trailing whitespace of value, if not asked to match for it */