discover: Introduce a container type for boot options
[petitboot] / test / parser / parser-test.c
index 75533e3a116dd41ba0355851d793baeb4dfc50af..cd6e62f54c065f1d47cc3eb96c70edc0663ed52e 100644 (file)
 
 static FILE *testf;
 
-void device_add_boot_option(struct device *device,
-               struct boot_option *boot_option)
+struct device *discover_context_device(struct discover_context *ctx)
 {
-       fprintf(testf, "%s: %s\n", __func__, device->id);
-       fprintf(testf, " id     '%s'\n", boot_option->id);
-       fprintf(testf, " name   '%s'\n", boot_option->name);
-       fprintf(testf, " descr  '%s'\n", boot_option->description);
-       fprintf(testf, " icon   '%s'\n", boot_option->icon_file);
-       fprintf(testf, " image  '%s'\n", boot_option->boot_image_file);
-       fprintf(testf, " initrd '%s'\n", boot_option->initrd_file);
-       fprintf(testf, " args   '%s'\n", boot_option->boot_args);
+       return ctx->device->device;
+}
+
+struct discover_boot_option *discover_boot_option_create(
+               struct discover_context *ctx,
+               struct discover_device *dev)
+{
+       struct discover_boot_option *opt;
+
+       opt = talloc_zero(ctx, struct discover_boot_option);
+       opt->option = talloc(opt, struct boot_option);
+       opt->device = dev;
+
+       return opt;
+}
+
+void discover_context_add_boot_option(struct discover_context *ctx,
+               struct discover_boot_option *boot_option)
+{
+       struct boot_option *opt = boot_option->option;
+
+       fprintf(testf, "%s: %s\n", __func__, ctx->device->device->id);
+       fprintf(testf, " id     '%s'\n", opt->id);
+       fprintf(testf, " name   '%s'\n", opt->name);
+       fprintf(testf, " descr  '%s'\n", opt->description);
+       fprintf(testf, " icon   '%s'\n", opt->icon_file);
+       fprintf(testf, " image  '%s'\n", opt->boot_image_file);
+       fprintf(testf, " initrd '%s'\n", opt->initrd_file);
+       fprintf(testf, " args   '%s'\n", opt->boot_args);
        fflush(testf);
 }
 
@@ -62,9 +82,11 @@ int main(int argc, char **argv)
 
        ctx = talloc_zero(NULL, struct discover_context);
 
-       ctx->device_path = talloc_asprintf(ctx, "%s/%s", argv[1], argv[2]);
-       ctx->device = talloc_zero(ctx, struct device);
-       ctx->device->id = talloc_strdup(ctx->device, argv[2]);
+       ctx->device = talloc_zero(ctx, struct discover_device);
+       ctx->device->device = talloc_zero(ctx->device, struct device);
+       ctx->device->device_path = talloc_asprintf(ctx, "%s/%s",
+                                                       argv[1], argv[2]);
+       ctx->device->device->id = talloc_strdup(ctx->device->device, argv[2]);
 
        iterate_parsers(ctx);