diff --git a/src/kits/mail/HaikuMailFormatFilter.cpp b/src/kits/mail/HaikuMailFormatFilter.cpp index 24da45c795..0ff026281d 100644 --- a/src/kits/mail/HaikuMailFormatFilter.cpp +++ b/src/kits/mail/HaikuMailFormatFilter.cpp @@ -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" + // 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; }