Manuel Teira Paz wrote:
Hello again.
During the compilation stage of the trunk, I run into this error:
source='qpid/broker/Bridge.cpp' object='qpid/broker/Bridge.lo'
libtool=yes \
DEPDIR=.deps depmode=dashXmstdout /bin/bash ../build-aux/depcomp \
/bin/bash ../libtool --tag=CXX --mode=compile CC -g -m64
-DHAVE_CONFIG_H -I. -Igen -I./gen -I/opt/qpid/include
-library=stlport4 -mt -c -o qpid/broker/Bridge.lo qpid/broker/Bridge.cpp
CC -g -m64 -DHAVE_CONFIG_H -I. -Igen -I./gen -I/opt/qpid/include
-library=stlport4 -mt -c qpid/broker/Bridge.cpp -KPIC -DPIC -o
qpid/broker/.libs/Bridge.o
"./qpid/sys/Socket.h", line 96: Error: socklen_t is not defined.
"qpid/broker/Bridge.cpp", line 170: Warning: id hides
qpid::broker::Bridge::id.
1 Error(s) and 1 Warning(s) detected.
I started looking in my Solaris system, where socklen_t is defined, and
the place was sys/socket.h. Nevertheless, I see that the way integer
types are intended to be imported now regardless the platform is:
qpid/sys/IntegerTypes.h
that relies on a platform dependent file.
The question here is, where exactly the socklen_t is suposed to be
defined in linux or a posix compliant system? The posix IntegerTypes.h
in qpid is just including <stdint.h>, but after a fast look in an Ubuntu
system, I didn't find there any declaration for socklen_t. Another
curious thing about socklen_t is what I've found here:
http://portabilityblog.com/blog/archives/7-socklen_t-confusion.html
Also, the declaration for solaris is not trivial:
#if defined(_XPG4_2) && !defined(_XPG5) && !defined(_LP64)
typedef size_t socklen_t;
#else
typedef uint32_t socklen_t;
#endif /* defined(_XPG4_2) && !defined(_XPG5) && !defined(_LP64) */
Anyway, it seems to rely to uint32_t on normal cases.
What do you think is the best way to proceed here? Just add a #include
<sys/socket.h> in the posix IntegerTypes.h?
I would only #include socket.h in network-related files that need socklen_t,
it's not really a generic integer type it's specific to sockets. Where is it
being used that we're not already including socket.h?
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org