[Toybox] [PATCH] logger.c was failing to properly log local0-local6 facilities, due to a string parsing error. This patch enables proper local facility handling.

Rob Landley rob at landley.net
Tue Sep 8 22:30:34 PDT 2020


On 9/8/20 2:16 PM, Chris Sarra via Toybox wrote:
> ---
>  toys/posix/logger.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/toys/posix/logger.c b/toys/posix/logger.c
> index 3bcfb174..d1cc7291 100644
> --- a/toys/posix/logger.c
> +++ b/toys/posix/logger.c
> @@ -64,9 +64,10 @@ void logger_main(void)
>      else {
>        *s1++ = len = 0;
>        facility = arrayfind(TT.p, facilities, ARRAY_LEN(facilities));
> -      if (facility == -1 && strncasecmp(TT.p, "local", 5)) {
> -        facility = s1[5]-'0';
> -        if (facility>7 || s1[6]) facility = -1;
> +      if (facility == -1 && strncasecmp(TT.p, "local", 5) == 0) {
> +        s2 = TT.p;
> +        facility = s2[5]-'0';
> +        if (facility>7 || s2[6]) facility = -1;

Sigh, why did I promote this out of pending? arrayfind() initializes matchlen to
0 and then never sets it to anything ELSE, so it ONLY returns exact matches not
longest unambiguous match (which is the point of the function I think?)

Applied your patch, but I have some cleanup to do to this command...

Rob



More information about the Toybox mailing list