e->root,
*s,
&status);
+
if (!strv_isempty(e->options)) {
_cleanup_free_ char *t = NULL, *t2 = NULL;
_cleanup_strv_free_ char **ts = NULL;
printf(" options: %s\n", t2);
}
+
if (e->device_tree)
boot_entry_file_list("devicetree", e->root, e->device_tree, &status);
+ STRV_FOREACH(s, e->device_tree_overlay)
+ boot_entry_file_list(s == e->device_tree_overlay ? "devicetree-overlay" : NULL,
+ e->root,
+ *s,
+ &status);
+
return -status;
}
free(entry->efi);
strv_free(entry->initrd);
free(entry->device_tree);
+ strv_free(entry->device_tree_overlay);
}
static int boot_entry_load(
r = strv_extend(&tmp.initrd, p);
else if (streq(field, "devicetree"))
r = free_and_strdup(&tmp.device_tree, p);
- else {
+ else if (streq(field, "devicetree-overlay")) {
+ _cleanup_strv_free_ char **l = NULL;
+
+ l = strv_split(p, NULL);
+ if (!l)
+ return log_oom();
+
+ r = strv_extend_strv(&tmp.device_tree_overlay, l, false);
+ } else {
log_notice("%s:%u: Unknown line \"%s\", ignoring.", path, line, field);
continue;
}