Re: [PATCH master 3/3] common: boards: wolfvision: fix handling of overlays parameter
Hi Ahmad, On 5/15/24 11:14, Ahmad Fatoum wrote: > On 15.05.24 10:32, Michael Riesch wrote: >> Hi all, >> >> On 5/15/24 10:00, Michael Riesch wrote: >>> If the char **overlays parameter to wolfvision_rk3568_detect_hw is NULL, >>> the overlay file names are not collected. >>> >>> If overlays points to a NULL pointer, it is initialized properly with >>> an empty string. This is convenient as the call to >>> globalvar_set("of.overlay.filepattern", my_resulting_string); >>> that usually follows actually resets the global filepattern variable >>> from its default "*" to "". Thereby, a paradoxical situation in which no >>> extensions are detected but all available overlays are applied (due to "*") >>> is avoided. >>> >>> Nevertheless, it is still possible to pass an existing string to this >>> method and let the method append overlay file names. >>> >>> Signed-off-by: Michael Riesch >>> --- >>> common/boards/wolfvision/common.c | 5 - >>> 1 file changed, 4 insertions(+), 1 deletion(-) >>> >>> diff --git a/common/boards/wolfvision/common.c >>> b/common/boards/wolfvision/common.c >>> index f483918cec..6cb76250dd 100644 >>> --- a/common/boards/wolfvision/common.c >>> +++ b/common/boards/wolfvision/common.c >>> @@ -20,7 +20,7 @@ int wolfvision_apply_overlay(const struct wv_overlay >>> *overlay, char **files) >>> { >>> int ret; >>> >>> - if (overlay->filename) { >>> + if (overlay->filename && files) { >>> if (*files) { >>> char *old = *files; >>> *files = basprintf("%s %s", old, overlay->filename); >>> @@ -115,6 +115,9 @@ int wolfvision_rk3568_detect_hw(const struct >>> wv_rk3568_extension *extensions, >>> if (ret) >>> return ret; >>> >>> + if (overlays && !*overlays) >>> + *overlays = basprintf(""); >> >> Hm, apparently this gives a compiler warning "warning: zero-length >> gnu_printf format string [-Wformat-zero-length]". >> >> ... = basprintf("%s", ""); ??? > > xstrdup("") Well if you insist on a straight-forward elegant solution... :-) v2 coming up soon! Thanks and regards, Michael > >> >> Best regards, >> Michael >> >>> + >>> for (i = 0; i < num_extensions; i++) { >>> const struct wv_rk3568_extension *extension = &extensions[i]; >>> const struct wv_overlay *overlay; >>> >> >> >
Re: [PATCH master 3/3] common: boards: wolfvision: fix handling of overlays parameter
On 15.05.24 10:32, Michael Riesch wrote: > Hi all, > > On 5/15/24 10:00, Michael Riesch wrote: >> If the char **overlays parameter to wolfvision_rk3568_detect_hw is NULL, >> the overlay file names are not collected. >> >> If overlays points to a NULL pointer, it is initialized properly with >> an empty string. This is convenient as the call to >> globalvar_set("of.overlay.filepattern", my_resulting_string); >> that usually follows actually resets the global filepattern variable >> from its default "*" to "". Thereby, a paradoxical situation in which no >> extensions are detected but all available overlays are applied (due to "*") >> is avoided. >> >> Nevertheless, it is still possible to pass an existing string to this >> method and let the method append overlay file names. >> >> Signed-off-by: Michael Riesch >> --- >> common/boards/wolfvision/common.c | 5 - >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/common/boards/wolfvision/common.c >> b/common/boards/wolfvision/common.c >> index f483918cec..6cb76250dd 100644 >> --- a/common/boards/wolfvision/common.c >> +++ b/common/boards/wolfvision/common.c >> @@ -20,7 +20,7 @@ int wolfvision_apply_overlay(const struct wv_overlay >> *overlay, char **files) >> { >> int ret; >> >> -if (overlay->filename) { >> +if (overlay->filename && files) { >> if (*files) { >> char *old = *files; >> *files = basprintf("%s %s", old, overlay->filename); >> @@ -115,6 +115,9 @@ int wolfvision_rk3568_detect_hw(const struct >> wv_rk3568_extension *extensions, >> if (ret) >> return ret; >> >> +if (overlays && !*overlays) >> +*overlays = basprintf(""); > > Hm, apparently this gives a compiler warning "warning: zero-length > gnu_printf format string [-Wformat-zero-length]". > > ... = basprintf("%s", ""); ??? xstrdup("") > > Best regards, > Michael > >> + >> for (i = 0; i < num_extensions; i++) { >> const struct wv_rk3568_extension *extension = &extensions[i]; >> const struct wv_overlay *overlay; >> > > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0| Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917- |
Re: [PATCH master 3/3] common: boards: wolfvision: fix handling of overlays parameter
Hi all, On 5/15/24 10:00, Michael Riesch wrote: > If the char **overlays parameter to wolfvision_rk3568_detect_hw is NULL, > the overlay file names are not collected. > > If overlays points to a NULL pointer, it is initialized properly with > an empty string. This is convenient as the call to > globalvar_set("of.overlay.filepattern", my_resulting_string); > that usually follows actually resets the global filepattern variable > from its default "*" to "". Thereby, a paradoxical situation in which no > extensions are detected but all available overlays are applied (due to "*") > is avoided. > > Nevertheless, it is still possible to pass an existing string to this > method and let the method append overlay file names. > > Signed-off-by: Michael Riesch > --- > common/boards/wolfvision/common.c | 5 - > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/common/boards/wolfvision/common.c > b/common/boards/wolfvision/common.c > index f483918cec..6cb76250dd 100644 > --- a/common/boards/wolfvision/common.c > +++ b/common/boards/wolfvision/common.c > @@ -20,7 +20,7 @@ int wolfvision_apply_overlay(const struct wv_overlay > *overlay, char **files) > { > int ret; > > - if (overlay->filename) { > + if (overlay->filename && files) { > if (*files) { > char *old = *files; > *files = basprintf("%s %s", old, overlay->filename); > @@ -115,6 +115,9 @@ int wolfvision_rk3568_detect_hw(const struct > wv_rk3568_extension *extensions, > if (ret) > return ret; > > + if (overlays && !*overlays) > + *overlays = basprintf(""); Hm, apparently this gives a compiler warning "warning: zero-length gnu_printf format string [-Wformat-zero-length]". ... = basprintf("%s", ""); ??? Best regards, Michael > + > for (i = 0; i < num_extensions; i++) { > const struct wv_rk3568_extension *extension = &extensions[i]; > const struct wv_overlay *overlay; >
[PATCH master 3/3] common: boards: wolfvision: fix handling of overlays parameter
If the char **overlays parameter to wolfvision_rk3568_detect_hw is NULL, the overlay file names are not collected. If overlays points to a NULL pointer, it is initialized properly with an empty string. This is convenient as the call to globalvar_set("of.overlay.filepattern", my_resulting_string); that usually follows actually resets the global filepattern variable from its default "*" to "". Thereby, a paradoxical situation in which no extensions are detected but all available overlays are applied (due to "*") is avoided. Nevertheless, it is still possible to pass an existing string to this method and let the method append overlay file names. Signed-off-by: Michael Riesch --- common/boards/wolfvision/common.c | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/common/boards/wolfvision/common.c b/common/boards/wolfvision/common.c index f483918cec..6cb76250dd 100644 --- a/common/boards/wolfvision/common.c +++ b/common/boards/wolfvision/common.c @@ -20,7 +20,7 @@ int wolfvision_apply_overlay(const struct wv_overlay *overlay, char **files) { int ret; - if (overlay->filename) { + if (overlay->filename && files) { if (*files) { char *old = *files; *files = basprintf("%s %s", old, overlay->filename); @@ -115,6 +115,9 @@ int wolfvision_rk3568_detect_hw(const struct wv_rk3568_extension *extensions, if (ret) return ret; + if (overlays && !*overlays) + *overlays = basprintf(""); + for (i = 0; i < num_extensions; i++) { const struct wv_rk3568_extension *extension = &extensions[i]; const struct wv_overlay *overlay; -- 2.34.1