- char *buf = malloc(strlen(u->login) + strlen(s) + 2);
- sprintf(buf, "%s@%s", u->login, s);
- u->pobox = buf;
+ /* If SMTP or SPLIT, get SMTP address. */
+ if (potype[0] == 'S')
+ {
+ saddr = hash_lookup(strings, bid);
+
+ /* If SMTP, clear pid and iid. */
+ if (potype[1] == 'M')
+ pid = iid = 0;
+ }
+
+ /* If IMAP, or SPLIT with IMAP, set pid to mach_id. */
+ if (potype[0] == 'I' || (potype[0] == 'S' && iid))
+ {
+ EXEC SQL SELECT mach_id INTO :pid FROM filesys
+ WHERE filsys_id = :iid;
+ }
+
+ if (pid && (s = hash_lookup(machines, pid)))
+ {
+ paddr = malloc(strlen(u->login) + strlen(s) + 2);
+ sprintf(paddr, "%s@%s", u->login, s);
+ }
+
+ if (paddr && saddr)
+ {
+ u->pobox = malloc(strlen(paddr) + strlen(saddr) + 3);
+ sprintf(u->pobox, "%s, %s", paddr, saddr);
+ free(paddr);
+ }
+ else if (paddr)
+ u->pobox = paddr;
+ else
+ u->pobox = saddr;