diff options
Diffstat (limited to 'deskutils/kdepim3/files/patch-kpilot-prerelease-fix')
-rw-r--r-- | deskutils/kdepim3/files/patch-kpilot-prerelease-fix | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/deskutils/kdepim3/files/patch-kpilot-prerelease-fix b/deskutils/kdepim3/files/patch-kpilot-prerelease-fix new file mode 100644 index 000000000000..ec52774a7d7a --- /dev/null +++ b/deskutils/kdepim3/files/patch-kpilot-prerelease-fix @@ -0,0 +1,151 @@ +Index: conduits/memofileconduit/memofile-conduit.cc +=================================================================== +--- kpilot/conduits/memofileconduit/memofile-conduit.cc (.../tags/KDE/3.4.1/kdepim/kpilot) (revision 418726) ++++ kpilot/conduits/memofileconduit/memofile-conduit.cc (.../branches/KDE/3.4/kdepim/kpilot) (revision 418726) +@@ -114,7 +114,7 @@ + setFirstSync( _memofiles->isFirstSync() ); + addSyncLogEntry(i18n(" Syncing with %1.").arg(_memo_directory)); + +- if ( (syncMode() == SyncAction::SyncMode::eCopyHHToPC) || isFirstSync() ) { ++ if ( (syncMode() == SyncAction::SyncMode::eCopyHHToPC) || _memofiles->isFirstSync() ) { + addSyncLogEntry(i18n(" Copying Pilot to PC...")); + #ifdef DEBUG + DEBUGCONDUIT << fname << ": copying Pilot to PC." << endl; +@@ -474,17 +474,11 @@ + // Note: This will reset both fCategories and fMemoAppInfo, so + // after this, we need to reinitialize our memofiles object... + setAppInfo(); +- cleanup(); + + // re-create our memofiles helper... + delete _memofiles; + _memofiles = new Memofiles(fCategories, *fMemoAppInfo, _memo_directory); + +- // make sure we are starting with a clean database on both ends... +- fDatabase->deleteRecord(0, true); +- fLocalDatabase->deleteRecord(0, true); +- cleanup(); +- + _memofiles->load(true); + + QPtrList<Memofile> memofiles = _memofiles->getAll(); +@@ -496,11 +490,39 @@ + } + + _memofiles->save(); +- ++ ++ // now that we've copied from the PC to our handheld, remove anything extra from the ++ // handheld... ++ deleteUnsyncedHHRecords(); ++ + return true; + + } + ++void MemofileConduit::deleteUnsyncedHHRecords() ++{ ++ FUNCTIONSETUP; ++ if ( syncMode()==SyncMode::eCopyPCToHH ) ++ { ++ RecordIDList ids=fDatabase->idList(); ++ RecordIDList::iterator it; ++ for ( it = ids.begin(); it != ids.end(); ++it ) ++ { ++ if (!_memofiles->find(*it)) ++ { ++#ifdef DEBUG ++ DEBUGCONDUIT << fname ++ << "Deleting record with ID "<<*it <<" from handheld " ++ << "(is not on PC, and syncing with PC->HH direction)" ++ << endl; ++#endif ++ fDatabase->deleteRecord(*it); ++ fLocalDatabase->deleteRecord(*it); ++ } ++ } ++ } ++} ++ + int MemofileConduit::writeToPilot(Memofile * memofile) + { + FUNCTIONSETUP; +Index: conduits/memofileconduit/memofile-conduit.h +=================================================================== +--- kpilot/conduits/memofileconduit/memofile-conduit.h (.../tags/KDE/3.4.1/kdepim/kpilot) (revision 418726) ++++ kpilot/conduits/memofileconduit/memofile-conduit.h (.../branches/KDE/3.4/kdepim/kpilot) (revision 418726) +@@ -88,6 +88,7 @@ + + bool copyHHToPC(); + bool copyPCToHH(); ++ void deleteUnsyncedHHRecords(); + bool sync(); + + int writeToPilot(Memofile * memofile); +Index: lib/pilotDatabase.cc +=================================================================== +--- kpilot/lib/pilotDatabase.cc (.../tags/KDE/3.4.1/kdepim/kpilot) (revision 418726) ++++ kpilot/lib/pilotDatabase.cc (.../branches/KDE/3.4/kdepim/kpilot) (revision 418726) +@@ -185,7 +185,7 @@ + int len = CATEGORY_NAME_SIZE - 1; + QCString t = PilotAppCategory::codec()->fromUnicode(s,len); + memset(categoryInfo()->name[i],0,CATEGORY_NAME_SIZE); +- qstrncpy(categoryInfo()->name[i],t,kMin(len,(int)CATEGORY_NAME_SIZE)); ++ qstrncpy(categoryInfo()->name[i],t,CATEGORY_NAME_SIZE); + return true; + } + +Index: lib/data/MemoDB.pdb +=================================================================== +Cannot display: file marked as a binary type. +svn:mime-type = application/octet-stream + +Property changes on: lib/data/MemoDB.pdb +___________________________________________________________________ +Name: svn:mime-type + + application/octet-stream + +Index: lib/pilotLocalDatabase.cc +=================================================================== +--- kpilot/lib/pilotLocalDatabase.cc (.../tags/KDE/3.4.1/kdepim/kpilot) (revision 418726) ++++ kpilot/lib/pilotLocalDatabase.cc (.../branches/KDE/3.4/kdepim/kpilot) (revision 418726) +@@ -618,7 +618,7 @@ + + int count; + pi_file_get_entries(dbFile, &count); +- if (count > 0) ++ if (count >= 0) + { + KPILOT_DELETE(d); + d = new Private(count); +Index: lib/pilotDatabase.h +=================================================================== +--- kpilot/lib/pilotDatabase.h (.../tags/KDE/3.4.1/kdepim/kpilot) (revision 418726) ++++ kpilot/lib/pilotDatabase.h (.../branches/KDE/3.4/kdepim/kpilot) (revision 418726) +@@ -279,9 +279,12 @@ + int appLen = MAX_APPINFO_SIZE; + unsigned char buffer[MAX_APPINFO_SIZE]; + +- appLen = d->readAppBlock(buffer,appLen); +- +- (*unpack)(&fInfo, buffer, appLen); ++ if (d && d->isDBOpen()) ++ { ++ appLen = d->readAppBlock(buffer,appLen); ++ (*unpack)(&fInfo, buffer, appLen); ++ } ++ // fInfo is just a struct, so we can point to it anyway. + init(&fInfo.category,appLen); + } ; + +@@ -289,6 +292,10 @@ + { + FUNCTIONSETUP; + unsigned char buffer[MAX_APPINFO_SIZE]; ++ if (!d || !d->isDBOpen()) ++ { ++ return -1; ++ } + int appLen = (*pack)(&fInfo, buffer, length()); + if (appLen > 0) + { |