
On Tue, Sep 04, 2012 at 11:37:30AM -0600, Eric Blake wrote:
On 09/04/2012 11:23 AM, Jasper Lievisse Adriaanse wrote:
On Tue, Sep 04, 2012 at 11:08:30AM -0600, Eric Blake wrote:
[adding gnulib]
Ouch. The POSIX definition of <net/if.h> doesn't include any interface that needs to use struct sockaddr. Which OpenBSD extension function is triggering this warning? According to POSIX, this .c file should compile:
#define _POSIX_C_SOURCE 200809L #include <net/if.h> #include <sys/socket.h> struct if_nameindex i;
That snippet of example code does not compile on OpenBSD:
In file included from foo.c:2: /usr/include/net/if.h:112: error: expected specifier-qualifier-list before 'u_int'
Could you please reference where POSIX states it should, so this can hopefully get fixed in OpenBSD.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/net_if.h.html#tag_1... doesn't mention any prerequisite headers for <net/if.h>. Furthermore, looking at each of the functions in that header, none of them call out a prerequisite: http://pubs.opengroup.org/onlinepubs/9699919799/functions/if_freenameindex.h... http://pubs.opengroup.org/onlinepubs/9699919799/functions/if_indextoname.htm... http://pubs.opengroup.org/onlinepubs/9699919799/functions/if_nameindex.html# http://pubs.opengroup.org/onlinepubs/9699919799/functions/if_nametoindex.htm...
If a header cannot be used in isolation, then POSIX would call out multiple headers. For comparison, here's a case where POSIX 2008 _does_ call out multiple headers: http://pubs.opengroup.org/onlinepubs/9699919799/functions/creat.html
creat() cannot use the S_IRUSR and other constants for its mode_t argument unless you also include <sys/stat.h>, since <fcntl.h> was not required to be self-contained on that front (there's talk underway about getting that fixed in the next version of POSIX, but that's another story... http://austingroupbugs.net/view.php?id=591)
-- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
A diff for the OpenBSD header file has been created and is currently being tested. So this should be fixed pretty soon (and in time for OpenBSD 5.3). -- Cheers, Jasper "Stay Hungry. Stay Foolish"