diff -Naur psi-0.9.3-orig/src/eventdb.cpp psi-0.9.3/src/eventdb.cpp --- psi-0.9.3-orig/src/eventdb.cpp 2005-06-25 14:43:25.000000000 +0000 +++ psi-0.9.3/src/eventdb.cpp 2005-06-25 15:02:22.000000000 +0000 @@ -113,6 +113,11 @@ d->listeningFor = d->edb->op_getLatest(j, len); } +void EDBHandle::clear() +{ + d->edb->op_clear(); +} + void EDBHandle::getOldest(const Jid &j, int len) { d->busy = true; @@ -214,6 +219,10 @@ delete d; } +void EDB::clear() +{ +} + int EDB::genUniqueId() const { return d->reqid_base++; @@ -254,6 +263,11 @@ return append(j, e); } +void EDB::op_clear() +{ + clear(); +} + void EDB::resultReady(int req, EDBResult *r) { // deliver @@ -319,6 +333,12 @@ delete d; } +void EDBFlatFile::clear() +{ + d->flist.setAutoDelete(false); + d->flist.clear(); +} + int EDBFlatFile::getLatest(const Jid &j, int len) { item_file_req *r = new item_file_req; diff -Naur psi-0.9.3-orig/src/eventdb.h psi-0.9.3/src/eventdb.h --- psi-0.9.3-orig/src/eventdb.h 2003-03-13 01:13:31.000000000 +0000 +++ psi-0.9.3/src/eventdb.h 2005-06-25 15:03:43.000000000 +0000 @@ -65,6 +65,7 @@ void get(const Jid &jid, const QString &id, int direction, int len); void find(const QString &, const Jid &, const QString &id, int direction); void append(const Jid &, PsiEvent *); + void clear(); bool busy() const; const EDBResult *result() const; @@ -99,6 +100,7 @@ virtual int get(const Jid &jid, const QString &id, int direction, int len)=0; virtual int append(const Jid &, PsiEvent *)=0; virtual int find(const QString &, const Jid &, const QString &id, int direction)=0; + virtual void clear(); void resultReady(int, EDBResult *); void writeFinished(int, bool); @@ -115,6 +117,7 @@ int op_get(const Jid &, const QString &id, int direction, int len); int op_find(const QString &, const Jid &, const QString &id, int direction); int op_append(const Jid &, PsiEvent *); + void op_clear(); }; class EDBFlatFile : public EDB @@ -129,6 +132,7 @@ int get(const Jid &jid, const QString &id, int direction, int len); int find(const QString &, const Jid &, const QString &id, int direction); int append(const Jid &, PsiEvent *); + void clear(); class File; diff -Naur psi-0.9.3-orig/src/historydlg.cpp psi-0.9.3/src/historydlg.cpp --- psi-0.9.3-orig/src/historydlg.cpp 2004-10-03 11:11:35.000000000 +0000 +++ psi-0.9.3/src/historydlg.cpp 2005-06-25 15:06:10.000000000 +0000 @@ -307,10 +307,15 @@ QString fname = getHistoryDir() + "/" + qstrlower(jidEncode(d->jid.userHost())) + ".history"; QFileInfo fi(fname); if(fi.exists()) { - QDir dir = fi.dir(); - dir.remove(fi.fileName()); + QFile f1 (fi.filePath()); + f1.open(IO_WriteOnly); + f1.putch(0); + f1.close(); } d->lv->clear(); + EDBHandle *dnh = new EDBHandle(d->pa->edb()); + dnh->clear(); + delete dnh; } }