static void apply_format(struct udevice *udev, unsigned char *string)
{
- char name[NAME_SIZE];
char temp[NAME_SIZE];
+ char temp1[NAME_SIZE];
char *tail;
char *pos;
char *pos2;
char *pos3;
int num;
+ pos = string;
while (1) {
num = 0;
- pos = strchr(string, '%');
+ pos = strchr(pos, '%');
if (pos) {
- *pos = '\0';
+ pos[0] = '\0';
tail = pos+1;
if (isdigit(tail[0])) {
num = (int) strtoul(&pos[1], &tail, 10);
break;
}
}
- strfieldcpy(name, tail+1);
+ strfieldcpy(temp, tail+1);
switch (tail[0]) {
case 'b':
break;
if (num) {
/* get part of return string */
- strncpy(temp, udev->program_result, sizeof(temp));
- pos2 = temp;
+ strncpy(temp1, udev->program_result, sizeof(temp1));
+ pos2 = temp1;
while (num) {
num--;
pos3 = strsep(&pos2, " ");
dbg("substitute result string '%s'", udev->program_result);
}
break;
+ case '%':
+ strcat(pos, "%");
+ pos++;
+ break;
default:
dbg("unknown substitution type '%%%c'", pos[1]);
break;
}
- strcat(string, name);
+ strcat(string, temp);
} else
break;
}
int value_set = 0;
char buffer[256];
char *pos;
- char *args[CALLOUT_MAXARG];
+ char *args[PROGRAM_MAXARG];
int i;
dbg("executing '%s'", path);
if (strchr(path, ' ')) {
/* exec with arguments */
pos = path;
- for (i=0; i < CALLOUT_MAXARG-1; i++) {
+ for (i=0; i < PROGRAM_MAXARG-1; i++) {
args[i] = strsep(&pos, " ");
if (args[i] == NULL)
break;
}
/* Yup, this rule belongs to us! */
- dbg("found matching rule, '%s' becomes '%s'", dev->kernel, udev->name);
+ dbg("found matching rule, '%s' becomes '%s'", dev->kernel, dev->name);
strfieldcpy(udev->name, dev->name);
strfieldcpy(udev->symlink, dev->symlink);
goto found;