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

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Dec 4 12:34:39 CET 2024


Quoting Stefan Klug (2024-12-04 11:10:13)
> 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

Well, I can't say no to that!

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> 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()
>         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;
>  }
> -- 
> 2.43.0
>


More information about the libcamera-devel mailing list