On Thu, 29 Nov 2018 12:38:03 -0800, Yonghong Song wrote:
> diff --git a/tools/lib/bpf/libbpf_errno.c b/tools/lib/bpf/libbpf_errno.c
> index d83b17f8435c..286e497c50ec 100644
> --- a/tools/lib/bpf/libbpf_errno.c
> +++ b/tools/lib/bpf/libbpf_errno.c
> @@ -40,9 +40,19 @@ int libbpf_strerror(int err, char *buf, size_t size)
>       err = err > 0 ? err : -err;
>  
>       if (err < __LIBBPF_ERRNO__START) {
> +#ifdef _GNU_SOURCE
> +             const char *ret_buf;
> +#endif
>               int ret;
>  
> +#ifdef _GNU_SOURCE
> +             ret_buf = strerror_r(err, buf, size);
> +             if (ret_buf != buf)
> +                     snprintf(buf, size, "%s", ret_buf);
> +             ret = 0;
> +#else
>               ret = strerror_r(err, buf, size);
> +#endif
>               buf[size - 1] = '\0';
>               return ret;
>       }

That is kinda strange, the whole point for this file was to have
non-GNU strerror_r, would doing #undef _GNU_SOURCE at the top not work?

Reply via email to