diff options
author | kay.sievers@vrfy.org <kay.sievers@vrfy.org> | 2005-02-26 02:52:04 +0100 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-26 23:39:48 -0700 |
commit | 77313cd0d13ed3682f25c745f71f648292b28215 (patch) | |
tree | b8ed0937895499b6fc28daa4b67e46d6e1dfac97 | |
parent | 9c020c60165997be842948d11f51ce6dd6b9b745 (diff) |
[PATCH] namedev: skip backslashes only if followed by newline
Fix from: Hannes Reinecke <hare@suse.de>
namedev_parse is a bit overzealous when in comes to handling backspaces;
it always eats up backspaces regardless of anything beyond that. This
means it is impossible to enter '\t' in a rule. Quite a bit of fun when
you're trying to write regexps.
-rw-r--r-- | namedev_parse.c | 2 | ||||
-rw-r--r-- | test/udev-test.pl | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/namedev_parse.c b/namedev_parse.c index 7cd676c390..02d8a6520c 100644 --- a/namedev_parse.c +++ b/namedev_parse.c @@ -153,7 +153,7 @@ static int namedev_parse(const char *filename, void *data) /* skip backslash and newline from multi line rules */ for (i = j = 0; i < count; i++) { - if (bufline[i] == '\\' || bufline[i] == '\n') + if (bufline[i] == '\\' && bufline[i+1] == '\n') continue; line[j++] = bufline[i]; diff --git a/test/udev-test.pl b/test/udev-test.pl index fe7b932669..f442b162ec 100644 --- a/test/udev-test.pl +++ b/test/udev-test.pl @@ -195,6 +195,15 @@ NAME="visor" EOF }, { + desc => "preserve backslashes, if they are not for a newline", + subsys => "tty", + devpath => "/class/tty/ttyUSB0", + exp_name => "aaa", + conf => <<EOF +KERNEL="ttyUSB0", PROGRAM="/bin/echo -e \\101", RESULT="A", NAME="aaa" +EOF + }, + { desc => "Handle stupid backslashed multi lines in config file (and replace kernel name)", subsys => "tty", devpath => "/class/tty/ttyUSB0", |