libcamera: yaml_parser: Output more details when parsing fails

On malformed yaml files, the yaml parser only errors out without giving
details on the error that happened. Fix that by providing a more detailed
error message.

Output old:

ERROR YamlParser yaml_parser.cpp:886 Failed to parse YAML content from /root/imx283.yaml

Output new:

ERROR YamlParser yaml_parser.cpp:627 /root/imx283.yaml:72:8 could not find expected ':' while scanning a simple key
ERROR YamlParser yaml_parser.cpp:886 Failed to parse YAML content from /root/imx283.yaml

Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Stefan Klug 2024-12-04 12:10:13 +01:00 committed by Laurent Pinchart
parent 9fc86dc02a
commit fa0013c953

View file

@ -509,8 +509,17 @@ YamlParserContext::EventPtr YamlParserContext::nextEvent()
EventPtr event(new yaml_event_t);
/* yaml_parser_parse returns 1 when it succeeds */
if (!yaml_parser_parse(&parser_, event.get()))
if (!yaml_parser_parse(&parser_, event.get())) {
File *file = static_cast<File *>(parser_.read_handler_data);
LOG(YamlParser, Error) << file->fileName() << ":"
<< parser_.problem_mark.line << ":"
<< parser_.problem_mark.column << " "
<< parser_.problem << " "
<< parser_.context;
return nullptr;
}
return event;
}