Jim Meyering wrote: > this doesn't work, either. > The trouble is that the argmatch code being linked against > is that from the library, and for coreutils, that module > includes references to usage, so an #undef here doesn't change anything.
Oops, I admit I did not test the modification. > 3 disallow use of "extern" in ARGMATCH_DIE_DECL, > and simply add this line to test-argmatch.c: > > ARGMATCH_DIE_DECL { exit (1); } > > I prefer #3. I prefer that too. It looks bizarre, but this is because the way the argmatch module is customized from outside is bizarre. > Here's the proposed gnulib change: > > diff --git a/tests/test-argmatch.c b/tests/test-argmatch.c > index f6126f6..ebba8b7 100644 > --- a/tests/test-argmatch.c > +++ b/tests/test-argmatch.c > @@ -19,9 +19,11 @@ > > #include <config.h> > > -/* Some packages define ARGMATCH_DIE in their <config.h>. Here we want to > - assume the default definition of ARGMATCH_DIE. */ > -#undef ARGMATCH_DIE > +/* Some packages define ARGMATCH_DIE and ARGMATCH_DIE_DECL in <config.h>, and > + thus must link with a definition of that function. Provide it here. */ > +#ifdef ARGMATCH_DIE_DECL > +ARGMATCH_DIE_DECL { exit (1); } > +#endif > > #include "argmatch.h" Yes. I would now move this paragraph after the #includes (since it does not not need to be before #include "argmatch.h" any more). Bruno