diff options
author | kay.sievers@vrfy.org <kay.sievers@vrfy.org> | 2004-03-04 00:54:13 -0800 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-26 21:35:08 -0700 |
commit | 27c3403dd810e53f6c9b8dffe34af7798a4b52d3 (patch) | |
tree | b1a6bb93f3e3432ca69cd74e2ced52bf0c6ba416 /namedev.c | |
parent | e4f9c4a46de499841939c51da1a1cf6fd5321bb1 (diff) |
[PATCH] fix NAME="foo-%c{N}" gets a truncated name
On Wed, Mar 03, 2004 at 02:43:34PM -0800, Patrick Mansfield wrote:
> Here is a fix and a new test for the problem Atul hit, where if we have a
> NAME based on a result of the form:
>
> NAME="foo-%c{7}"
>
> udev truncates the name. Without any prefix (the foo- in this example),
> the rule was working OK.
Here is a fix for the fix :)
Sorry, I broke it yesterday.
Diffstat (limited to 'namedev.c')
-rw-r--r-- | namedev.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -214,6 +214,7 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize, struct sysfs_device *sysfs_device) { char temp[NAME_SIZE]; + char temp2[NAME_SIZE]; char *tail; char *pos; char *attr; @@ -277,6 +278,7 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize, i = atoi(attr); if (i > 0) { foreach_strpart(udev->program_result, " \n\r", spos, slen) { + strnfieldcpy(temp2, udev->program_result + spos, slen+1); i--; if (i == 0) break; @@ -285,8 +287,8 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize, dbg("requested part of result string not found"); break; } - strnfieldcat(string, udev->program_result + spos, slen+1); - dbg("substitute part of result string '%s'", pos); + strnfieldcat(string, temp2, maxsize); + dbg("substitute part of result string '%s'", temp2); } else { strnfieldcat(string, udev->program_result, maxsize); dbg("substitute result string '%s'", udev->program_result); |