rfc822_write_address (buf, sizeof (buf), adr);
rfc822_write_address (buf, sizeof (buf), adr, 1);
void mutt_attach_bounce (FILE * fp, HEADER * hdr, 	   ATTACHPTR ** idx, short idxlen, BODY * cur){  short i;  char prompt[STRING];  char buf[HUGE_STRING];  ADDRESS *adr = NULL;  int ret = 0;  int p   = 0;  if (check_all_msg (idx, idxlen, cur, 1) == -1)    return;  /* one or more messages? */  p = (cur || count_tagged (idx, idxlen) == 1);  if (p)    strfcpy (prompt, _("Bounce message to: "), sizeof (prompt));  else    strfcpy (prompt, _("Bounce tagged messages to: "), sizeof (prompt));  buf[0] = '\0';  if (mutt_get_field (prompt, buf, sizeof (buf), M_ALIAS)       || buf[0] == '\0')    return;  if (!(adr = rfc822_parse_adrlist (adr, buf)))  {    mutt_error _("Error parsing address!");    return;  }  adr = mutt_expand_aliases (adr);  buf[0] = 0;  rfc822_write_address (buf, sizeof (buf), adr);#define extra_space (15+7+2)  /*   * See commands.c.   */  snprintf (prompt, sizeof (prompt) - 4,    (p ? _("Bounce message to %s") : _("Bounce messages to %s")), buf);    if (mutt_strwidth (prompt) > COLS - extra_space)  {    mutt_format_string (prompt, sizeof (prompt) - 4,			0, COLS-extra_space, 0, 0,			prompt, sizeof (prompt), 0);    strncat (prompt, "...?", sizeof (prompt));  }  else    strncat (prompt, "?", sizeof (prompt));  if (query_quadoption (OPT_BOUNCE, prompt) == M_NO)  {    rfc822_free_address (&adr);    CLEARLINE (LINES - 1);    mutt_message (p ? _("Message not bounced.") : _("Messages not bounced."));    return;  }    CLEARLINE (LINES - 1);    if (cur)    ret = mutt_bounce_message (fp, cur->hdr, adr);  else  {    for (i = 0; i < idxlen; i++)    {      if (idx[i]->content->tagged)	if (mutt_bounce_message (fp, idx[i]->content->hdr, adr))	  ret = 1;    }  }  if (!ret)    mutt_message (p ? _("Message bounced.") : _("Messages bounced."));  else    mutt_error (p ? _("Error bouncing message!") : _("Error bouncing messages!"));}