diff options
author | kay.sievers@vrfy.org <kay.sievers@vrfy.org> | 2004-03-03 18:16:35 -0800 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-26 21:35:08 -0700 |
commit | 9fe3f9a9389bb06cf645d33cbb2b45e1f63d737c (patch) | |
tree | b433b3a99180227203027ec80f825ba94ac59869 /udev.h | |
parent | 88ed4bbe5605f6fe17993c5b81709f4d12812b9a (diff) |
[PATCH] cleanup mult field string handling
Here I try to cleanup our various multifield iteration over the strings.
Inspired by our nice list.h we now have a macro to iterate over the string
and process the parts of it:
It makes the code more readable and we don't change the string while we
process it like the former strsep() does.
Example:
foreach_strpart(dev->symlink, " ", pos, len) {
if (strncmp(&dev->symlink[pos], find_name, len) != 0)
continue;
...
}
For the callout part selector %c{2} we separate now not only by space but
also newline and return characters, cause some programs may give multiline
values back. A possible RESULT match must contain wildcards for these
characters.
Also a bug in the recent udevinfo symlink query feature is fixed.
Diffstat (limited to 'udev.h')
-rw-r--r-- | udev.h | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -97,6 +97,12 @@ do { \ snprintf((to) + strlen(to), maxsize - strlen(to)-1, "%u", i); \ } while (0) +#define foreach_strpart(str, separator, pos, len) \ + for(pos = 0, len = strcspn(str, separator); \ + (pos) < strlen(str); \ + pos = pos + (len) + 1, len = strcspn((str) + pos, separator)) \ + if (len > 0) + static inline char *get_action(void) { char *action; |