- l = strlen(dev->symlink);
- if (!l)
- return 0;
- i = j = 0;
- do {
- j = strcspn(&dev->symlink[i], " ");
- if (j && strncmp(&dev->symlink[i], find_name, j) == 0) {
- memcpy(find_dev, dev, sizeof(struct udevice));
- strnfieldcpy(find_path, path, NAME_SIZE);
- find_found = 1;
- return 1;
- }
- i = i + j + 1;
- } while (i < l);
+ foreach_strpart(dev->symlink, " ", pos, len) {
+ if (strncmp(pos, find_name, len) != 0)
+ continue;
+
+ if (len != strlen(find_name))
+ continue;
+
+ memcpy(find_dev, dev, sizeof(struct udevice));
+ strfieldcpymax(find_path, path, NAME_SIZE);
+ find_found = 1;
+ return 1;
+ }