Fix soc_read/soc_write.
This commit is contained in:
parent
e4b636ed41
commit
2cf2b7f1e9
@ -3,6 +3,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/iosupport.h>
|
#include <sys/iosupport.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
#include <3ds/types.h>
|
#include <3ds/types.h>
|
||||||
#include <3ds/svc.h>
|
#include <3ds/svc.h>
|
||||||
#include <3ds/srv.h>
|
#include <3ds/srv.h>
|
||||||
@ -29,3 +30,7 @@ soc_get_fd(int fd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
s32 _net_convert_error(s32 sock_retval);
|
s32 _net_convert_error(s32 sock_retval);
|
||||||
|
|
||||||
|
ssize_t soc_recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);
|
||||||
|
|
||||||
|
ssize_t soc_sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);
|
||||||
|
@ -166,7 +166,7 @@ soc_write(struct _reent *r,
|
|||||||
size_t len)
|
size_t len)
|
||||||
{
|
{
|
||||||
Handle sockfd = *(Handle*)fd;
|
Handle sockfd = *(Handle*)fd;
|
||||||
return send(sockfd, ptr, len, 0);
|
return soc_sendto(sockfd, ptr, len, 0, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t
|
static ssize_t
|
||||||
@ -176,5 +176,5 @@ soc_read(struct _reent *r,
|
|||||||
size_t len)
|
size_t len)
|
||||||
{
|
{
|
||||||
Handle sockfd = *(Handle*)fd;
|
Handle sockfd = *(Handle*)fd;
|
||||||
return recv(sockfd, ptr, len, 0);
|
return soc_recvfrom(sockfd, ptr, len, 0, NULL, 0);
|
||||||
}
|
}
|
||||||
|
@ -118,6 +118,12 @@ ssize_t socuipc_cmd8(int sockfd, void *buf, size_t len, int flags, struct sockad
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ssize_t soc_recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)
|
||||||
|
{
|
||||||
|
if(len < 0x2000)
|
||||||
|
return socuipc_cmd8(sockfd, buf, len, flags, src_addr, addrlen);
|
||||||
|
return socuipc_cmd7(sockfd, buf, len, flags, src_addr, addrlen);
|
||||||
|
}
|
||||||
|
|
||||||
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)
|
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)
|
||||||
{
|
{
|
||||||
@ -127,7 +133,5 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(len < 0x2000)
|
return soc_recvfrom(sockfd, buf, len, flags, src_addr, addrlen);
|
||||||
return socuipc_cmd8(sockfd, buf, len, flags, src_addr, addrlen);
|
|
||||||
return socuipc_cmd7(sockfd, buf, len, flags, src_addr, addrlen);
|
|
||||||
}
|
}
|
||||||
|
@ -110,6 +110,13 @@ ssize_t socuipc_cmda(int sockfd, const void *buf, size_t len, int flags, const s
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ssize_t soc_sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)
|
||||||
|
{
|
||||||
|
if(len < 0x2000)
|
||||||
|
return socuipc_cmda(sockfd, buf, len, flags, dest_addr, addrlen);
|
||||||
|
return socuipc_cmd9(sockfd, buf, len, flags, dest_addr, addrlen);
|
||||||
|
}
|
||||||
|
|
||||||
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)
|
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen)
|
||||||
{
|
{
|
||||||
sockfd = soc_get_fd(sockfd);
|
sockfd = soc_get_fd(sockfd);
|
||||||
@ -118,7 +125,5 @@ ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(len < 0x2000)
|
return soc_sendto(sockfd, buf, len, flags, dest_addr, addrlen);
|
||||||
return socuipc_cmda(sockfd, buf, len, flags, dest_addr, addrlen);
|
|
||||||
return socuipc_cmd9(sockfd, buf, len, flags, dest_addr, addrlen);
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user