diff options
author | bonmas14 <bonmas14@gmail.com> | 2025-09-28 17:53:03 +0000 |
---|---|---|
committer | bonmas14 <bonmas14@gmail.com> | 2025-09-28 17:53:03 +0000 |
commit | 30751aece04ba8954513bbb7aca996244e6fa684 (patch) | |
tree | c40dfac95dd3c0766656324c45465f0375061b5d /src/d_linux.c | |
parent | 3ad95773ae4f963435003c260278177f1e22577e (diff) | |
download | ungrateful-30751aece04ba8954513bbb7aca996244e6fa684.tar.gz ungrateful-30751aece04ba8954513bbb7aca996244e6fa684.zip |
changes
Diffstat (limited to 'src/d_linux.c')
-rw-r--r-- | src/d_linux.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/d_linux.c b/src/d_linux.c new file mode 100644 index 0000000..5ff6abd --- /dev/null +++ b/src/d_linux.c @@ -0,0 +1,56 @@ +typedef struct DHandle { + u64 type; +} DHandle; + +b32 d_init(void) { + return true; +} + +String d_hostname_ip_get(String host, Allocator alloc) { + char *host_cstr; + Allocator talloc; + int err; + String ip; + + talloc = un_alloc_temp_get(); + host_cstr = (char *) un_string_to_cstring(host, talloc); + + // @note, host_info can return multiple ip addresses? + struct hostent *host_info = gethostbyname(host_cstr); + + if (!host_info) { + err = h_errno; + + switch (err) { + case TRY_AGAIN: + cyn_log_write_cstring(CYN_LOG_ERROR, (u8*) "d_get_hostname_ip: host not found (TRY_AGAIN)."); + break; + case HOST_NOT_FOUND: + cyn_log_write_cstring(CYN_LOG_ERROR, (u8*) "d_get_hostname_ip: host not found (HOST_NOT_FOUND)."); + break; + case NO_DATA: + cyn_log_write_cstring(CYN_LOG_ERROR, (u8*) "d_get_hostname_ip: no host data (NO_DATA)."); + break; + default: + cyn_log_write_cstring(CYN_LOG_ERROR, (u8*) "d_get_hostname_ip: unspecified error."); + break; + } + + return CLITERAL(String) { 0 }; + } + + if (host_info) { + assert(host_info->h_addrtype == AF_INET); + + assert(host_info->h_length >= (s32)sizeof(struct in_addr)); + ip = un_string_from_cstring(inet_ntoa(*(struct in_addr *)*host_info->h_addr_list)); + + return un_string_copy(ip, alloc); + } + + return CLITERAL(String) { 0 }; +} + +DHandle* d_tcp_connect(String ip, u16 port) { + +} |