From 6beee4f9fe4e7ee00b34581da210867acb83a1aa Mon Sep 17 00:00:00 2001 From: Lectem Date: Tue, 19 Jan 2016 14:14:32 -0500 Subject: [PATCH] added gethostname --- libctru/include/3ds/services/soc.h | 5 ++++- libctru/source/services/soc/soc_gethostname.c | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 libctru/source/services/soc/soc_gethostname.c diff --git a/libctru/include/3ds/services/soc.h b/libctru/include/3ds/services/soc.h index 60f7b27..bec38e7 100644 --- a/libctru/include/3ds/services/soc.h +++ b/libctru/include/3ds/services/soc.h @@ -20,13 +20,16 @@ Result socInit(u32 *context_addr, u32 context_size); */ Result socExit(void); -// this is supposed to be in unistd.h but newlib only puts it for cygwin +// this is supposed to be in unistd.h but newlib only puts it for cygwin, waiting for newlib patch from dkA /** * @brief Gets the system's host ID. * @return The system's host ID. */ long gethostid(void); +// this is supposed to be in unistd.h but newlib only puts it for cygwin, waiting for newlib patch from dkA +int gethostname(char *name, size_t namelen); + int SOCU_ShutdownSockets(); int SOCU_CloseSockets(); diff --git a/libctru/source/services/soc/soc_gethostname.c b/libctru/source/services/soc/soc_gethostname.c new file mode 100644 index 0000000..966ed3c --- /dev/null +++ b/libctru/source/services/soc/soc_gethostname.c @@ -0,0 +1,14 @@ +#include +#include <3ds/result.h> // To be removed when dkA patch to newlib is applied +#include <3ds/services/soc.h> // To be changed to unistd.h when dkA patch to newlib is applied + + +// The 3DS doesn't give any host name for its own IP through gethostbyaddr +// For compatibility, the host ASCII name will be given (IPv4 dotted notation) +int gethostname(char *name, size_t namelen) +{ + long hostid = gethostid(); + const char * hostname = inet_ntop(AF_INET,&hostid,name,namelen); + if(hostname == NULL)return -1; + return 0; +}