case FT_MYMBOX:
case FT_GETMYMBOX:
+ case FT_GETMYADDR:
/*
* if there's no component, we say true. Otherwise we
* say "true" only if we can parse the address and it
comp->c_mn = mn;
if (ismymbox(mn)) {
comp->c_flags |= CF_TRUE;
- /* Set str for use with FT_GETMYMBOX. It will be
- run through FT_LS_ADDR, which will strip off
- any pers name. */
- str = mn->m_text;
+ /* Set str for use with FT_GETMYMBOX. With
+ FT_GETMYADDR, comp->c_mn will be run through
+ FT_LS_ADDR, which will strip off any pers
+ name. */
+ str = mn->m_text;
} else {
comp->c_flags &= ~CF_TRUE;
- }
+ }
while ((sp = getname(sp)))
if ((comp->c_flags & CF_TRUE) == 0 &&
(mn = getm (sp, NULL, 0, NULL, 0)))
- if (ismymbox(mn))
+ if (ismymbox(mn)) {
comp->c_flags |= CF_TRUE;
+ /* Set str and comp->c_text for use with
+ FT_GETMYMBOX. With FT_GETMYADDR,
+ comp->c_mn will be run through
+ FT_LS_ADDR, which will strip off any
+ pers name. */
+ free (comp->c_text);
+ comp->c_text = str = strdup (mn->m_text);
+ comp->c_mn = mn;
+ }
comp->c_flags |= CF_PARSED;
} else {
while (getname("")) /* XXX */
comp->c_flags |= CF_TRUE;
else {
comp->c_flags &= ~CF_TRUE;
- }
+ }
comp->c_mn = &fmt_mnull;
}
if ((comp->c_flags & CF_TRUE) == 0 &&
- fmt->f_type == FT_GETMYMBOX) {
+ (fmt->f_type == FT_GETMYMBOX || fmt->f_type == FT_GETMYADDR)) {
/* Fool FT_LS_ADDR into not producing an address. */
comp->c_mn = &fmt_mnull; comp->c_text = NULL;
}