On Wed, Mar 9, 2022 at 3:14 PM Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> wrote: > On Wed, Mar 09 2022, Junio C Hamano wrote: > > Eric Sunshine <sunshine@xxxxxxxxxxxxxx> writes: > >> This seems to work, though it's getting a bit verbose: > >> > >> awk '/^glibc / { split($2,v,"."); if (sprintf("%s.%s", v[1], v[2]) > >> - 2.34 < 0) exit 1 }' > > > > In general it is a good discipline to question a pipeline that > > preprocesses input fed to a script written in a language with full > > programming power like awk and perl (and to lessor extent, sed) to > > see if we can come up with a simpler solution without pipeline > > helping to solve what these languages are invented to solve, and I > > very much appreciate your exploration ;-) > > I agree :) But the first language we've got here is C. Rather than > fiddle around with getconf, awk/sed etc. why not just the rather > trivial: > > +#include "test-tool.h" > +#include "cache.h" > + > +int cmd__glibc_config(int argc, const char **argv) > +{ > +#ifdef __GNU_LIBRARY__ > + printf("%d\n%d\n", __GLIBC__, __GLIBC_MINOR__); > + return 0; > +#else > + return 1; > +#endif > +} It feels overkill to add this just for this one case which is otherwise done easily enough with existing shell tools. That said, perhaps I'm missing something, but I don't see how this solution helps us get away from the need for `expr`, `awk`, or `perl` since one of those languages would be needed to perform the arithmetic comparison (checking if glibc is >= 2.34).