diff --git a/src/add-ons/print/transports/ipp/Jamfile b/src/add-ons/print/transports/ipp/Jamfile index af58040a6f..af4cd68bdd 100644 --- a/src/add-ons/print/transports/ipp/Jamfile +++ b/src/add-ons/print/transports/ipp/Jamfile @@ -1,7 +1,5 @@ SubDir OBOS_TOP src add-ons print transports ipp ; -UsePrivateHeaders net ; - SubDirHdrs [ FDirName $(OBOS_TOP) src add-ons print transports shared ] ; Addon IPP @@ -24,5 +22,5 @@ ObjectReferences DbgMsg.o ; -LinkSharedOSLibs IPP : be net stdc++.r4 ; +LinkSharedOSLibs IPP : be libsocket.so libbind.so stdc++.r4 ; diff --git a/src/add-ons/print/transports/lpr/Jamfile b/src/add-ons/print/transports/lpr/Jamfile index baf1c3b65c..91ffb37eb4 100644 --- a/src/add-ons/print/transports/lpr/Jamfile +++ b/src/add-ons/print/transports/lpr/Jamfile @@ -2,8 +2,6 @@ SubDir OBOS_TOP src add-ons print transports lpr ; SubDirHdrs [ FDirName $(OBOS_TOP) src add-ons print transports shared ] ; -UsePrivateHeaders net ; - Addon LPR : print transport : Lpr.cpp @@ -21,5 +19,5 @@ ObjectReferences DbgMsg.o ; -LinkSharedOSLibs LPR : be net stdc++.r4 ; +LinkSharedOSLibs LPR : be libsocket.so libbind.so stdc++.r4 ; diff --git a/src/add-ons/print/transports/shared/Jamfile b/src/add-ons/print/transports/shared/Jamfile index 239cab584a..341b41b16c 100644 --- a/src/add-ons/print/transports/shared/Jamfile +++ b/src/add-ons/print/transports/shared/Jamfile @@ -1,9 +1,9 @@ SubDir OBOS_TOP src add-ons print transports shared ; -UsePrivateHeaders net ; - SetupObjectsDir ; +ObjectC++Flags Socket.cpp : -DHAVE_ARPA_INET ; + Objects DbgMsg.cpp Socket.cpp @@ -11,3 +11,4 @@ Objects SocketStream2.cpp ; + diff --git a/src/add-ons/print/transports/shared/Socket.cpp b/src/add-ons/print/transports/shared/Socket.cpp index 13c342a165..5bec5c0f9e 100644 --- a/src/add-ons/print/transports/shared/Socket.cpp +++ b/src/add-ons/print/transports/shared/Socket.cpp @@ -1,193 +1,197 @@ -// Sun, 18 Jun 2000 -// Y.Takagi - -#ifdef WIN32 -#include -#else -#include -#include -#endif // WIN32 - -#include -#include "Socket.h" -#include "SocketStream.h" - -#ifndef INADDR_NONE -#define INADDR_NONE 0xffffffff -#endif - -#ifdef WIN32 - #define EADDRINUSE WSAEADDRINUSE - #define errno WSAGetLastError() -#else - #include -#endif - -#ifdef WIN32 -class WIN32SOCKET { -public: - WIN32SOCKET() - { - WSADATA winsockdata; - WSAStartup(MAKEWORD(1,1), &winsockdata); - } - ~WIN32SOCKET() - { - WSACleanup(); - } -}; - -WIN32SOCKET win32socket; -#endif - -Socket::Socket(const char *host, int port) - : __sock(-1), __is(NULL), __os(NULL), __error(false) -{ - __host = host; - __port = port; - __localPort = -1; - __error_msg[0] = '\0'; - - open(); -} - -Socket::Socket(const char *host, int port, int localPort) - : __sock(-1), __is(NULL), __os(NULL), __error(false) -{ - __host = host; - __port = port; - __localPort = localPort; - __error_msg[0] = '\0'; - - open(); -} - -Socket::~Socket() -{ - close(); - if (__is) { - delete __is; - } - if (__os) { - delete __os; - } -} - -istream &Socket::getInputStream() -{ - if (__is == NULL) { - __is = new isocketstream(this); - } - return *__is; -} - -ostream &Socket::getOutputStream() -{ - if (__os == NULL) { - __os = new osocketstream(this); - } - return *__os; -} - -void Socket::open() -{ - if (__sock == -1 && !__error) { - - sockaddr_in sin; - memset(&sin, 0, sizeof(sin)); - - unsigned long inaddr; - hostent *host_info; - - if ((inaddr = inet_addr(__host.c_str())) != INADDR_NONE) { - memcpy(&sin.sin_addr, &inaddr, sizeof(inaddr)); - sin.sin_family = AF_INET; - } else if ((host_info = gethostbyname(__host.c_str())) != NULL) { - memcpy(&sin.sin_addr, host_info->h_addr, host_info->h_length); - sin.sin_family = host_info->h_addrtype; - } else { - sprintf(__error_msg, "gethostbyname failed. errno = %d", errno); - __error = true; - return; - } - - if ((__sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { - sprintf(__error_msg, "socket failed. errno = %d", errno); - __error = true; - } else { - if (__localPort >= 0) { - sockaddr_in cin; - memset(&cin, 0, sizeof(cin)); - cin.sin_family = AF_INET; - cin.sin_port = htons(__localPort); - if (::bind(__sock, (sockaddr *)&cin, sizeof(cin)) != 0) { - sprintf(__error_msg, "bind failed. errno = %d", errno); - ::closesocket(__sock); - __sock = -1; - __error = true; - } - } - sin.sin_port = htons(__port); - if (::connect(__sock, (sockaddr *)&(sin), sizeof(sin)) != 0) { - sprintf(__error_msg, "connect failed. errno = %d", errno); - ::closesocket(__sock); - __sock = -1; - __error = true; - } - } - } -} - -void Socket::close() -{ - if (__sock != -1) { - ::shutdown(__sock, 2); - ::closesocket(__sock); - __sock = -1; - } -} - -bool Socket::fail() const -{ - return __sock == -1 || __error; -} - -bool Socket::good() const -{ - return !fail(); -} - -bool Socket::operator !() const -{ - return fail(); -} - -int Socket::read(char *buffer, int size, int flags) -{ - if (fail()) { - size = 0; - } else { - size = ::recv(__sock, buffer, size, flags); - if (size <= 0) { - sprintf(__error_msg, "recv failed. errno = %d", errno); - __error = true; - close(); - } - } - return size; -} - -int Socket::write(const char *buffer, int size, int flags) -{ - if (fail()) { - size = 0; - } else { - size = ::send(__sock, buffer, size, flags); - if (size <= 0) { - sprintf(__error_msg, "send failed. errno = %d", errno); - __error = true; - close(); - } - } - return size; -} +// Sun, 18 Jun 2000 +// Y.Takagi + +#ifdef WIN32 + #include +#else + #include + #include + #ifdef HAVE_ARPA_INET + // inet_addr() is not defined in netdb.h anymore under BONE & sooner + #include + #endif +#endif // WIN32 + +#include +#include "Socket.h" +#include "SocketStream.h" + +#ifndef INADDR_NONE +#define INADDR_NONE 0xffffffff +#endif + +#ifdef WIN32 + #define EADDRINUSE WSAEADDRINUSE + #define errno WSAGetLastError() +#else + #include +#endif + +#ifdef WIN32 +class WIN32SOCKET { +public: + WIN32SOCKET() + { + WSADATA winsockdata; + WSAStartup(MAKEWORD(1,1), &winsockdata); + } + ~WIN32SOCKET() + { + WSACleanup(); + } +}; + +WIN32SOCKET win32socket; +#endif + +Socket::Socket(const char *host, int port) + : __sock(-1), __is(NULL), __os(NULL), __error(false) +{ + __host = host; + __port = port; + __localPort = -1; + __error_msg[0] = '\0'; + + open(); +} + +Socket::Socket(const char *host, int port, int localPort) + : __sock(-1), __is(NULL), __os(NULL), __error(false) +{ + __host = host; + __port = port; + __localPort = localPort; + __error_msg[0] = '\0'; + + open(); +} + +Socket::~Socket() +{ + close(); + if (__is) { + delete __is; + } + if (__os) { + delete __os; + } +} + +istream &Socket::getInputStream() +{ + if (__is == NULL) { + __is = new isocketstream(this); + } + return *__is; +} + +ostream &Socket::getOutputStream() +{ + if (__os == NULL) { + __os = new osocketstream(this); + } + return *__os; +} + +void Socket::open() +{ + if (__sock == -1 && !__error) { + + sockaddr_in sin; + memset(&sin, 0, sizeof(sin)); + + unsigned long inaddr; + hostent *host_info; + + if ((inaddr = inet_addr(__host.c_str())) != INADDR_NONE) { + memcpy(&sin.sin_addr, &inaddr, sizeof(inaddr)); + sin.sin_family = AF_INET; + } else if ((host_info = gethostbyname(__host.c_str())) != NULL) { + memcpy(&sin.sin_addr, host_info->h_addr, host_info->h_length); + sin.sin_family = host_info->h_addrtype; + } else { + sprintf(__error_msg, "gethostbyname failed. errno = %d", errno); + __error = true; + return; + } + + if ((__sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { + sprintf(__error_msg, "socket failed. errno = %d", errno); + __error = true; + } else { + if (__localPort >= 0) { + sockaddr_in cin; + memset(&cin, 0, sizeof(cin)); + cin.sin_family = AF_INET; + cin.sin_port = htons(__localPort); + if (::bind(__sock, (sockaddr *)&cin, sizeof(cin)) != 0) { + sprintf(__error_msg, "bind failed. errno = %d", errno); + ::closesocket(__sock); + __sock = -1; + __error = true; + } + } + sin.sin_port = htons(__port); + if (::connect(__sock, (sockaddr *)&(sin), sizeof(sin)) != 0) { + sprintf(__error_msg, "connect failed. errno = %d", errno); + ::closesocket(__sock); + __sock = -1; + __error = true; + } + } + } +} + +void Socket::close() +{ + if (__sock != -1) { + ::shutdown(__sock, 2); + ::closesocket(__sock); + __sock = -1; + } +} + +bool Socket::fail() const +{ + return __sock == -1 || __error; +} + +bool Socket::good() const +{ + return !fail(); +} + +bool Socket::operator !() const +{ + return fail(); +} + +int Socket::read(char *buffer, int size, int flags) +{ + if (fail()) { + size = 0; + } else { + size = ::recv(__sock, buffer, size, flags); + if (size <= 0) { + sprintf(__error_msg, "recv failed. errno = %d", errno); + __error = true; + close(); + } + } + return size; +} + +int Socket::write(const char *buffer, int size, int flags) +{ + if (fail()) { + size = 0; + } else { + size = ::send(__sock, buffer, size, flags); + if (size <= 0) { + sprintf(__error_msg, "send failed. errno = %d", errno); + __error = true; + close(); + } + } + return size; +}