aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelupus <elupus@xbmc.org>2011-05-10 20:41:12 +0200
committerelupus <elupus@xbmc.org>2011-05-10 20:42:02 +0200
commita0cdccd7d4892b993e85275d542e5bfc9674f6b4 (patch)
tree67945f037c2df52d7a50cc7fd3176d5fb288dcb6
parentca84e5b440ace0357409f53d904c9d26fa507ae6 (diff)
changed: remap WSAGetLastError() errors to errno errors in hts client to avoid ifdef in xbmc
-rw-r--r--lib/libhts/net_winsock.c32
-rw-r--r--xbmc/filesystem/HTSPSession.cpp4
2 files changed, 21 insertions, 15 deletions
diff --git a/lib/libhts/net_winsock.c b/lib/libhts/net_winsock.c
index f31dac8a6b..3f540dd03b 100644
--- a/lib/libhts/net_winsock.c
+++ b/lib/libhts/net_winsock.c
@@ -23,16 +23,26 @@
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
+#include <errno.h>
#include <winsock2.h>
#include <Ws2tcpip.h>
#include "msvc.h"
#include "net.h"
-#define EINPROGRESS WSAEINPROGRESS
-#define ECONNRESET WSAECONNRESET
-#define ETIMEDOUT WSAETIMEDOUT
-#define EAGAIN WSAEWOULDBLOCK
+
+static int socket_errno()
+{
+ int error = WSAGetLastError();
+ switch(error)
+ {
+ case WSAEINPROGRESS: return EINPROGRESS;
+ case WSAECONNRESET : return ECONNRESET;
+ case WSAETIMEDOUT : return ETIMEDOUT;
+ case WSAEWOULDBLOCK: return EAGAIN;
+ default : return error;
+ }
+}
#ifndef MSG_WAITALL
#define MSG_WAITALL 0x8
@@ -74,7 +84,7 @@ htsp_tcp_connect_addr(struct addrinfo* addr, char *errbuf, size_t errbufsize,
fd = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol);
if(fd == -1) {
snprintf(errbuf, errbufsize, "Unable to create socket: %s",
- strerror(WSAGetLastError()));
+ strerror(socket_errno()));
return -1;
}
@@ -87,8 +97,8 @@ htsp_tcp_connect_addr(struct addrinfo* addr, char *errbuf, size_t errbufsize,
r = connect(fd, addr->ai_addr, addr->ai_addrlen);
if(r == -1) {
- if(WSAGetLastError() == EINPROGRESS ||
- WSAGetLastError() == EAGAIN) {
+ if(socket_errno() == EINPROGRESS ||
+ socket_errno() == EAGAIN) {
fd_set fd_write, fd_except;
struct timeval tv;
@@ -111,14 +121,14 @@ htsp_tcp_connect_addr(struct addrinfo* addr, char *errbuf, size_t errbufsize,
}
if(r == -1) {
- snprintf(errbuf, errbufsize, "select() error: %s", strerror(WSAGetLastError()));
+ snprintf(errbuf, errbufsize, "select() error: %s", strerror(socket_errno()));
closesocket(fd);
return -1;
}
getsockopt(fd, SOL_SOCKET, SO_ERROR, (void *)&err, &errlen);
} else {
- err = WSAGetLastError();
+ err = socket_errno();
}
} else {
err = 0;
@@ -316,7 +326,7 @@ htsp_tcp_read(socket_t fd, void *buf, size_t len)
int x = recv(fd, buf, len, MSG_WAITALL);
if(x == -1)
- return WSAGetLastError();
+ return socket_errno();
if(x != len)
return ECONNRESET;
return 0;
@@ -352,7 +362,7 @@ htsp_tcp_read_timeout(socket_t fd, char *buf, size_t len, int timeout)
ioctlsocket(fd, FIONBIO, &val);
x = recv(fd, buf + tot, len - tot, 0);
- err = WSAGetLastError();
+ err = socket_errno();
val = 0;
ioctlsocket(fd, FIONBIO, &val);
diff --git a/xbmc/filesystem/HTSPSession.cpp b/xbmc/filesystem/HTSPSession.cpp
index 9e7826752b..ef6ece7376 100644
--- a/xbmc/filesystem/HTSPSession.cpp
+++ b/xbmc/filesystem/HTSPSession.cpp
@@ -28,10 +28,6 @@
#include <netinet/in.h>
#include <netinet/tcp.h>
-#ifdef _MSC_VER
-#define ETIMEDOUT WSAETIMEDOUT
-#endif
-
extern "C" {
#include "libhts/net.h"
#include "libhts/htsmsg.h"