From ff5eb06992e08944273e1299e0af7bd8cb1ad568 Mon Sep 17 00:00:00 2001 From: David Levine Date: Tue, 4 Nov 2014 17:00:28 -0600 Subject: [PATCH] Fixed commit 6cc9e85e73ff6f6c67ae6e645d184bbf57ecc2f0 to properly return other than the first mbox/address if there's a match in getmymbox/getmyaddr. --- sbr/fmt_scan.c | 19 ++++++++++++++----- test/format/test-mymbox | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/sbr/fmt_scan.c b/sbr/fmt_scan.c index 692d564c..5732af91 100644 --- a/sbr/fmt_scan.c +++ b/sbr/fmt_scan.c @@ -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; - /* 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; @@ -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))) - 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 */ diff --git a/test/format/test-mymbox b/test/format/test-mymbox index 8efee5b6..42f584c1 100755 --- a/test/format/test-mymbox +++ b/test/format/test-mymbox @@ -70,4 +70,22 @@ run_test 'fmttest -message -format %(getmymbox{from}) first' \ 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 +Cc: Test0 , Test3 , + Test1 , Test2 +To: Some User +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 ' +run_test 'fmttest -message -format %(getmyaddr{cc}) last' \ + 'test1@example.com' + exit $failed -- 2.56.0