+
+void
+add_addr_snippet(char **ppos, char *term, char *add, int add_mbox, int add_personal)
+{
+ ADDRESS *addr = rfc822_parse_adrlist(NULL, add);
+ if (!addr)
+ {
+ debug("%s: Cannot parse address (%s)\n", add, rfc822_error(RFC822Error));
+ add_subject_snippet(ppos, term, add);
+ return;
+ }
+ // debug("%s: pers=%s mbox=%s\n", add, addr->personal, addr->mailbox);
+ rfc2047_decode(&addr->personal);
+ if (!addr->mailbox || !addr->mailbox[0])
+ add_mbox = 0;
+ if (!addr->personal || !addr->personal[0])
+ {
+ if (addr->mailbox && addr->mailbox[0])
+ {
+ char *c = strchr(addr->mailbox, '@');
+ if (c)
+ *c = 0;
+ add_mbox = 1;
+ }
+ add_personal = 0;
+ }
+ if (add_mbox || add_personal)
+ {
+ if (add_personal)
+ add_snippet(ppos, term, addr->personal);
+ if (add_mbox && add_personal)
+ add_snippet(ppos, term, " <");
+ if (add_mbox)
+ add_snippet(ppos, term, addr->mailbox);
+ if (add_mbox && add_personal)
+ add_snippet(ppos, term, ">");
+ }
+ else
+ add_snippet(ppos, term, "???");
+ rfc822_free_address(&addr);
+}