From Mathias Froehlich, "This change makes the net plugin compile on hp-ux.

It tries to unify some partly ugly ifdefs in the socket classes.
The change is also tested on a solaris 8, irix 6.5 and suse 9.0 machine."
This commit is contained in:
Robert Osfield
2007-07-13 11:39:40 +00:00
parent 6831940851
commit b1f943cef8
2 changed files with 21 additions and 28 deletions

View File

@@ -34,9 +34,6 @@
// The constructors of isockinet, osockinet and iosockinet are changed.
#include "sockinet.h"
#if defined( __APPLE__ ) && ( __GNUC__ < 4 )
typedef int socklen_t;
#endif
#if defined(__CYGWIN__) || !defined(WIN32)
extern "C" {
@@ -53,7 +50,6 @@ extern "C" {
}
#else
# define socklen_t int
# define EADDRNOTAVAIL WSAEADDRNOTAVAIL
# define EADDRINUSE WSAEADDRINUSE
# define ENOPROTOOPT WSAENOPROTOOPT
@@ -63,6 +59,12 @@ extern "C" {
#define INADDR_NONE ((in_addr_t) 0xffffffff)
#endif
// Do not include anything below that define. That should in no case change any forward decls in
// system headers ...
#if (defined(__APPLE__)&&(__GNUC__<4)) || (defined(WIN32)&&!defined(__CYGWIN__)) || !defined(_XOPEN_SOURCE_EXTENDED)
#define socklen_t int
#endif
void herror(const char*);
sockinetaddr::sockinetaddr ()
@@ -162,13 +164,8 @@ sockinetbuf::sockinetbuf(sockbuf::type ty, int proto)
sockinetaddr sockinetbuf::localaddr() const
{
sockinetaddr sin;
int len = sin.size();
#ifdef __sgi
if (::getsockname(rep->sock, sin.addr (), (int *) // LN
#else
if (::getsockname(rep->sock, sin.addr (), (socklen_t*) // LN
#endif
&len) == -1)
socklen_t len = sin.size();
if (::getsockname(rep->sock, sin.addr (), &len) == -1)
throw sockerr (errno, "sockinetbuf::localaddr");
return sin;
}
@@ -190,13 +187,8 @@ const char* sockinetbuf::localhost() const
sockinetaddr sockinetbuf::peeraddr() const
{
sockinetaddr sin;
int len = sin.size();
#ifdef __sgi
if (::getpeername(rep->sock, sin.addr (), (int *) // LN
#else
if (::getpeername(rep->sock, sin.addr (), (socklen_t*) // LN
#endif
&len) == -1)
socklen_t len = sin.size();
if (::getpeername(rep->sock, sin.addr (), &len) == -1)
throw sockerr (errno, "sockinetbuf::peeraddr");
return sin;
}

View File

@@ -64,10 +64,6 @@
#include <sstream>
#include <string>
#if (defined(__APPLE__)&&(__GNUC__<4)) || (defined(WIN32)&&!defined(__CYGWIN__)) || defined (__sgi)
typedef int socklen_t;
#endif
#if defined(__CYGWIN__) || !defined(WIN32)
extern "C" {
# include <sys/time.h>
@@ -140,6 +136,12 @@ extern "C" {
#endif
#define FD_ZERO(p) (memset ((p), 0, sizeof *(p)))
// Do not include anything below that define. That should in no case change any forward decls in
// system headers ...
#if (defined(__APPLE__)&&(__GNUC__<4)) || (defined(WIN32)&&!defined(__CYGWIN__)) || !defined(_XOPEN_SOURCE_EXTENDED)
#define socklen_t int
#endif
const char* sockerr::errstr () const
{
#if defined(__CYGWIN__) || !defined(WIN32)
@@ -558,11 +560,10 @@ int sockbuf::recvfrom (sockAddr& sa, void* buf, int len, int msgf)
throw sockoob ();
int rval = 0;
int __sa_len = sa.size ();
socklen_t __sa_len = sa.size ();
if ((rval = ::recvfrom (rep->sock, (char*) buf, len,
msgf, sa.addr (), (socklen_t*) // LN
&__sa_len)) == -1)
msgf, sa.addr (), &__sa_len)) == -1)
throw sockerr (errno, "sockbuf::recvfrom", sockname.c_str());
return rval;
}
@@ -729,8 +730,8 @@ void sockbuf::shutdown (shuthow sh)
int sockbuf::getopt (int op, void* buf, int len, int level) const
{
if (::getsockopt (rep->sock, level, op, (char*) buf, (socklen_t*) // LN
&len) == -1)
socklen_t salen = len;
if (::getsockopt (rep->sock, level, op, (char*) buf, &salen) == -1)
throw sockerr (errno, "sockbuf::getopt", sockname.c_str());
return len;
}