diff options
-rwxr-xr-x | test/udev-test.pl | 11 | ||||
-rw-r--r-- | udev_rules.c | 12 |
2 files changed, 20 insertions, 3 deletions
diff --git a/test/udev-test.pl b/test/udev-test.pl index 6fbc23e557..873780d70a 100755 --- a/test/udev-test.pl +++ b/test/udev-test.pl @@ -802,6 +802,17 @@ KERNEL=="ttyUSB[0-9]*", NAME="ttyUSB%n", SYMLINK="symlink1-%n symlink2-%k symlin EOF }, { + desc => "multiple symlinks with a lot of s p a c e s", + subsys => "tty", + devpath => "/class/tty/ttyUSB0", + exp_name => "one", + not_exp_name => " ", + exp_target => "ttyUSB0", + rules => <<EOF +KERNEL=="ttyUSB[0-9]*", NAME="ttyUSB%n", SYMLINK=" one two " +EOF + }, + { desc => "symlink creation (same directory)", subsys => "tty", devpath => "/class/tty/ttyUSB0", diff --git a/udev_rules.c b/udev_rules.c index 41855eb9d7..a25c2e90a8 100644 --- a/udev_rules.c +++ b/udev_rules.c @@ -958,16 +958,22 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udev, struct s /* add multiple symlinks separated by spaces */ pos = temp; - next = strchr(temp, ' '); + while (isspace(pos[0])) + pos++; + next = strchr(pos, ' '); while (next) { next[0] = '\0'; info("add symlink '%s'", pos); name_list_add(&udev->symlink_list, pos, 0); + while (isspace(next[1])) + next++; pos = &next[1]; next = strchr(pos, ' '); } - info("add symlink '%s'", pos); - name_list_add(&udev->symlink_list, pos, 0); + if (pos[0] != '\0') { + info("add symlink '%s'", pos); + name_list_add(&udev->symlink_list, pos, 0); + } } /* set name, later rules with name set will be ignored */ |