/* this should be rfc822_cpy_adrlist */ ADDRESS *rfc822_cpy_adr (ADDRESS *addr) { ADDRESS *top = NULL, *last = NULL; for (; addr; addr = addr->next) { if (last) { last->next = rfc822_cpy_adr_real (addr); last = last->next; } else top = last = rfc822_cpy_adr_real (addr); } return top; }
ADDRESS *mutt_default_from (void) { ADDRESS *adr; const char *fqdn = mutt_fqdn(1); /* * Note: We let $from override $realname here. Is this the right * thing to do? */ if (From) adr = rfc822_cpy_adr_real (From); else if (option (OPTUSEDOMAIN)) { adr = rfc822_new_address (); adr->mailbox = safe_malloc (mutt_strlen (Username) + mutt_strlen (fqdn) + 2); sprintf (adr->mailbox, "%s@%s", NONULL(Username), NONULL(fqdn)); /* __SPRINTF_CHECKED__ */ } else { adr = rfc822_new_address (); adr->mailbox = safe_strdup (NONULL(Username)); } return (adr); }
/* look through the recipients of the message we are replying to, and if we find an address that matches $alternates, we use that as the default from field */ static ADDRESS *set_reverse_name (ENVELOPE *env) { ADDRESS *tmp; for (tmp = env->to; tmp; tmp = tmp->next) { if (mutt_addr_is_user (tmp)) break; } if (!tmp) { for (tmp = env->cc; tmp; tmp = tmp->next) { if (mutt_addr_is_user (tmp)) break; } } if (!tmp && mutt_addr_is_user (env->from)) tmp = env->from; if (tmp) { tmp = rfc822_cpy_adr_real (tmp); /* when $reverse_realname is not set, clear the personal name so that it * may be set vi a reply- or send-hook. */ if (!option (OPTREVREAL)) FREE (&tmp->personal); } return (tmp); }
/* this should be rfc822_cpy_adrlist */ ADDRESS *rfc822_cpy_adr (ADDRESS *addr, int prune) { ADDRESS *top = NULL, *last = NULL; for (; addr; addr = addr->next) { if (prune && addr->group && (!addr->next || !addr->next->mailbox)) { /* ignore this element of the list */ } else if (last) { last->next = rfc822_cpy_adr_real (addr); last = last->next; } else top = last = rfc822_cpy_adr_real (addr); } return top; }
static ADDRESS *find_mailing_lists (ADDRESS *t, ADDRESS *c) { ADDRESS *top = NULL, *ptr = NULL; for (; t || c; t = c, c = NULL) { for (; t; t = t->next) { if (mutt_is_mail_list (t) && !t->group) { if (top) { ptr->next = rfc822_cpy_adr_real (t); ptr = ptr->next; } else ptr = top = rfc822_cpy_adr_real (t); } } } return top; }