Return the email address if the name is empty. Fix some side cases.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41064 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Clemens Zeidler
2011-03-21 10:20:02 +00:00
parent f1785f82fe
commit 1c3b35f125
+23 -7
View File
@@ -217,20 +217,36 @@ HaikuMailFormatFilter::_SetFileName(const entry_ref& ref, const BString& name)
BString
HaikuMailFormatFilter::_ExtractName(const BString& from)
{
BString name;
// extract name from something like "name" <[email protected]>
// 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)
return from;
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;
if (name[name.Length() - 1] == '\"')
// 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] == '>')
name.Truncate(name.Length() - 1, true);
if (name[0] == '\"')
name.Remove(0, 1);
name.Trim();
return name;
}