if (isdigit(*str[0])) {
num = (int) strtoul(*str, &tail, 10);
- if (tail != NULL) {
+ if (num > 0) {
*str = tail;
dbg("format length=%i", num);
return num;
struct sysfs_device *sysfs_device)
{
char temp[NAME_SIZE];
- char temp1[NAME_SIZE];
+ char temp2[NAME_SIZE];
char *tail;
char *pos;
- char *pos2;
- char *pos3;
char *attr;
int len;
int i;
char c;
+ char *spos;
+ int slen;
struct sysfs_attribute *tmpattr;
pos = string;
if (attr != NULL)
i = atoi(attr);
if (i > 0) {
- strfieldcpy(temp1, udev->program_result);
- pos2 = temp1;
- while (i) {
+ foreach_strpart(udev->program_result, " \n\r", spos, slen) {
i--;
- pos3 = strsep(&pos2, " ");
- if (pos3 == NULL) {
- dbg("requested part of result string not found");
+ if (i == 0)
break;
- }
}
- if (pos3) {
- strnfieldcat(string, pos3, maxsize);
- dbg("substitute part of result string '%s'", pos3);
+ if (i > 0) {
+ dbg("requested part of result string not found");
+ break;
}
+ strnfieldcpy(temp2, spos, slen+1);
+ 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);
if (match_rule(dev, class_dev, udev, sysfs_device) == 0) {
if (dev->name[0] == '\0' && dev->symlink[0] == '\0') {
info("configured rule in '%s' at line %i applied, '%s' is ignored",
- udev_rules_filename, dev->config_line, udev->kernel_name);
+ dev->config_file, dev->config_line, udev->kernel_name);
return -1;
}
char temp[NAME_MAX];
info("configured rule in '%s' at line %i applied, added symlink '%s'",
- udev_rules_filename, dev->config_line, dev->symlink);
+ dev->config_file, dev->config_line, dev->symlink);
/* do not clobber dev */
strfieldcpy(temp, dev->symlink);
apply_format(udev, temp, sizeof(temp),
if (dev->name[0] != '\0') {
info("configured rule in '%s' at line %i applied, '%s' becomes '%s'",
- udev_rules_filename, dev->config_line, udev->kernel_name, dev->name);
+ dev->config_file, dev->config_line, udev->kernel_name, dev->name);
strfieldcpy(udev->name, dev->name);
goto found;
}