PIM/MS Windows/SQLite Folder Indices/merge

From KDE Community Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Validation of the SQLite folder indices merge into kdepim trunk (805075).

jstaniek 11:38, 8 May 2008 (CEST)

Notes

  • "OK" means files or methods inspected in every detail.
  • We do not mention changes that only add/remove kDebug(), etc.

Results

  • compactionjob.cpp - OK
    • void MboxCompactionJob::done( int rc ): the only addition result of KDE_rename() is checked, return immediately on failure
  • folderstorage.cpp
  • folderstorage.h
    • added virtual QString FolderStorage::location(const QString& suffix) const helper, used in various *location() methods of in KMail, to avoid code duplication
  • kmailicalifaceimpl.cpp - OK

void KMailICalIfaceImpl::readConfig() - added sanity check: if ( !mCalendar || !mTasks || !mJournals || !mContacts || !mNotes )

 return;

KMFolder* KMailICalIfaceImpl::initFolder( KMail::FolderContentsType contentsType ) - added check for result of open():if ( 0 != folder->open( "ifacefolder" ) ) { ....

  • kmfolder.cpp, kmfolder.h
    • QString KMFolder::indexLocation() const - implemneted here to return "*.index" name for mmap mode ("*.index.db" for sqlite mode). Previously it was abstract and implemented in KMFolderIndex. KMFolderSearch reimplements it to return "*.index.search" name - see kmfoldersearch.cpp for details.
  • kmfolderdir.cpp - OK
    • bool KMFolderDir::reload(void): no changes, as .index.db files are only ignored for sqlite mode - OK


  • kmfolderindex.cpp, kmfolderindex.h
  • kmfoldermaildir.cpp
  • kmfoldermbox.cpp
  • kmfoldersearch.cpp - OK
    • QString KMFolderSearch::indexLocation() const now just calls FolderStorage::location( "search" ) utility function what has the same effect
    • int KMFolderSearch::writeIndex( bool ): at the very end final, result of KDE_rename() from temp name to the indexLocation() name is checked; on faulure the method fails, what cause that "mDirty = false; mUnlinked = false;" code is not executed. - OK
  • kmheaders.cpp
  • kmheaders.h
  • kmkernel.cpp - OK
    • void KMKernel::slotRunBackgroundTasks(): added sanity checks for null pointers: the_folderMgr, the_imapFolderMgr, the_dimapFolderMgr; this is neutral change
  • kmmsgbase.cpp
  • kmmsgbase.h
  • kmmsgdict.cpp - OK
    • QString KMMsgDict::getFolderIdsLocation( const FolderStorage &storage ): the new FolderStorage::idsLocation() is called which provides the same code as the original impl. of KMMsgDict::getFolderIdsLocation(). - OK
  • kmmsginfo.cpp
  • kmmsginfo.h
  • messageproperty.cpp - OK
    • minor optimizations only added, for example 1. instead of 2.:
      1. QMap<quint32, QPointer<KMFolder> >::ConstIterator it = sFolders.constFind( serNum );
        return it == sFolders.constEnd() ? 0 : (*it).operator->();
      2. if (sFolders.contains(serNum))
          return sFolders[serNum].operator->();
        return 0;
    • Affected methods:
      • KMFolder* MessageProperty::filterFolder( quint32 serNum ) - Status: OK
      • ActionScheduler* MessageProperty::filterHandler( quint32 serNum ) - Status: OK
      • bool MessageProperty::transferInProgress( quint32 serNum ) - Status: OK
      • void MessageProperty::setTransferInProgress( quint32 serNum, bool transfer, bool force ) - Status: OK
      • quint32 MessageProperty::serialCache( const KMMsgBase *msgBase ) - Status: OK