[xml] ss_family compilation error
- From: Doug Orleans <dougo place org>
- To: xml gnome org
- Subject: [xml] ss_family compilation error
- Date: Fri, 24 Jun 2005 14:08:06 -0400
I'm trying to compile libxml2 on Tru64, but I get this error message:
cc: Error: nanoftp.c, line 1382: In this statement, "ss_family" is not a member of "(ctxt->ftpAddr)".
(needmember)
if ((ctxt->ftpAddr).ss_family == AF_INET6) {
--------^
I found a few occurrences of this in the list archives, and the
standard answer is to turn off IPv6 support with configure --disable-ipv6.
However, I believe this is unnecessary, and the error is simply due to
a bug in configure.in.
The code in nanoftp.c needs to use the ss_family field of the
sockaddr_storage struct. But instead of actually testing whether the
ss_family field exists, the configure script tests whether the
__ss_family field exists; if so, it concludes that ss_family does not
exist, and adds the following definition to config.h:
#define ss_family __ss_family
However, on Tru64, both fields exist! Actually, the field is named
ss_family, but there is also the following definition in
/usr/include/sys/socket.h:
#define __ss_family ss_family
Because config.h is included before sys/socket.h, the first definition
comes before the declaration of the sockaddr_storage struct, so the
field gets named __ss_family, but then the reference to the field in
nanoftp.c stays ss_family due to the circular definitions.
I believe the most straightforward way to fix this would be to add a
test to configure.in to detect whether ss_family exists, and only if
it does not exist should it try to use __ss_family instead. I've
never used autoconf before, though, so I would rather let someone else
with more experience write up an actual patch.
If I'm missing something, please let me know.
--dougo place org
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]