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 BString
HaikuMailFormatFilter::_ExtractName(const BString& from) 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("<"); int32 emailStart = from.FindFirst("<");
if (emailStart < 0) if (emailStart < 0) {
name = from; name = from;
return name.Trim();
}
from.CopyInto(name, 0, emailStart); from.CopyInto(name, 0, emailStart);
name.Trim(); name.Trim();
if (name.Length() < 2) if (name.Length() >= 2) {
return from; 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); name.Truncate(name.Length() - 1, true);
if (name[0] == '\"') name.Trim();
name.Remove(0, 1);
return name; return name;
} }