Eric Blake <ebl...@redhat.com> writes:

> Yes, there is a bunch of code that non-portably assumes they can use
> strcasecmp or ffs without including <strings.h>.  On the other hand,
> <strings.h> is available on pretty much ALL platforms that use free
> software compilers (according to gnulib, only ancient Minix 3.1.8 and
> non-free MSVC 9 have problems with assuming <strings.h> exists and is
> self-contained; but mingw does not have this issue).  Thus, you
> generally don't need to use HAVE_STRINGS_H, but can just blindly include
> it, unless your package is trying to be portable to a rather unforgiving
> toolchain.

Sure, I can add the explicit probe for strings.h to my code or drop the
#ifdef depending on the portability requirements (and in fact will do so
regardless, since whether or not this change is made it's a good idea).

My point wasn't that, but rather that this change will break backward
compatibility for Autoconf users, and I wanted to make sure that people
were aware of that.  There is code that includes strings.h protected by
#ifdef HAVE_STRINGS_H which currently compiles correctly and will stop
compiling correctly after the configure script is rebuilt with this
change.

All of the other changes that Zack discussed look backward-compatible to
me except in the area of portability to entirely obsolete systems.  This
one stood out because it would break compilation of some packages on
modern, maintained FreeBSD systems because it changes current assumptions
about what the standard Autoconf header probes do.

This behavior is not currently clearly documented, but I will point out
that the current documentation of AC_INCLUDES_DEFAULT shows use of the
HAVE_STRINGS_H define without any mention of any other required checks.

-- 
Russ Allbery (r...@stanford.edu)             <http://www.eyrie.org/~eagle/>

Reply via email to