summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--namedev.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/namedev.c b/namedev.c
index 51a4639abe..b3a2a8ae4b 100644
--- a/namedev.c
+++ b/namedev.c
@@ -199,23 +199,21 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize,
struct sysfs_attribute *tmpattr;
pos = string;
-
while (1) {
- pos = strchr(string, '%');
- if (pos != NULL) {
- pos[0] = '\0';
- tail = pos+1;
- len = get_format_len(&tail);
- c = tail[0];
- strfieldcpy(temp, tail+1);
- tail = temp;
- } else {
+ pos = strchr(pos, '%');
+ if (pos == NULL)
break;
- }
- dbg("format=%c, string='%s', tail='%s'",c , string, tail);
+ pos[0] = '\0';
+ tail = pos+1;
+ len = get_format_len(&tail);
+ c = tail[0];
+ strfieldcpy(temp, tail+1);
+ tail = temp;
+ dbg("format=%c, string='%s', tail='%s'",c , string, tail);
attr = get_format_attribute(&tail);
+
switch (c) {
case 'b':
if (strlen(udev->bus_id) == 0)
@@ -286,6 +284,7 @@ static void apply_format(struct udevice *udev, char *string, size_t maxsize,
break;
case '%':
strfieldcatmax(string, "%", maxsize);
+ pos++;
break;
default:
dbg("unknown substitution type '%%%c'", c);