]> diplodocus.org Git - nmh/blobdiff - sbr/fmt_scan.c
Terminate last arg in proxy argv n popsbr.c:parse_proxy().
[nmh] / sbr / fmt_scan.c
index 692d564c356155ea5d0b3dbf67c55f210c2a86ba..5732af910c73cd0ac39e113a805aeb4d64a06689 100644 (file)
@@ -1077,10 +1077,10 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat,
                comp->c_mn = mn;
                if (ismymbox(mn)) {
                    comp->c_flags |= CF_TRUE;
                comp->c_mn = mn;
                if (ismymbox(mn)) {
                    comp->c_flags |= CF_TRUE;
-                   /* Set str for use with FT_GETMYMBOX and
-                      FT_GETMYADDR.  With FT_GETMYADDR, it will be
-                      run through FT_LS_ADDR, which will strip off
-                      any pers name. */
+                   /* 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;
                    str = mn->m_text;
                } else {
                    comp->c_flags &= ~CF_TRUE;
@@ -1088,8 +1088,17 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat,
                while ((sp = getname(sp)))
                    if ((comp->c_flags & CF_TRUE) == 0 &&
                        (mn = getm (sp, NULL, 0, NULL, 0)))
                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;
                            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_PARSED;
            } else {
                while (getname(""))             /* XXX */