summaryrefslogtreecommitdiff
path: root/namedev.c
diff options
context:
space:
mode:
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>2004-03-04 00:54:13 -0800
committerGreg KH <gregkh@suse.de>2005-04-26 21:35:08 -0700
commit27c3403dd810e53f6c9b8dffe34af7798a4b52d3 (patch)
treeb1a6bb93f3e3432ca69cd74e2ced52bf0c6ba416 /namedev.c
parente4f9c4a46de499841939c51da1a1cf6fd5321bb1 (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.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/namedev.c b/namedev.c
index 74d4d76467..e9b3babd56 100644
--- a/namedev.c
+++ b/namedev.c
@@ -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);