Revision: 7210
          http://svn.sourceforge.net/mahogany/?rev=7210&view=rev
Author:   vadz
Date:     2007-01-08 15:32:01 -0800 (Mon, 08 Jan 2007)

Log Message:
-----------
correct comparison for addresses containing the personal name and not just 
email address in IsInList()

Modified Paths:
--------------
    trunk/M/src/mail/Address.cpp

Modified: trunk/M/src/mail/Address.cpp
===================================================================
--- trunk/M/src/mail/Address.cpp        2007-01-08 22:18:37 UTC (rev 7209)
+++ trunk/M/src/mail/Address.cpp        2007-01-08 23:32:01 UTC (rev 7210)
@@ -272,20 +272,36 @@
    {
       for ( size_t n = 0; n < count; n++ )
       {
-         // first tokenize this string: it can be a full address or domain name
-         // only and it may contain '?' and '*' shell pattern metacharacters
          const wxChar * const start = addresses[n];
 
-         const wxChar *p = wxStrchr(start, _T('@'));
+         // first obtain the address part only: we don't care about everything
+         // else, "Foo <[EMAIL PROTECTED]>" and "Bar <[EMAIL PROTECTED]>" are 
the same
+         //
+         // NB: this is of course not a correct way to parse an address but we
+         //     can't use AddressList here as this might be just a domain name
+         //     and not a valid address
+         const wxChar *startAddr = wxStrchr(start, _T('<')),
+                      *endAddr = NULL;
+         if ( startAddr )
+            endAddr = wxStrchr(++startAddr, _T('>'));
+         else
+            startAddr = start;
+
+         if ( !endAddr )
+            endAddr = start + addresses[n].length();
+
+         // next tokenize this string: it can be a full address or domain name
+         // only and it may contain '?' and '*' shell pattern metacharacters
+         const wxChar *p = wxStrchr(startAddr, _T('@'));
          if ( p )
          {
-            mailbox.assign(start, p - start);
-            domain = p + 1;
+            mailbox.assign(startAddr, p - startAddr);
+            domain.assign(p + 1, endAddr);
          }
          else // no mailbox part, domain only given
          {
             mailbox = _T('*');
-            domain = start;
+            domain.assign(startAddr, endAddr);
          }
 
          // now we can finally compare the addresses


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Mahogany-cvsupdates mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mahogany-cvsupdates

Reply via email to