On Tue, 4 Mar 2008, M. Warner Losh wrote:

: In most ports of FreeBSD parts to Linux that I've seen, the preferred solution
: has to been to bring the entire FreeBSD queue.h with you rather than relying
: on the native Linux queue.h.  This is what we do for OpenBSM, for example;
: this also helps out when you get to Mac OS X, Solaris, etc, where all the
: queue.h's continue to vary in subtle ways.  This depends a fair amount on a
: lack of header pollution in the OS's own include files, of course...

I was rather hoping for something that could be used without any of that nonsense...

Sadly, nonsense seems to be the name of the game in software portability. Here's the broken autoconf garbage I use to pick out adequate queue.h's from inadequate ones:

# sys/queue.h exists on most systems, but its capabilities vary a great deal.
# test for LIST_FIRST and TAILQ_FOREACH_SAFE, which appears to not exist in
# all of them, and are necessary for OpenBSM.
AC_TRY_LINK([
        #include <sys/queue.h>
], [

        #ifndef LIST_FIRST
        #error LIST_FIRST missing
        #endif
        #ifndef TAILQ_FOREACH_SAFE
        #error TAILQ_FOREACH_SAFE
        #endif
], [
AC_DEFINE(HAVE_FULL_QUEUE_H,, Define if queue.h includes LIST_FIRST)
])

Note that there are at least a couple of mostly stylistic bugs there (could use compile rather than link, definition description is poor, errors are inconsistent). :-) I found that on both Linux and Mac OS X, the queue.h's didn't have everything I wanted.

Robert N M Watson
Computer Laboratory
University of Cambridge
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to