qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alan Conway <acon...@redhat.com>
Subject Re: About socklen_t
Date Thu, 26 Feb 2009 23:04:06 GMT
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-subscribe@qpid.apache.org


Mime
View raw message