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