I'm probably missing something.
If I will use the "foo" library call if it is present and functional, and
autoconf knows that:
- some systems provide a fully functional foo()
- some systems provide a functional foo() that has the bar bug
- some systems provide a functional foo() that has the baz bug
- some systems provide a nonfunctional foo()
- some systems do not provide foo()
I would expect that in the last 2 cases HAVE_FOO would be undefined.
In the partial cases I can see HAVE_FOO plus HAVE_FOO_BAR_BUG or
HAVE_FOO_BAZ_BUG .
If the system provides a nonfunctional foo() I can see defining
HAVE_BROKEN_FOO, because I have seen systems that have broken loaders and
one simply cannot provide a replacement function. Granted, I haven't come
across many of these systems in recent years.
The number of cases where foo() is provided and also totally broken is tiny
when compared with the number of times a function is provided and it works.
Why, then, provide a HAVE_WORKING_FOO when HAVE_BROKEN_FOO seems so much
more appropriate?
H