Author: czeidler Date: 2011-03-21 11:20:02 +0100 (Mon, 21 Mar 2011) New Revision: 41064 Changeset: https://dev.haiku-os.org/changeset/41064 Modified: haiku/trunk/src/kits/mail/HaikuMailFormatFilter.cpp Log: Return the email address if the name is empty. Fix some side cases. Modified: haiku/trunk/src/kits/mail/HaikuMailFormatFilter.cpp =================================================================== --- haiku/trunk/src/kits/mail/HaikuMailFormatFilter.cpp 2011-03-21 09:38:12 UTC (rev 41063) +++ haiku/trunk/src/kits/mail/HaikuMailFormatFilter.cpp 2011-03-21 10:20:02 UTC (rev 41064) @@ -217,20 +217,36 @@ BString HaikuMailFormatFilter::_ExtractName(const BString& from) { + // extract name from something like "name" <email@xxxxxxxxxx> + // if name is empty return the mail address without "<>" + BString name; - int32 emailStart = from.FindFirst("<"); - if (emailStart < 0) + if (emailStart < 0) { name = from; + return name.Trim(); + } from.CopyInto(name, 0, emailStart); name.Trim(); - if (name.Length() < 2) + if (name.Length() >= 2) { + if (name[name.Length() - 1] == '\"') + name.Truncate(name.Length() - 1, true); + if (name[0] == '\"') + name.Remove(0, 1); + name.Trim(); + } + if (name != "") + return name; + + // empty name extract email address + name = from; + name.Remove(0, emailStart + 1); + name.Trim(); + if (name.Length() < 1) return from; - - if (name[name.Length() - 1] == '\"') + if (name[name.Length() - 1] == '>') name.Truncate(name.Length() - 1, true); - if (name[0] == '\"') - name.Remove(0, 1); + name.Trim(); return name; }