#include "types/types.h"
#include "parser-conf.h"
#include "parser-utils.h"
-#include "paths.h"
+#include "resource.h"
static void kboot_process_pair(struct conf_context *conf, const char *name,
char *value)
char *args;
const char *initrd;
const char *root;
+ const char *dtb;
/* ignore bare values */
opt->id = talloc_asprintf(opt, "%s#%s", conf->dc->device->device->id,
name);
opt->name = talloc_strdup(opt, name);
+ d_opt->option = opt;
args = talloc_strdup(opt, "");
initrd = conf_get_global_option(conf, "initrd");
root = conf_get_global_option(conf, "root");
+ dtb = conf_get_global_option(conf, "dtb");
pos = strchr(value, ' ');
continue;
}
+ if (streq(cl_name, "dtb")) {
+ dtb = cl_value;
+ continue;
+ }
+
args = talloc_asprintf_append(args, "%s=%s ", cl_name,
cl_value);
}
out_add:
- opt->boot_image_file = resolve_path(opt, value,
- conf->dc->device->device_path);
+ d_opt->boot_image = create_devpath_resource(d_opt,
+ conf->dc->device, value);
if (root) {
opt->boot_args = talloc_asprintf(opt, "root=%s %s", root, args);
} else
opt->boot_args = args;
+ opt->description = talloc_asprintf(opt, "%s %s", value,
+ opt->boot_args);
+
if (initrd) {
- opt->initrd_file = resolve_path(opt, initrd,
- conf->dc->device->device_path);
+ d_opt->initrd = create_devpath_resource(d_opt,
+ conf->dc->device, initrd);
+ opt->description = talloc_asprintf_append(opt->description,
+ " initrd=%s", initrd);
+ }
- opt->description = talloc_asprintf(opt, "%s initrd=%s %s",
- value, initrd, opt->boot_args);
- } else
- opt->description = talloc_asprintf(opt, "%s %s", value,
- opt->boot_args);
+ if (dtb) {
+ d_opt->dtb = create_devpath_resource(d_opt,
+ conf->dc->device, dtb);
+ opt->description = talloc_asprintf_append(opt->description,
+ " dtb=%s", dtb);
+ }
conf_strip_str(opt->boot_args);
conf_strip_str(opt->description);
}
static struct conf_global_option kboot_global_options[] = {
+ { .name = "dtb" },
{ .name = "initrd" },
{ .name = "root" },
{ .name = "video" },
return 1;
}
-struct parser __kboot_parser = {
- .name = "kboot",
- .parse = kboot_parse,
- .filenames = kboot_conf_files,
+static struct parser kboot_parser = {
+ .name = "kboot",
+ .method = CONF_METHOD_LOCAL_FILE,
+ .parse = kboot_parse,
+ .filenames = kboot_conf_files,
+ .resolve_resource = resolve_devpath_resource,
};
+
+register_parser(kboot_parser);