File indexing completed on 2024-11-24 04:53:23

0001 /* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net>
0002 
0003    This file is part of the Trojita Qt IMAP e-mail client,
0004    http://trojita.flaska.net/
0005 
0006    This program is free software; you can redistribute it and/or
0007    modify it under the terms of the GNU General Public License as
0008    published by the Free Software Foundation; either version 2 of
0009    the License or (at your option) version 3 or any later version
0010    accepted by the membership of KDE e.V. (or its successor approved
0011    by the membership of KDE e.V.), which shall act as a proxy
0012    defined in Section 14 of version 3 of the license.
0013 
0014    This program is distributed in the hope that it will be useful,
0015    but WITHOUT ANY WARRANTY; without even the implied warranty of
0016    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0017    GNU General Public License for more details.
0018 
0019    You should have received a copy of the GNU General Public License
0020    along with this program.  If not, see <http://www.gnu.org/licenses/>.
0021 */
0022 #include "Exceptions.h"
0023 
0024 #include <QTextStream>
0025 #include "Parser/Response.h"
0026 
0027 namespace Imap
0028 {
0029 
0030 const char *ImapException::what() const throw()
0031 {
0032     if (m_offset == -1)
0033         return m_msg.c_str();
0034     else {
0035         QByteArray out(m_msg.c_str());
0036         out += " when parsing this:\n";
0037         out += m_line;
0038         out += QByteArray(m_offset, ' ');
0039         out += "^ here (offset " + QByteArray::number(m_offset) + ")\n";
0040         return out.constData();
0041     }
0042 }
0043 
0044 
0045 MailboxException::MailboxException(const char *const msg,
0046                                    const Imap::Responses::AbstractResponse &response)
0047 {
0048     QByteArray buf;
0049     QTextStream s(&buf);
0050     s << msg << "\r\n" << response;
0051     s.flush();
0052     m_msg = buf.constData();
0053     m_exceptionClass = "MailboxException";
0054 }
0055 
0056 MailboxException::MailboxException(const char *const msg)
0057 {
0058     m_msg = msg;
0059     m_exceptionClass = "MailboxException";
0060 }
0061 
0062 }