chiark / gitweb /
fix symlink values separated by multiple spaces
authorKay Sievers <kay.sievers@suse.de>
Thu, 7 Jul 2005 21:43:13 +0000 (23:43 +0200)
committerKay Sievers <kay.sievers@suse.de>
Thu, 7 Jul 2005 21:43:13 +0000 (23:43 +0200)
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
test/udev-test.pl
udev_rules.c

index 6fbc23e..873780d 100755 (executable)
@@ -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",
index 41855eb..a25c2e9 100644 (file)
@@ -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 */