diff options
Diffstat (limited to 'kioslaves/imap4/mailaddress.cc')
-rw-r--r-- | kioslaves/imap4/mailaddress.cc | 323 |
1 files changed, 0 insertions, 323 deletions
diff --git a/kioslaves/imap4/mailaddress.cc b/kioslaves/imap4/mailaddress.cc deleted file mode 100644 index 0ddd2ff04..000000000 --- a/kioslaves/imap4/mailaddress.cc +++ /dev/null @@ -1,323 +0,0 @@ -/********************************************************************** - * - * mailaddress.cc - mail address parser - * Copyright (C) 2000 Sven Carstens - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * Send comments and bug fixes to - * - *********************************************************************/ - - -#include "mailaddress.h" -#include "rfcdecoder.h" -#include "mimehdrline.h" -#include <kmime_util.h> - -mailAddress::mailAddress () -{ -} - -mailAddress::mailAddress (const mailAddress & lr): -user (lr.user), -host (lr.host), -rawFullName (lr.rawFullName), -rawComment (lr.rawComment) -{ -// kdDebug(7116) << "mailAddress::mailAddress - " << getStr() << endl; -} - -mailAddress & mailAddress::operator = (const mailAddress & lr) -{ - // Avoid a = a. - if (this == &lr) - return *this; - - user = lr.user; - host = lr.host; - rawFullName = lr.rawFullName; - rawComment = lr.rawComment; - -// kdDebug(7116) << "mailAddress::operator= - " << getStr() << endl; - - return *this; -} - - - - -mailAddress::~mailAddress () -{ -} - -mailAddress::mailAddress (char *aCStr) -{ - parseAddress (aCStr); -} - -int -mailAddress::parseAddress (char *aCStr) -{ - int retVal = 0; - int skip; - uint len; - int pt; - - if (aCStr) - { - //skip leading white space - skip = mimeHdrLine::skipWS ((const char *) aCStr); - if (skip > 0) - { - aCStr += skip; - retVal += skip; - } - while (*aCStr) - { - int advance; - - switch (*aCStr) - { - case '"': - advance = mimeHdrLine::parseQuoted ('"', '"', aCStr); - rawFullName += TQCString (aCStr, advance + 1); - break; - case '(': - advance = mimeHdrLine::parseQuoted ('(', ')', aCStr); - rawComment += TQCString (aCStr, advance + 1); - break; - case '<': - advance = mimeHdrLine::parseQuoted ('<', '>', aCStr); - user = TQCString (aCStr, advance + 1); // copy it - len = advance; - user = user.mid (1, len - 2); // strip <> - len -= 2; - pt = user.find('@'); - host = user.right (len - pt - 1); // split it into host - user.truncate(pt); // and user - break; - default: - advance = mimeHdrLine::parseWord ((const char *) aCStr); - //if we've seen a FQ mailname the rest must be quoted or is just junk - if (user.isEmpty ()) - { - if (*aCStr != ',') - { - rawFullName += TQCString (aCStr, advance + 1); - if (mimeHdrLine::skipWS ((const char *) &aCStr[advance]) > 0) - { - rawFullName += ' '; - } - } - } - break; - } - if (advance) - { - retVal += advance; - aCStr += advance; - } - else - break; - advance = mimeHdrLine::skipWS ((const char *) aCStr); - if (advance > 0) - { - retVal += advance; - aCStr += advance; - } - //reached end of current address - if (*aCStr == ',') - { - advance++; - break; - } - } - //let's see what we've got - if (rawFullName.isEmpty ()) - { - if (user.isEmpty ()) - retVal = 0; - else - { - if (host.isEmpty ()) - { - rawFullName = user; - user.truncate(0); - } - } - } - else if (user.isEmpty ()) - { - pt = rawFullName.find ('@'); - if (pt >= 0) - { - user = rawFullName; - host = user.right (user.length () - pt - 1); - user.truncate(pt); - rawFullName.truncate(0); - } - } - -#if 0 -// dead - if (!rawFullName.isEmpty ()) - { -// if(fullName[0] == '"') -// fullName = fullName.mid(1,fullName.length()-2); -// fullName = fullName.simplifyWhiteSpace().stripWhiteSpace(); -// fullName = rfcDecoder::decodeRFC2047String(fullName.ascii()); - } -#endif - if (!rawComment.isEmpty ()) - { - if (rawComment[0] == '(') - rawComment = rawComment.mid (1, rawComment.length () - 2); - rawComment = rawComment.stripWhiteSpace (); -// comment = rfcDecoder::decodeRFC2047String(comment.ascii()); - } - } - else - { - //debug(); - } - return retVal; -} - -const TQCString -mailAddress::getStr () -{ - TQCString retVal(128); // Should be generally big enough - - if (!rawFullName.isEmpty ()) - { - KMime::addQuotes( rawFullName, false ); - retVal = rawFullName + " "; - } - if (!user.isEmpty ()) - { - retVal += '<'; - retVal += user; - if (!host.isEmpty ()) { - retVal += '@'; - retVal += host; - } - retVal += '>'; - } - if (!rawComment.isEmpty ()) - { - retVal = '(' + rawComment + ')'; - } -// kdDebug(7116) << "mailAddress::getStr - '" << retVal << "'" << endl; - return retVal; -} - -bool -mailAddress::isEmpty () const -{ - return user.isEmpty (); -} - -void -mailAddress::setFullName (const TQString & _str) -{ - rawFullName = rfcDecoder::encodeRFC2047String (_str).latin1 (); -} -const TQString -mailAddress::getFullName () const -{ - return rfcDecoder::decodeRFC2047String (rawFullName); -} - -void -mailAddress::setCommentRaw (const TQCString & _str) -{ - rawComment = _str; -} - -void -mailAddress::setComment (const TQString & _str) -{ - rawComment = rfcDecoder::encodeRFC2047String (_str).latin1 (); -} -const TQString -mailAddress::getComment () const -{ - return rfcDecoder::decodeRFC2047String (rawComment); -} - -const TQCString & -mailAddress::getCommentRaw () const -{ - return rawComment; -} - -TQString -mailAddress::emailAddrAsAnchor (const mailAddress & adr, bool shortAdr) -{ - TQString retVal; - if (!adr.getFullName ().isEmpty ()) - { - // should do some umlaut escaping - retVal += adr.getFullName () + " "; - } - if (!adr.getUser ().isEmpty () && !shortAdr) - { - retVal += "<" + adr.getUser (); - if (!adr.getHost ().isEmpty ()) - retVal += "@" + adr.getHost (); - retVal += "> "; - } - if (!adr.getComment ().isEmpty ()) - { - // should do some umlaut escaping - retVal = '(' + adr.getComment () + ')'; - } - - if (!adr.getUser ().isEmpty ()) - { - TQString mail; - mail = adr.getUser (); - if (!mail.isEmpty () && !adr.getHost ().isEmpty ()) - mail += "@" + adr.getHost (); - if (!mail.isEmpty ()) - retVal = "<A HREF=\"mailto:" + mail + "\">" + retVal + "</A>"; - } - return retVal; -} - -TQString -mailAddress::emailAddrAsAnchor (const TQPtrList < mailAddress > &list, bool value) -{ - TQString retVal; - TQPtrListIterator < mailAddress > it (list); - - while (it.current ()) - { - retVal += emailAddrAsAnchor ((*it.current ()), value) + "<BR></BR>\n"; - ++it; - } - - return retVal; -} - - -void mailAddress::clear() { - user.truncate(0); - host.truncate(0); - rawFullName.truncate(0); - rawComment.truncate(0); -} - |