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#ta...
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_freenameinde...
http://pubs.opengroup.org/onlinepubs/9699919799/functions/if_indextoname....
http://pubs.opengroup.org/onlinepubs/9699919799/functions/if_nameindex.html#
http://pubs.opengroup.org/onlinepubs/9699919799/functions/if_nametoindex....
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(a)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"