On Wed, Jan 15, 2020 at 01:26:53AM +0100, Klemens Nanni wrote:
> Replace the very same error message strlcpy() uses earlier.  This makes
> it easier to distinguish and does not hide different errors behind the
> same generic one.
>
> For example, it turns
>
>       # route -qn add -inet6 fec0::% -prefixlen 10 ::1 -reject
>       route: fec0::%: bad value
>
> into
>
>       # ./obj/route -qn add -inet6 fec0::% -prefixlen 10 ::1 -reject
>       route: fec0::%: no address associated with name
>
> Feedback? OK?

Error messages should be unique so you know where to debug.

OK bluhm@

> Index: route.c
> ===================================================================
> RCS file: /cvs/src/sbin/route/route.c,v
> retrieving revision 1.246
> diff -u -p -r1.246 route.c
> --- route.c   22 Nov 2019 15:28:05 -0000      1.246
> +++ route.c   15 Jan 2020 00:20:29 -0000
> @@ -859,6 +859,7 @@ getaddr(int which, int af, char *s, stru
>                  sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255:255:255:255/128")
>               ];
>               char           *sep;
> +             int             error;
>
>               if (strlcpy(buf, s, sizeof buf) >= sizeof buf) {
>                       errx(1, "%s: bad value", s);
> @@ -871,10 +872,12 @@ getaddr(int which, int af, char *s, stru
>               hints.ai_family = afamily;      /*AF_INET6*/
>               hints.ai_flags = AI_NUMERICHOST;
>               hints.ai_socktype = SOCK_DGRAM;         /*dummy*/
> -             if (getaddrinfo(buf, "0", &hints, &res) != 0) {
> +             error = getaddrinfo(buf, "0", &hints, &res);
> +             if (error) {
>                       hints.ai_flags = 0;
> -                     if (getaddrinfo(buf, "0", &hints, &res) != 0)
> -                             errx(1, "%s: bad value", s);
> +                     error = getaddrinfo(buf, "0", &hints, &res);
> +                     if (error)
> +                             errx(1, "%s: %s", s, gai_strerror(error));
>               }
>               if (res->ai_next)
>                       errx(1, "%s: resolved to multiple values", s);

Reply via email to