X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/bf982b40ca8495e7a8d14513aedcc2fe15f09a93..d33eb0b4bee02478ab5250a4c4d2bfc608fde5e3:/sbr/fmt_scan.c diff --git a/sbr/fmt_scan.c b/sbr/fmt_scan.c index 759a81f9..5732af91 100644 --- a/sbr/fmt_scan.c +++ b/sbr/fmt_scan.c @@ -1063,6 +1063,7 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat, 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 @@ -1076,18 +1077,28 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat, 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 */ @@ -1096,11 +1107,11 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat, 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; }