summaryrefslogtreecommitdiff
path: root/namedev.c
diff options
context:
space:
mode:
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>2004-03-11 01:37:18 -0800
committerGreg KH <gregkh@suse.de>2005-04-26 21:35:09 -0700
commit558f80ba649fb5b8c2ac2a51e464f1aa07aa791d (patch)
treedd145627182985dea2f9dfa6f3a3bcfab53a708d /namedev.c
parent35b38379bac87ebf4d0cc6884feff588ee859d5f (diff)
[PATCH] callout part selector tweak
Martin Schwenke <martin@meltin.net> asked for this feature and posted a patch: The following patch almost let's me have the following configuration: PROGRAM="/sbin/aliaser %b %k %n %M %m", RESULT="?*", NAME="%c{1}", SYMLINK="%c{2+}" allowing me to specify an arbitrary number of symlinks by saying "giveme the second and later words"." Here is the actual version with tests and a few words in the man page.
Diffstat (limited to 'namedev.c')
-rw-r--r--namedev.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/namedev.c b/namedev.c
index a9142374f4..7305676d42 100644
--- a/namedev.c
+++ b/namedev.c
@@ -190,6 +190,7 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize,
int i;
char c;
char *spos;
+ char *rest;
int slen;
struct sysfs_attribute *tmpattr;
@@ -244,7 +245,7 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize,
/* get part part of the result string */
i = 0;
if (attr != NULL)
- i = atoi(attr);
+ i = strtoul(attr, &rest, 10);
if (i > 0) {
foreach_strpart(udev->program_result, " \n\r", spos, slen) {
i--;
@@ -255,7 +256,10 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize,
dbg("requested part of result string not found");
break;
}
- strfieldcpymax(temp2, spos, slen+1);
+ if (rest[0] == '+')
+ strfieldcpy(temp2, spos);
+ else
+ strfieldcpymax(temp2, spos, slen+1);
strfieldcatmax(string, temp2, maxsize);
dbg("substitute part of result string '%s'", temp2);
} else {