From 2f6baffe458cdbc7c489708474395b24c527dfbe Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sun, 8 May 2016 07:24:10 +0200 Subject: [PATCH] Expand net_socket.c --- libretro-common/include/net/net_socket.h | 8 ++++ libretro-common/net/net_socket.c | 50 +++++++++++++++++------- netlogger.c | 16 +++----- 3 files changed, 49 insertions(+), 25 deletions(-) diff --git a/libretro-common/include/net/net_socket.h b/libretro-common/include/net/net_socket.h index 0b45ded990..c7a0524596 100644 --- a/libretro-common/include/net/net_socket.h +++ b/libretro-common/include/net/net_socket.h @@ -50,6 +50,14 @@ enum socket_protocol SOCKET_PROTOCOL_UDP }; +typedef struct socket_target +{ + unsigned port; + const char *server; + enum socket_domain domain; + enum socket_protocol prot; +} socket_target_t; + int socket_init(void **address, uint16_t port, const char *server, enum socket_type type); int socket_close(int fd); diff --git a/libretro-common/net/net_socket.c b/libretro-common/net/net_socket.c index 450bc3c6b5..557ccb6800 100644 --- a/libretro-common/net/net_socket.c +++ b/libretro-common/net/net_socket.c @@ -208,6 +208,23 @@ int socket_connect(int fd, void *data, bool timeout_enable) return connect(fd, addr->ai_addr, addr->ai_addrlen); } +static int domain_get(enum socket_domain type) +{ + switch (type) + { + case SOCKET_DOMAIN_INET: +#ifdef VITA + return PSP2_NET_AF_INET; +#else + return AF_INET; +#endif + default: + break; + } + + return 0; +} + int socket_create( const char *name, enum socket_domain domain_type, @@ -215,15 +232,9 @@ int socket_create( enum socket_protocol protocol_type) { int type = 0; - int domain = 0; int protocol = 0; + int domain = domain_get(domain_type); #ifdef VITA - switch (domain_type) - { - case SOCKET_DOMAIN_INET: - domain = PSP2_NET_AF_INET; - break; - } switch (socket_type) { @@ -253,13 +264,6 @@ int socket_create( return sceNetSocket(name, domain, type, protocol); #else - switch (domain_type) - { - case SOCKET_DOMAIN_INET: - domain = AF_INET; - break; - } - switch (socket_type) { case SOCKET_TYPE_DATAGRAM: @@ -289,3 +293,21 @@ int socket_create( return socket(domain, type, protocol); #endif } + +void socket_set_target(void *data, socket_target_t *in_addr) +{ + struct sockaddr_in *out_target = (struct sockaddr_in*)data; + + out_target->sin_port = inet_htons(in_addr->port); + out_target->sin_family = domain_get(in_addr->domain); +#ifdef VITA + out_target->sin_addr = inet_aton(in_addr->server); +#else +#ifdef GEKKO + out_target->sin_len = 8; +#endif + + inet_pton(AF_INET, in_addr->server, &out_target->sin_addr); + +#endif +} diff --git a/netlogger.c b/netlogger.c index 71dd5d42f6..c6e2dcef06 100644 --- a/netlogger.c +++ b/netlogger.c @@ -42,6 +42,7 @@ static struct sockaddr_in target; void logger_init (void) { + socket_target_t in_target; const char *server = PC_DEVELOPMENT_IP_ADDRESS; unsigned port = PC_DEVELOPMENT_UDP_PORT; @@ -57,18 +58,11 @@ void logger_init (void) SOCKET_TYPE_DATAGRAM, SOCKET_PROTOCOL_NONE); - target.sin_port = inet_htons(port); -#ifdef VITA - target.sin_family = PSP2_NET_AF_INET; - target.sin_addr = inet_aton(server); -#else - target.sin_family = AF_INET; -#ifdef GEKKO - target.sin_len = 8; -#endif + in_target.port = port; + in_target.server = server; + in_target.domain = SOCKET_DOMAIN_INET; - inet_pton(AF_INET, server, &target.sin_addr); -#endif + socket_set_target(&target, &in_target); } void logger_shutdown (void)