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) { }