i think your problems miss the point.  an explicit portability layer
is another name for a virtual os interface.  breaking things
up on a call-by-call basis creates calls^2 virtual os interfacen.
good luck in testing.

And in the case of things like the APR, it forces you to learn an entirely new set of interfaces.

the ironic bit about autoconf is that the vast majority of autoconf garbage
is dedicated to features that don't make any difference.  using the
lowest-common denomitor call would work just as well. (and why
not, you have to code this case anyway.)

A case in point is some web-related stuff I'm dealing with at work. I'll use libxml2 as an example. A grep for HAVE_ at the top level of that source tree turns up:

HAVE_ANSIDECL_H
HAVE_ARPA_INET_H
HAVE_ARPA_NAMESER_H
HAVE_BEOS_THREADS
HAVE_COMPILER_TLS
HAVE_CTYPE_H
HAVE_DIRENT_H
HAVE_DLFCN_H
HAVE_ERRNO_H
HAVE_FCNTL_H
HAVE_FINITE
HAVE_FLOAT_H
HAVE_FPRINTF
HAVE_FSCANF
HAVE_FTIME
HAVE_GETADDRINFO
HAVE_GETTIMEOFDAY
HAVE_INTTYPES_H
HAVE_ISINF
HAVE_ISNAN
HAVE_LIBHISTORY
HAVE_LIBM
HAVE_LIBPTHREAD
HAVE_LIBREADLINE
HAVE_LIBZ
HAVE_LIMITS_H
HAVE_LOCALTIME
HAVE_MALLOC_H
HAVE_MATH_H
HAVE_MEMORY_H
HAVE_NETDB_H
HAVE_NETINET_IN_H
HAVE_PRINTF
HAVE_PTHREAD_H
HAVE_RESOLV_H
HAVE_SCANF
HAVE_SIGNAL
HAVE_SIGNAL_H
HAVE_SNPRINTF
HAVE_SPRINTF
HAVE_SSCANF
HAVE_STAT
HAVE_STDARG_H
HAVE_STDINT_H
HAVE_STDLIB_H
HAVE_STRDUP
HAVE_STRERROR
HAVE_STRFTIME
HAVE_STRINGS_H
HAVE_STRING_H
HAVE_STRNDUP
HAVE_SYS_MMAN_H
HAVE_SYS_SELECT_H
HAVE_SYS_SOCKET_H
HAVE_SYS_STAT_H
HAVE_SYS_TIMEB_H
HAVE_SYS_TIME_H
HAVE_SYS_TYPES_H
HAVE_TIME_H
HAVE_UNISTD_H
HAVE_VFPRINTF
HAVE_VFSCANF
HAVE_VPRINTF
HAVE_VSCANF
HAVE_VSNPRINTF
HAVE_VSPRINTF
HAVE_VSSCANF
HAVE_WIN32_THREADS
HAVE_ZLIB_H

If you weed out the bits that are already in Posix, you're left with a few legitimate feature tests (libz, libreadline, getaddrinfo), a test for the underlying threads implementation, workarounds for some obsolete variants of time handling (all of which can be accommodated by Posix), and some fancy printf variants, which the library has to provide compatibility routines for anyway. And why the configure script cares about what version of FORTRAN 77 compiler I have simply escapes me.

It's endemic. The fact that it's not malicious is even worse. The people coding this stuff just don't know any better: they learn from what they see already deployed. Critical thinking doesn't exist any more :-(

Another case in point ... this afternoon one of our product architects (!) informed us we needed to install a wiki on the production web blades. Why? Because they needed to serve up some 'nicely formatted' static web pages to a couple of customers, and all they knew how to generate was in a wiki syntax format. They didn't know how to turn that into pretty HTML, so this was the solution. They were stunned when we proposed a simpler alternative. (Call the documentation folks.)

--lyndon

Reply via email to