summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--namedev.c44
-rw-r--r--namedev.h6
-rw-r--r--namedev_parse.c24
3 files changed, 38 insertions, 36 deletions
diff --git a/namedev.c b/namedev.c
index c1c22a6cfb..0a37ef2fbc 100644
--- a/namedev.c
+++ b/namedev.c
@@ -264,28 +264,30 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize,
}
break;
case 's':
- if (attr != NULL) {
- tmpattr = find_sysfs_attribute(class_dev, sysfs_device, attr);
- if (tmpattr == NULL) {
- dbg("sysfa attribute '%s' not found", attr);
- break;
- }
- /* strip trailing whitespace of matching value */
- if (isspace(tmpattr->value[strlen(tmpattr->value)-1])) {
- i = len = strlen(tmpattr->value);
- while (i > 0 && isspace(tmpattr->value[i-1]))
- i--;
- if (i < len) {
- tmpattr->value[i] = '\0';
- dbg("remove %i trailing whitespace chars from '%s'",
- len - i, tmpattr->value);
- }
- }
- strfieldcatmax(string, tmpattr->value, maxsize);
- dbg("substitute sysfs value '%s'", tmpattr->value);
- } else {
+ if (!class_dev)
+ break;
+ if (attr == NULL) {
dbg("missing attribute");
+ break;
}
+ tmpattr = find_sysfs_attribute(class_dev, sysfs_device, attr);
+ if (tmpattr == NULL) {
+ dbg("sysfa attribute '%s' not found", attr);
+ break;
+ }
+ /* strip trailing whitespace of matching value */
+ if (isspace(tmpattr->value[strlen(tmpattr->value)-1])) {
+ i = len = strlen(tmpattr->value);
+ while (i > 0 && isspace(tmpattr->value[i-1]))
+ i--;
+ if (i < len) {
+ tmpattr->value[i] = '\0';
+ dbg("remove %i trailing whitespace chars from '%s'",
+ len - i, tmpattr->value);
+ }
+ }
+ strfieldcatmax(string, tmpattr->value, maxsize);
+ dbg("substitute sysfs value '%s'", tmpattr->value);
break;
case '%':
strfieldcatmax(string, "%", maxsize);
@@ -535,7 +537,7 @@ static int match_sysfs_pairs(struct config_device *dev, struct sysfs_class_devic
static int match_id(struct config_device *dev, struct sysfs_class_device *class_dev, struct sysfs_device *sysfs_device)
{
char path[SYSFS_PATH_MAX];
- char *temp = NULL;
+ char *temp;
/* we have to have a sysfs device for ID to work */
if (!sysfs_device)
diff --git a/namedev.h b/namedev.h
index 1e1a9bbc34..a929e52756 100644
--- a/namedev.h
+++ b/namedev.h
@@ -68,17 +68,17 @@ struct sysfs_pair {
struct config_device {
struct list_head node;
+ char kernel[NAME_SIZE];
+ char subsystem[SUBSYSTEM_SIZE];
char bus[BUS_SIZE];
char id[ID_SIZE];
char place[PLACE_SIZE];
- char kernel[NAME_SIZE];
+ struct sysfs_pair sysfs_pair[MAX_SYSFS_PAIRS];
char program[PROGRAM_SIZE];
char result[PROGRAM_SIZE];
- char subsystem[SUBSYSTEM_SIZE];
char driver[DRIVER_SIZE];
char name[NAME_SIZE];
char symlink[NAME_SIZE];
- struct sysfs_pair sysfs_pair[MAX_SYSFS_PAIRS];
char owner[USER_SIZE];
char group[USER_SIZE];
diff --git a/namedev_parse.c b/namedev_parse.c
index 981daa7b3b..eabd9c98bb 100644
--- a/namedev_parse.c
+++ b/namedev_parse.c
@@ -171,6 +171,18 @@ static int namedev_parse(const char *filename, void *data)
if (retval)
break;
+ if (strcasecmp(temp2, FIELD_KERNEL) == 0) {
+ strfieldcpy(dev.kernel, temp3);
+ valid = 1;
+ continue;
+ }
+
+ if (strcasecmp(temp2, FIELD_SUBSYSTEM) == 0) {
+ strfieldcpy(dev.subsystem, temp3);
+ valid = 1;
+ continue;
+ }
+
if (strcasecmp(temp2, FIELD_BUS) == 0) {
strfieldcpy(dev.bus, temp3);
valid = 1;
@@ -215,18 +227,6 @@ static int namedev_parse(const char *filename, void *data)
continue;
}
- if (strcasecmp(temp2, FIELD_KERNEL) == 0) {
- strfieldcpy(dev.kernel, temp3);
- valid = 1;
- continue;
- }
-
- if (strcasecmp(temp2, FIELD_SUBSYSTEM) == 0) {
- strfieldcpy(dev.subsystem, temp3);
- valid = 1;
- continue;
- }
-
if (strcasecmp(temp2, FIELD_DRIVER) == 0) {
strfieldcpy(dev.driver, temp3);
valid = 1;