]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
common: dfu: Remove leading space characters
authorRavi Gunasekaran <r-gunasekaran@ti.com>
Thu, 18 May 2023 06:36:23 +0000 (12:06 +0530)
committerTom Rini <trini@konsulko.com>
Wed, 31 May 2023 21:23:01 +0000 (17:23 -0400)
As per [1], dfu_alt_info is mentioned to be as semicolon separated
string of information on each alternate and the parsing logic in
the dfu.c is based on this.

Typically, the dfu_alt_info_* is defined in .h files as preprocessor
macros with 'alt' info separated by semicolon.

But when dfu_alt_info_* is added in the environment files(.env)
the script at "scripts/env2string.awk" converts a newline to space.
Thus adding a space character after semicolon. This results in
incorrect parsing in dfu.c which is based on the information that
'alt' info are only semicolon separated.

One option is to add dfu_alt_info_* variable in .env in single line.
But there is possiblity for it to exceed the line length limit.
So update the parsing logic to remove leading space characters
before adding to the dfu list.

[1]: https://u-boot.readthedocs.io/en/latest/usage/dfu.html

Signed-off-by: Ravi Gunasekaran <r-gunasekaran@ti.com>
drivers/dfu/dfu.c

index 516dda6179627cff6e1e649ad1b47f387c25ad72..b2ee5f1ede6d16f83bde2446c64db22688944fdb 100644 (file)
@@ -135,6 +135,7 @@ int dfu_config_interfaces(char *env)
                        a = s;
                do {
                        part = strsep(&a, ";");
+                       part = skip_spaces(part);
                        ret = dfu_alt_add(dfu, i, d, part);
                        if (ret)
                                return ret;
@@ -629,6 +630,7 @@ int dfu_config_entities(char *env, char *interface, char *devstr)
 
        for (i = 0; i < dfu_alt_num; i++) {
                s = strsep(&env, ";");
+               s = skip_spaces(s);
                ret = dfu_alt_add(dfu, interface, devstr, s);
                if (ret) {
                        /* We will free "dfu" in dfu_free_entities() */