]> git.ozlabs.org Git - petitboot/blobdiff - discover/kboot-parser.c
parser: Use list to hold parsers
[petitboot] / discover / kboot-parser.c
index cb6a2483bc3092756e2d488a9b3e0b6588114745..4b4c2f7b49b9404ab67ecdd0e5fbb7ba4456a580 100644 (file)
@@ -9,7 +9,7 @@
 #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)
@@ -45,6 +45,7 @@ static void kboot_process_pair(struct conf_context *conf, const char *name,
        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");
@@ -83,8 +84,8 @@ static void kboot_process_pair(struct conf_context *conf, const char *name,
        }
 
 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);
@@ -93,8 +94,8 @@ out_add:
                opt->boot_args = 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(opt, "%s initrd=%s %s",
                        value, initrd, opt->boot_args);
@@ -157,8 +158,12 @@ static int kboot_parse(struct discover_context *dc, char *buf, int len)
        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);