From 1c3b35f1257bda01c6b9ae8da8c274dc9dc51ed7 Mon Sep 17 00:00:00 2001 From: Clemens Zeidler Date: Mon, 21 Mar 2011 10:20:02 +0000 Subject: [PATCH] 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 --- src/kits/mail/HaikuMailFormatFilter.cpp | 30 +++++++++++++++++++------ 1 file changed, 23 insertions(+), 7 deletions(-) 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; }