[PATCH] libcamera: yaml_parser: Output more details when parsing fails

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu Dec 5 21:12:43 CET 2024


Hi Stefan,

Thank you for the patch.

On Wed, Dec 04, 2024 at 12:10:13PM +0100, Stefan Klug wrote:
> 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 at ideasonboard.com>
> ---
>  src/libcamera/yaml_parser.cpp | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/src/libcamera/yaml_parser.cpp b/src/libcamera/yaml_parser.cpp
> index db256ec5b04d..f9302c4ee3fa 100644
> --- a/src/libcamera/yaml_parser.cpp
> +++ b/src/libcamera/yaml_parser.cpp
> @@ -509,8 +509,17 @@ YamlParserContext::EventPtr YamlParserContext::nextEvent()

I wonder what else you have in your tree if the message prints line 627,
as indicated in the example in the commit message :-)

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

>  	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;
>  }

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list