static int get_display_name(struct mail *mail, const char *header, const char **name_r) { struct message_address *addr; *name_r = ""; if (get_first_addr(mail, header, &addr) < 0) return -1; if (addr == NULL) return 0; if (addr->name != NULL) { string_t *str; unsigned int len = strlen(addr->name); str = t_str_new(len*2); (void)message_header_decode_utf8( (const unsigned char *)addr->name, len, str, NULL); if (str_len(str) > 0) { *name_r = str_c(str); return 0; } } if (addr->mailbox != NULL && addr->domain != NULL) *name_r = t_strconcat(addr->mailbox, "@", addr->domain, NULL); else if (addr->mailbox != NULL) *name_r = addr->mailbox; return 0; }
static int get_first_mailbox(struct mail *mail, const char *header, const char **mailbox_r) { struct message_address *addr; if (get_first_addr(mail, header, &addr) < 0) { *mailbox_r = ""; return -1; } *mailbox_r = addr != NULL && addr->mailbox != NULL ? addr->mailbox : ""; return 0; }
LS_API bool ls_sockaddr_parse(const char* src, struct sockaddr* addr, size_t addr_len, ls_err* err) { struct addrinfo hints; memset(&hints, 0, sizeof hints); hints.ai_flags = AI_NUMERICHOST; hints.ai_protocol = IPPROTO_UDP; hints.ai_socktype = SOCK_DGRAM; return get_first_addr(src, NULL, &hints, addr, addr_len, err); }
LS_API bool ls_sockaddr_get_remote_ip_addr(const char* fqdn, const char* port, struct sockaddr* remoteAddr, size_t addr_len, ls_err* err) { struct addrinfo hints; memset(&hints, 0, sizeof hints); hints.ai_protocol = IPPROTO_UDP; hints.ai_socktype = SOCK_DGRAM; return get_first_addr(fqdn, port, &hints, remoteAddr, addr_len, err); }