diff options
author | andrew.patterson@hp.com <andrew.patterson@hp.com> | 2004-10-14 00:47:38 -0700 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-26 21:58:15 -0700 |
commit | 1fa26490e0d3b0df595fc7d327be46e4d9586bf7 (patch) | |
tree | 6d04b5fc3b3ddecd5553555174deead87d0c743c | |
parent | c008fe93f5252d47f82d7f00e423983bda9ce1e3 (diff) |
[PATCH] Problem parsing %s in udev rules
> > > > That explains the spaces. What about stuff trailing %s, if %s does not
> > > > contain spaces. I.e, in the above example, model is ST336753LC and the
> > > > resulting device file is /dev/scsi_disks/some-proceding-stuff-
> > > > ST336753LC.
> > >
> > > I expect the model value has trailing spaces.
> > >
> > > You may look with:
> > > udevinfo -a -p /block/sdX
> >
> > Yes it does, and it seems for most SCSI devices, vendor and model will
> > have trailing spaces.
>
> It all depends on the vendor and model :)
>
> > I have included a patch to udev-036 to deal with
> > this issue. It trims off trailing whitespace for all sysfs attributes.
> > It might be better to trim off leading whitespace as well.
>
> We already trim it off when matching, but we also allow matching if you
> do put the spaces in there. This patch breaks that, right?
Correct, I have a new patch that trims after the comparison, so it
should work in both cases.
-rw-r--r-- | namedev.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -306,6 +306,17 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize, dbg("sysfa attribute '%s' not found", attr); break; } + /* strip trailing whitespace of matching value */ + if (isspace(tmpattr->value[strlen(tmpattr->value)-1])) { + i = len = strlen(tmpattr->value); + while (i > 0 && isspace(tmpattr->value[i-1])) + i--; + if (i < len) { + tmpattr->value[i] = '\0'; + dbg("remove %i trailing whitespace chars from '%s'", + len - i, tmpattr->value); + } + } strfieldcatmax(string, tmpattr->value, maxsize); dbg("substitute sysfs value '%s'", tmpattr->value); } else { |