chiark / gitweb /
[PATCH] fix test regressions
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>
Thu, 22 Apr 2004 00:49:44 +0000 (17:49 -0700)
committerGreg KH <gregkh@suse.de>
Wed, 27 Apr 2005 04:35:16 +0000 (21:35 -0700)
On Sat, Apr 17, 2004 at 03:30:29AM +0200, Kay Sievers wrote:
> On Sat, Apr 17, 2004 at 02:04:55AM +0200, Kay Sievers wrote:
> > On Fri, Apr 16, 2004 at 04:04:42PM -0700, Greg KH wrote:
> > > Oh, and if you run the latest udev_test.pl, we have a bunch more tests,
> > > including a few that fail, if you were looking for something to do :)
> >
> > Will do it. We need to change apply_format(). I tries to expand the '%%'
> > with the next iteration over the string and removes the '%'.

The tests are all successful now.
If this patch breaks something else, we simply have too few tests :)

namedev.c

index 51a4639abe667a71fcfd2d92ea18f19b8c4df26c..b3a2a8ae4b0bcb2bf0eb62955d47f71bf57153d8 100644 (file)
--- a/namedev.c
+++ b/namedev.c
@@ -199,23 +199,21 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize,
        struct sysfs_attribute *tmpattr;
 
        pos = string;
-
        while (1) {
-               pos = strchr(string, '%');
-               if (pos != NULL) {
-                       pos[0] = '\0';
-                       tail = pos+1;
-                       len = get_format_len(&tail);
-                       c = tail[0];
-                       strfieldcpy(temp, tail+1);
-                       tail = temp;
-               } else {
+               pos = strchr(pos, '%');
+               if (pos == NULL)
                        break;
-               }
-               dbg("format=%c, string='%s', tail='%s'",c , string, tail);
 
+               pos[0] = '\0';
+               tail = pos+1;
+               len = get_format_len(&tail);
+               c = tail[0];
+               strfieldcpy(temp, tail+1);
+               tail = temp;
+               dbg("format=%c, string='%s', tail='%s'",c , string, tail);
                attr = get_format_attribute(&tail);
 
+
                switch (c) {
                case 'b':
                        if (strlen(udev->bus_id) == 0)
@@ -286,6 +284,7 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize,
                        break;
                case '%':
                        strfieldcatmax(string, "%", maxsize);
+                       pos++;
                        break;
                default:
                        dbg("unknown substitution type '%%%c'", c);