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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user