From d81d518c1fbccd42c8a0cf516cdff7907b63f94a Mon Sep 17 00:00:00 2001 From: Michael Haeckel Date: Fri, 21 Dec 2001 19:15:05 +0000 Subject: [PATCH] Parse commas in brackets correctely when sending. svn path=/trunk/kdenetwork/kmail/; revision=128267 --- kmmessage.cpp | 35 +++++++++++++++++------------------ kmsender.cpp | 23 ++--------------------- 2 files changed, 19 insertions(+), 39 deletions(-) diff --git a/kmmessage.cpp b/kmmessage.cpp index ab1e9af5f..8b938c034 100644 --- a/kmmessage.cpp +++ b/kmmessage.cpp @@ -1616,29 +1616,28 @@ void KMMessage::setMsgId(const QString& aStr) //----------------------------------------------------------------------------- QStrList KMMessage::headerAddrField(const QCString& aName) const { + QString header = headerField(aName); + QStringList list = splitEmailAddrList(header); QStrList resultList; - DwHeaders& header = mMsg->Headers(); - - QCString content = header.FieldBody(aName.data()).AsString().c_str(); - if (content.isEmpty()) return resultList; - - bool insideQuote1 = FALSE, insideQuote2 = FALSE; - char *start = content.data(), *stop; - while (*start) + int i,j; + for (QStringList::Iterator it = list.begin(); it != list.end(); it++) { - while (*start == ' ') start++; - stop = start; - while (*stop && (*stop != ',' || insideQuote1 || insideQuote2)) + i = (*it).find('<'); + if (i >= 0) { - if (*stop == '"') insideQuote1 = !insideQuote1; - else if (*stop == '\'') insideQuote2 = !insideQuote2; - stop++; + j = (*it).find('>', i+1); + if (j > i) (*it) = (*it).mid(i+1, j-i-1); } - resultList.append(content.mid(start - content.data(), stop - start)); - start = stop; - if (*start) start++; + else // if it's "radej@kde.org (Sven Radej)" + { + i = (*it).find('('); + if (i > 0) + (*it).truncate(i); // "radej@kde.org " + } + (*it) = (*it).stripWhiteSpace(); + if (!(*it).isEmpty()) + resultList.append((*it).latin1()); } - return resultList; } diff --git a/kmsender.cpp b/kmsender.cpp index 81067980c..7bd00402b 100644 --- a/kmsender.cpp +++ b/kmsender.cpp @@ -692,31 +692,12 @@ bool KMSendProc::addRecipients(const QStrList& aRecipientList) { QStrList* recpList = (QStrList*)&aRecipientList; QString receiver; - int i, j; bool rc; for (receiver=recpList->first(); !receiver.isNull(); receiver=recpList->next()) { - i = receiver.find('<'); - if (i >= 0) - { - j = receiver.find('>', i+1); - if (j > i) receiver = receiver.mid(i+1, j-i-1); - } - else // if it's "radej@kde.org (Sven Radej)" - { - i=receiver.find('('); - if (i > 0) - receiver.truncate(i); // "radej@kde.org " - } - //printf ("Receiver = %s\n", receiver.data()); - - receiver = receiver.stripWhiteSpace(); - if (!receiver.isEmpty()) - { - rc = addOneRecipient(receiver); - if (!rc) return FALSE; - } + rc = addOneRecipient(receiver); + if (!rc) return FALSE; } return TRUE; }