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