[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdepim
From:       David Faure <faure () kde ! org>
Date:       2007-04-06 16:19:42
Message-ID: 1175876382.417480.7317.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 651123 by dfaure:

Revert commit r603692 in mimelib/entity.cpp, and add unit tests to show what it broke \
(Parse+Assemble on a mail with a part without headers loses a newline, so the \
signature is broken when copying a mail - aegypten issue734). I know now that this \
does NOT reintroduce issue661, "forwarding emails can produce bad signature", which \
is unrelated.

Also remove getMsgString from all folder classes, since it's now unused; getDwString \
                is used instead. Also:
-virtual void take(QList<KMMessage*>);
+virtual void take(const QList<KMMessage*>&);


 M  +1 -1      kmail/folderstorage.cpp  
 M  +1 -4      kmail/folderstorage.h  
 M  +2 -7      kmail/kmfolder.cpp  
 M  +1 -4      kmail/kmfolder.h  
 M  +1 -1      kmail/kmfolderimap.cpp  
 M  +1 -1      kmail/kmfolderimap.h  
 M  +0 -23     kmail/kmfoldermaildir.cpp  
 M  +1 -2      kmail/kmfoldermaildir.h  
 M  +0 -23     kmail/kmfoldermbox.cpp  
 M  +1 -2      kmail/kmfoldermbox.h  
 M  +0 -7      kmail/kmfoldersearch.cpp  
 M  +0 -1      kmail/kmfoldersearch.h  
 M  +6 -8      kmail/kmheaders.cpp  
 M  +1 -0      kmail/kmstartup.cpp  
 M  +11 -6     kmail/tests/CMakeLists.txt  
 A             kmail/tests/mimelibtests.cpp   \
branches/kdepim/enterprise/kdepim/kmail/tests/mimelibtests.cpp#650094 [License: LGPL \
(v2+)]  A             kmail/tests/mimelibtests.h   \
branches/kdepim/enterprise/kdepim/kmail/tests/mimelibtests.h#650094 [License: LGPL \
(v2+)]  A             kmail/tests/multipartmixed.mbox   \
branches/kdepim/enterprise/kdepim/kmail/tests/multipartmixed.mbox#650094  A           \
kmail/tests/signedmail.mbox   \
branches/kdepim/enterprise/kdepim/kmail/tests/signedmail.mbox#650094  M  +11 -1     \
kmail/tests/utiltests.cpp    M  +1 -0      kmail/tests/utiltests.h  
 M  +1 -2      mimelib/entity.cpp  


--- trunk/KDE/kdepim/kmail/folderstorage.cpp #651122:651123
@@ -451,7 +451,7 @@
   return msg;
 }
 
-void FolderStorage::take(QList<KMMessage*> msgList)
+void FolderStorage::take(const QList<KMMessage*>& msgList)
 {
   for( QList<KMMessage*>::const_iterator it = msgList.begin();
       it != msgList.end(); ++it )
--- trunk/KDE/kdepim/kmail/folderstorage.h #651122:651123
@@ -148,9 +148,6 @@
   */
   virtual KMMessage* readTemporaryMsg(int idx);
 
-  /** Read a message and return a referece to a string */
-  virtual QByteArray& getMsgString(int idx, QByteArray& mDest) = 0;
-
   /** Read a message and returns a DwString */
   virtual DwString getDwString(int idx) = 0;
 
@@ -186,7 +183,7 @@
   /** Detach message from this folder. Usable to call addMsg() afterwards.
     Loads the message if it is not loaded up to now. */
   virtual KMMessage* take(int idx);
-  virtual void take(QList<KMMessage*> msgList);
+  virtual void take(const QList<KMMessage*>& msgList);
 
   /** Add the given message to the folder. Usually the message
     is added at the end of the folder. Returns zero on success and
--- trunk/KDE/kdepim/kmail/kmfolder.cpp #651122:651123
@@ -323,11 +323,6 @@
   return mStorage->isMessage( idx );
 }
 
-QByteArray& KMFolder::getMsgString( int idx, QByteArray& mDest )
-{
-  return mStorage->getMsgString( idx,  mDest );
-}
-
 DwString KMFolder::getDwString( int idx )
 {
   return mStorage->getDwString( idx );
@@ -377,7 +372,7 @@
   return mStorage->take( idx );
 }
 
-void KMFolder::take( QList<KMMessage*> msgList )
+void KMFolder::take( const QList<KMMessage*>& msgList )
 {
   mStorage->take( msgList );
 }
@@ -407,7 +402,7 @@
   mStorage->removeMsg( i, imapQuiet );
 }
 
-void KMFolder::removeMsg( QList<KMMessage*> msgList, bool imapQuiet )
+void KMFolder::removeMsg( QList<KMMessage*> msgList, bool imapQuiet ) // TODO const \
ref  {
   mStorage->removeMsg( msgList, imapQuiet );
 }
--- trunk/KDE/kdepim/kmail/kmfolder.h #651122:651123
@@ -188,9 +188,6 @@
   /** Checks if the message is already "gotten" with getMsg */
   bool isMessage(int idx);
 
-  /** Read a message and return a referece to a string */
-  QByteArray& getMsgString(int idx, QByteArray& mDest);
-
   /** Read a message and returns a DwString */
   DwString getDwString(int idx);
 
@@ -226,7 +223,7 @@
   /** Detach message from this folder. Usable to call addMsg() afterwards.
     Loads the message if it is not loaded up to now. */
   KMMessage* take(int idx);
-  void take(QList<KMMessage*> msgList);
+  void take(const QList<KMMessage*>& msgList);
 
   /** Add the given message to the folder. Usually the message
     is added at the end of the folder. Returns zero on success and
--- trunk/KDE/kdepim/kmail/kmfolderimap.cpp #651122:651123
@@ -618,7 +618,7 @@
   return KMFolderMbox::take(idx);
 }
 
-void KMFolderImap::take(QList<KMMessage*> msgList)
+void KMFolderImap::take(const QList<KMMessage*>& msgList)
 {
   deleteMessage(msgList);
 
--- trunk/KDE/kdepim/kmail/kmfolderimap.h #651122:651123
@@ -366,7 +366,7 @@
 /** Detach message from this folder. Usable to call addMsg() afterwards.
 Loads the message if it is not loaded up to now. */
 virtual KMMessage* take(int idx);
-virtual void take(QList<KMMessage*>);
+virtual void take(const QList<KMMessage*>&);
 
 /**
 * Add the data a KIO::Job retrieves to the buffer
--- trunk/KDE/kdepim/kmail/kmfoldermaildir.cpp #651122:651123
@@ -597,29 +597,6 @@
 }
 
 
-QByteArray& KMFolderMaildir::getMsgString(int idx, QByteArray& mDest)
-{
-  KMMsgInfo* mi = (KMMsgInfo*)mMsgList[idx];
-
-  assert(mi!=0);
-
-  QString abs_file(location() + "/cur/");
-  abs_file += mi->fileName();
-
-  if (QFile::exists(abs_file) == false)
-  {
-    kDebug(5006) << "The " << abs_file << " file doesn't exist!" << endl;
-    return mDest;
-  }
-
-  QFileInfo fi( abs_file );
-  mDest.resize(fi.size()+2);
-  mDest = KPIM::kFileToByteArray( abs_file, false, false );
-  const size_t newMsgSize = KMail::Util::crlf2lf( mDest.data(), fi.size() );
-  mDest.truncate( newMsgSize );
-  return mDest;
-}
-
 void KMFolderMaildir::readFileHeaderIntern( const QString& dir,
                                             const QString& file,
                                             MessageStatus& status )
--- trunk/KDE/kdepim/kmail/kmfoldermaildir.h #651122:651123
@@ -30,8 +30,7 @@
   /** Returns the type of this folder */
   virtual KMFolderType folderType() const { return KMFolderTypeMaildir; }
 
-  /** Read a message and return a referece to a string */
-  virtual QByteArray& getMsgString(int idx, QByteArray& mDest);
+  /** Read a message and return it as a string */
   virtual DwString getDwString(int idx);
 
   /** Detach message from this folder. Usable to call addMsg() afterwards.
--- trunk/KDE/kdepim/kmail/kmfoldermbox.cpp #651122:651123
@@ -929,29 +929,6 @@
 #undef STRDIM
 
 //-----------------------------------------------------------------------------
-QByteArray& KMFolderMbox::getMsgString(int idx, QByteArray &mDest)
-{
-  size_t msgSize;
-  KMMsgInfo* mi = (KMMsgInfo*)mMsgList[idx];
-
-  assert(mi!=0);
-  assert(mStream != 0);
-
-  msgSize = mi->msgSize();
-  mDest.resize(msgSize+2);
-
-  fseek(mStream, mi->folderOffset(), SEEK_SET);
-  fread(mDest.data(), msgSize, 1, mStream);
-  mDest[(uint)msgSize] = '\0';
-
-  size_t newMsgSize = unescapeFrom( mDest.data(), msgSize );
-  newMsgSize = KMail::Util::crlf2lf( mDest.data(), newMsgSize );
-
-  return mDest;
-}
-
-
-//-----------------------------------------------------------------------------
 DwString KMFolderMbox::getDwString(int idx)
 {
   KMMsgInfo* mi = (KMMsgInfo*)mMsgList[idx];
--- trunk/KDE/kdepim/kmail/kmfoldermbox.h #651122:651123
@@ -62,8 +62,7 @@
   /** Returns the type of this folder */
   virtual KMFolderType folderType() const { return KMFolderTypeMbox; }
 
-  /** Read a message and return a referece to a string */
-  virtual QByteArray& getMsgString(int idx, QByteArray& mDest);
+  /** Read a message and return it as a string */
   DwString getDwString(int idx);
 
   /** Add the given message to the folder. Usually the message
--- trunk/KDE/kdepim/kmail/kmfoldersearch.cpp #651122:651123
@@ -499,13 +499,6 @@
     }
 }
 
-QByteArray& KMFolderSearch::getMsgString(int idx, QByteArray& mDest)
-{
-    KMFolder *folder = getMsgBase(idx)->parent();
-    assert(folder);
-    return folder->getMsgString(folder->find(getMsgBase(idx)), mDest);
-}
-
 int KMFolderSearch::addMsg(KMMessage*, int* index_return)
 {
     //Not supported search folder can't own messages
--- trunk/KDE/kdepim/kmail/kmfoldersearch.h #651122:651123
@@ -170,7 +170,6 @@
 
 public:
   //See base class for documentation
-  virtual QByteArray& getMsgString( int idx, QByteArray &mDest );
   virtual int addMsg( KMMessage *msg, int *index_return = 0 );
   virtual int open( const char *owner );
   virtual int canAccess();
--- trunk/KDE/kdepim/kmail/kmheaders.cpp #651122:651123
@@ -2086,20 +2086,18 @@
   }
 
   int idx = item->msgId();
-  if (mReaderWindowActive) {
-    KMMessage *msg = mFolder->getMsg(idx);
-    if (!msg ) {
-      emit selected( 0 );
-      mPrevCurrent = 0;
-      return;
-    }
+  KMMessage *msg = mFolder->getMsg(idx);
+  if (mReaderWindowActive && !msg) {
+    emit selected( 0 );
+    mPrevCurrent = 0;
+    return;
   }
 
   BroadcastStatus::instance()->setStatusMsg("");
   if (markitread && idx >= 0) setMsgRead(idx);
   mItems[idx]->irefresh();
   mItems[idx]->repaint();
-  emit selected( mFolder->getMsg(idx) );
+  emit selected( msg );
   setFolderInfoStatus();
 }
 
--- trunk/KDE/kdepim/kmail/kmstartup.cpp #651122:651123
@@ -138,6 +138,7 @@
   QString lockLocation = KStandardDirs::locateLocal("data", "kmail/lock");
   KConfig config(lockLocation, KConfig::OnlyLocal);
   int oldPid = config.readEntry("pid", -1 );
+  kDebug() << "oldPid=" << oldPid << endl;
   const QString oldHostName = config.readEntry("hostname");
   const QString oldAppName = config.readEntry( "appName", appName );
   const QString oldProgramName = config.readEntry( "programName", programName );
--- trunk/KDE/kdepim/kmail/tests/CMakeLists.txt #651122:651123
@@ -3,23 +3,28 @@
 # Tests don't need to go into toplevel/bin, they are fine in the current dir.
 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} )
 
+# This can be used for finding data files in the source dir, without installing them
+add_definitions( -DKDESRCDIR=\\"${CMAKE_CURRENT_SOURCE_DIR}\\" )
+
 include_directories( ${CMAKE_SOURCE_DIR}/mimelib ${CMAKE_SOURCE_DIR}/kmail  )
 
-
 ########### utiltests ###############
 
 set(utiltests_SRCS utiltests.cpp ../util.cpp )
-
 kde4_automoc(${utiltests_SRCS})
-
-kde4_add_executable(utiltests NOGUI RUN_UNINSTALLED ${utiltests_SRCS})
-
+kde4_add_test(utiltests ${utiltests_SRCS})
 target_link_libraries(utiltests mimelib ${QT_QTTEST_LIBRARY} ${QT_QTCORE_LIBRARY})
-
 add_test(kmail-utiltests ${EXECUTABLE_OUTPUT_PATH}/utiltests)
 
+########### mimelibtests ###############
 
+set(mimelibtests_SRCS mimelibtests.cpp ../util.cpp )
+kde4_automoc(${mimelibtests_SRCS})
+kde4_add_test(mimelibtests ${mimelibtests_SRCS})
+target_link_libraries(mimelibtests mimelib ${QT_QTTEST_LIBRARY} \
${QT_QTCORE_LIBRARY}) +add_test(kmail-mimelibtests \
${EXECUTABLE_OUTPUT_PATH}/mimelibtests)  
+
 ###### TODO port storagelayer tests to QTestLib
 
 #kunittest_storagelayermodule_la_SOURCES = storagelayermodule.cpp \
                messagedicttests.cpp ../kmdict.cpp
--- trunk/KDE/kdepim/kmail/tests/utiltests.cpp #651122:651123
@@ -3,13 +3,13 @@
  * This file is subject to the GPL version 2.
  */
 
-#include <kdebug.h>
 #include "qtest_kde.h"
 #include "utiltests.h"
 #include "utiltests.moc"
 
 QTEST_KDEMAIN_CORE( UtilTester )
 
+#include <kdebug.h>
 #include "util.h"
 #include <mimelib/string.h>
 
@@ -31,6 +31,16 @@
   QCOMPARE( KMail::Util::lf2crlf( QByteArray("") ), QByteArray("") );
 }
 
+void UtilTester::test_crlf2lf()
+{
+  QByteArray src = "\r\n\r\nfoo\r\n\r\nbar\rblah\r\n\r\r\n\r\n\r";
+  int len = src.length();
+  QCOMPARE( (char)src[len], '\0' );
+  int newLen = KMail::Util::crlf2lf( src.data(), len );
+  QVERIFY( newLen <= len );
+  QCOMPARE( makePrintable( src ), makePrintable("\n\nfoo\n\nbar\rblah\n\r\n\n\r") );
+}
+
 void UtilTester::test_escapeFrom()
 {
   // TODO
--- trunk/KDE/kdepim/kmail/tests/utiltests.h #651122:651123
@@ -15,6 +15,7 @@
 
 private slots:
   void test_lf2crlf();
+  void test_crlf2lf();
   void test_escapeFrom();
   void test_DwStringConversions();
 private:
--- trunk/KDE/kdepim/mimelib/entity.cpp #651122:651123
@@ -222,8 +222,7 @@
     // DwEntityParser skips the line separating the headers from the
     // body. So it's neither part of DwHeaders, nor of DwBody
     // -> we need to readd it here:
-    if ( mString != "" )
-      mString += DW_EOL;
+    mString += DW_EOL;
 
     mString += aBody.AsString();
     mIsModified = 0;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic