This patch solves the problem! Yahoo! ;)
Good work! Henry
On Thu, 18 Sep 2003 07:14:19 +0200 (CEST), Andreas Aardal Hanssen <[EMAIL PROTECTED]> wrote:
On Thu, 18 Sep 2003, Henry Baragar wrote:OK, here we go:
Yohoo! ;)
(...) Does the above evidence mean that bincIMAP detects the message, but does not properly update all the relevant flags and counts?
Yes, it does. :) I'd like you to try the following patch, and see if it solves the problem:
Andy
--- src/maildir.cc 2 Sep 2003 18:51:08 -0000 1.6 +++ src/maildir.cc 18 Sep 2003 05:12:33 -0000 @@ -336,7 +336,7 @@ { unsigned int messages = 0; unsigned int unseen = 0; - unsigned int messagesincache = 0; + unsigned int recent = 0;
const string cachefilename = path + "/bincimap-cache"; const string uidvalfilename = path + "/bincimap-uidvalidity"; @@ -350,21 +350,24 @@ // ignore }
+ map<string, bool> mincache; + string section; if (cache.getFirstSection(section)) do { - if (isdigit(section[0])) - ++messagesincache; + if (isdigit(section[0])) { + cache.setSection(section); + mincache[cache["_ID"]] = true; + } } while (cache.getNextSection(section));
uidvalfile.setSection("depot"); const unsigned int uidvalidity = (unsigned int) atoi(uidvalfile["_uidvalidity"].c_str()); - const unsigned int uidnext + unsigned int uidnext = (unsigned int) atoi(uidvalfile["_uidnext"].c_str());
s.setUidValidity(uidvalidity < 1 ? time(0) : uidvalidity); - s.setUidNext(uidnext < 1 ? 1 : uidnext);
// Scan new DIR *dirp = opendir((path + "/new").c_str()); @@ -378,8 +381,10 @@ || filename.find('/') != string::npos) continue;
- ++messages; - ++unseen; + ++recent; + ++uidnext; + ++unseen; + ++messages; }
closedir(dirp); @@ -399,18 +404,29 @@ // flags. const string::size_type pos = dname.find(':'); if (pos != string::npos) { + if (mincache.find(dname.substr(0, pos)) == mincache.end()) { + ++recent; + ++uidnext; + } + if (dname.substr(pos).find('S') == string::npos) ++unseen; - } else + } else { + if (mincache.find(dname) == mincache.end()) { + ++recent; + ++uidnext; + } + ++unseen; + } }
closedir(dirp);
- s.setRecent(messages > messagesincache ? messages - messagesincache : 0);
+ s.setRecent(recent);
s.setMessages(messages);
s.setUnseen(unseen);
- s.setUidNext(s.getUidNext() + s.getRecent());
+ s.setUidNext(uidnext);
return true; }
-- Henry Baragar Principal, Technical Architecture 416-453-5626 Instantiated Software Inc. http://www.instantiated.ca

