Subject: Re: [PATCH] test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34

From: Junio C Hamano <[email-masked]>
Date: Mon, 28 Feb 2022 18:27:14 -0800

"brian m. carlson" <[email-masked]> writes:

>> > +	if type -p getconf >/dev/null 2>&1; then
>> > +		_GLIBC_VERSION="$(getconf GNU_LIBC_VERSION 2>/dev/null | awk '{ print $2 }')"
>> > +		if [ -n "$_GLIBC_VERSION" -a $(expr "$_GLIBC_VERSION" \>= "2.34") ]; then
>> > +			_HAVE_GLIBC_234="yes"
>> > +		fi
>> > +	fi
>> 
>> Style.  We prefer "test ..." over "[ ... ]" and more importantly we
>> don't use "test X -a Y".
>> 
>> Do we absolutely need "test -p getconf" with an extra indentation?
>> I suspect we don't.
>
> getconf is specified by POSIX, but that doesn't mean it's in the default
> install or in PATH on all systems.  However, we should write "command -v
> getconf" instead if we need to check, since that's the POSIX way to
> write it, and "type" is not guaranteed to be present on all systems.

My point was that the code relies on having getconf on PATH anyway,
so it is sufficient to attempt running getconf and using its output
after checking it begins with "glibc".  Missing getconf or getconf
that is different from what we expect it to be would be rejected by
the same code, without needing the above nested if .. if .. fi .. fi