]> diplodocus.org Git - nmh/commitdiff
Fixed commit 6cc9e85e73ff6f6c67ae6e645d184bbf57ecc2f0 to properly
authorDavid Levine <levinedl@acm.org>
Tue, 4 Nov 2014 23:00:28 +0000 (17:00 -0600)
committerDavid Levine <levinedl@acm.org>
Tue, 4 Nov 2014 23:00:28 +0000 (17:00 -0600)
return other than the first mbox/address if there's a match in
getmymbox/getmyaddr.

sbr/fmt_scan.c
test/format/test-mymbox

index 692d564..5732af9 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 */
index 8efee5b..42f584c 100755 (executable)
@@ -70,4 +70,22 @@ run_test 'fmttest -message -format %(getmymbox{from}) first' \
 run_test 'fmttest -message -format %(getmyaddr{from}) first' \
          'test1@example.com'
 
 run_test 'fmttest -message -format %(getmyaddr{from}) first' \
          'test1@example.com'
 
+# check getmymbox and getmyaddr, with match of other than first address in
+#   component
+cat >`mhpath new` <<'EOF'
+From: Test11 <test11@example.com>
+Cc: Test0 <test0@example.com>, Test3 <test3@example.com>,
+    Test1 <test1@example.com>, Test2 <test2@example.com>
+To: Some User <user@example.com>
+Date: Fri, 29 Sep 2006 00:00:00
+Message-Id: 11@test.nmh
+Subject: Testing message 11
+
+This is message number 11
+EOF
+run_test 'fmttest -message -format %(getmymbox{cc}) last' \
+         'Test1 <test1@example.com>'
+run_test 'fmttest -message -format %(getmyaddr{cc}) last' \
+         'test1@example.com'
+
 exit $failed
 exit $failed