|
Description
|
The putback for fsstat introduced <sys/avl.h> into sys/vnode.h.
Unfortunately, this header gets included by a variety of other
headers, including <sys/socket.h>; the end result is that code like:
#include <sys/socket.h>
extern int avl_insert(int);
worked before this change but now does not compile:
wesolows@shelter:~/testing $ cc -c avl.c
"avl.c", line 3: identifier redeclared: avl_insert
current : function(int) returning int
previous: function(pointer to struct avl_tree {pointer to struct avl_node {..} avl_root, pointer to function(..) returning int avl_compar, unsigned int avl_offset, unsigned long avl_numnodes, unsigned int avl_size}, pointer to void, unsigned int) returning void : "/usr/include/sys/avl.h", line 175
The actual example here is OpenLDAP, which can't reasonably be expected
to rely on this Solaris-specific feature. Worse still, libavl is
Consolidation Private, so it's not even reasonable to suggest that
OpenLDAP is wrong for defining its own AVL implementation.
Although it would be nice if OpenLDAP used prefixes, the breakage here
would not reasonably be expected.
I've also hit this with Icecast 2.3.1.
|