return pbuf - buf;
}
+/**
+ * mutt_addr_to_intl - Convert an Address to Punycode
+ * @param a Address to convert
+ * @retval bool True on success, false otherwise
+ */
+bool mutt_addr_to_intl(struct Address *a)
+{
+ if (!a || !a->mailbox || addr_is_intl(a))
+ return true;
+
+ char *user = NULL;
+ char *domain = NULL;
+ if (addr_mbox_to_udomain(a->mailbox, &user, &domain) == -1)
+ return true;
+
+ char *intl_mailbox = mutt_idna_local_to_intl(user, domain);
+
+ FREE(&user);
+ FREE(&domain);
+
+ if (!intl_mailbox)
+ return false;
+
+ addr_set_intl(a, intl_mailbox);
+ return true;
+}
+
/**
* mutt_addrlist_to_intl - Convert an Address list to Punycode
* @param[in] al Address list to modify
const char * mutt_addr_for_display(const struct Address *a);
void mutt_addr_free (struct Address **a);
struct Address *mutt_addr_new (void);
+bool mutt_addr_to_intl (struct Address *a);
bool mutt_addr_to_local (struct Address *a);
size_t mutt_addr_write (char *buf, size_t buflen, struct Address *addr, bool display);