X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fnative%2Fnative.c;fp=discover%2Fnative%2Fnative.c;h=964ad1d4d8f14bde146c444d5b377448d191500b;hp=0000000000000000000000000000000000000000;hb=646d77d8156ad72da1c24f734a029a525ba4bed9;hpb=638f16c7683db165154bbe53772c4b864f9dc90d diff --git a/discover/native/native.c b/discover/native/native.c new file mode 100644 index 0000000..964ad1d --- /dev/null +++ b/discover/native/native.c @@ -0,0 +1,55 @@ +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include "native.h" + +static const char *const native_conf_files[] = { + "/boot/petitboot.conf", + "/petitboot.conf", + NULL +}; + +static int native_parse(struct discover_context *dc) +{ + const char * const *filename; + struct native_parser *parser; + int len, rc; + char *buf; + + /* Support block device boot only at present */ + if (dc->event) + return -1; + + for (filename = native_conf_files; *filename; filename++) { + rc = parser_request_file(dc, dc->device, *filename, &buf, &len); + if (rc) + continue; + + parser = native_parser_create(dc); + native_parser_parse(parser, *filename, buf, len); + device_handler_status_dev_info(dc->handler, dc->device, + _("Parsed native configuration from %s"), + *filename); + talloc_free(buf); + talloc_free(parser); + break; + } + + return 0; +} + +static struct parser native_parser = { + .name = "native", + .parse = native_parse, + .resolve_resource = resolve_devpath_resource, +}; + +register_parser(native_parser);