-#define _GNU_SOURCE
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
#include <assert.h>
#include <stdlib.h>
#include <string.h>
+#include <i18n/i18n.h>
#include "log/log.h"
#include "talloc/talloc.h"
d_opt->boot_image = create_devpath_resource(d_opt,
conf->dc->device, value);
+ char* args_sigfile_default = talloc_asprintf(d_opt,
+ "%s.cmdline.sig", value);
+ d_opt->args_sig_file = create_devpath_resource(d_opt,
+ conf->dc->device, args_sigfile_default);
+ talloc_free(args_sigfile_default);
+
if (root) {
opt->boot_args = talloc_asprintf(opt, "root=%s %s", root, args);
talloc_free(args);
" dtb=%s", dtb);
}
+ if (conf_get_global_option(conf, "default"))
+ opt->is_default = streq(opt->name,
+ conf_get_global_option(conf, "default"));
+
conf_strip_str(opt->boot_args);
conf_strip_str(opt->description);
{ .name = "initrd" },
{ .name = "root" },
{ .name = "video" },
+ { .name = "default" },
{ .name = NULL }
};
"/kboot.cnf",
"/etc/kboot.conf",
"/etc/kboot.cnf",
+ "/boot/kboot.conf",
+ "/boot/kboot.cnf",
"/KBOOT.CONF",
"/KBOOT.CNF",
"/ETC/KBOOT.CONF",
"/ETC/KBOOT.CNF",
+ "/BOOT/KBOOT.CONF",
+ "/BOOT/KBOOT.CNF",
NULL
};
static const char *const kboot_ignored_names[] = {
- "default",
"delay",
"message",
"timeout",
static int kboot_parse(struct discover_context *dc)
{
struct conf_context *conf;
+ struct list *found_list;
const char * const *filename;
- char *buf;
- int len, rc;
/* Support block device boot only at present */
if (dc->event)
return -1;
conf = talloc_zero(dc, struct conf_context);
-
if (!conf)
return -1;
+ found_list = talloc(conf, struct list);
+ if (!found_list)
+ return -1;
+ list_init(found_list);
+
conf->dc = dc;
conf->global_options = kboot_global_options,
conf_init_global_options(conf);
conf->parser_info = (void *)kboot_ignored_names;
for (filename = kboot_conf_files; *filename; filename++) {
+ int len, rc;
+ char *buf;
+
+ if (!parser_is_unique(dc, dc->device, *filename, found_list))
+ continue;
+
rc = parser_request_file(dc, dc->device, *filename, &buf, &len);
if (rc)
continue;
conf_parse_buf(conf, buf, len);
+ device_handler_status_dev_info(dc->handler, dc->device,
+ _("Parsed kboot configuration from %s"),
+ *filename);
talloc_free(buf);
}