00001 #ifndef XMMSC_SOCKETS_H
00002 #define XMMSC_SOCKETS_H
00003
00004 #include <xmmsc/xmmsc_stdbool.h>
00005
00006
00007 #ifdef HAVE_WINSOCK2
00008 #include <winsock2.h>
00009 #include <ws2tcpip.h>
00010 typedef SOCKET xmms_socket_t;
00011 typedef int socklen_t;
00012 #define XMMS_EINTR WSAEINTR
00013 #define XMMS_EAGAIN WSAEWOULDBLOCK
00014 #define XMMS_EINPROGRESS WSAEINPROGRESS
00015
00016 #else
00017 #define SOCKET_ERROR (-1)
00018 #define XMMS_EINTR EINTR
00019 #define XMMS_EINPROGRESS EINPROGRESS
00020 #ifdef __hpux
00021
00022 #define XMMS_EAGAIN EAGAIN
00023 #else
00024 #define XMMS_EAGAIN EWOULDBLOCK
00025 #endif
00026 #include <sys/types.h>
00027 #include <sys/socket.h>
00028 #include <sys/select.h>
00029 #include <sys/time.h>
00030 #include <netinet/in.h>
00031 #include <netinet/tcp.h>
00032 #include <arpa/inet.h>
00033 #include <netdb.h>
00034 #include <fcntl.h>
00035 #include <unistd.h>
00036 #include <errno.h>
00037 typedef int xmms_socket_t;
00038 #endif
00039
00040 int xmms_sockets_initialize(void);
00041 int xmms_socket_set_nonblock(xmms_socket_t socket);
00042 int xmms_socket_valid(xmms_socket_t socket);
00043 void xmms_socket_close(xmms_socket_t socket);
00044 int xmms_socket_errno(void);
00045 bool xmms_socket_error_recoverable(void);
00046 int xmms_getaddrinfo (const char *node, const char *service,
00047 const struct addrinfo *hints, struct addrinfo **res);
00048 void xmms_freeaddrinfo (struct addrinfo *res);
00049
00050 #endif