Evgeniy Dushistov wrote: > On Tue, May 26, 2009 at 04:11:23PM -0400, Chet Ramey wrote: >> Nikos Chantziaras wrote: >>> I have: >>> >>> MAILPATH="/home/me/.maildir/new?You have new mail." >>> MAILCHECK=60 >>> >>> Bash 3.2 was correctly telling me about new mail arriving. However, >>> after I updated to Bash 4.0, I constantly get a "You have new mail." >>> message every minute even though I actually don't have new mail. Has >>> the mail notification feature changed in Bash 4.0? I can't see anything >>> relevant in the man page or NEWS file. >> There was a small change made to the mail file initialization code, to >> keep from dropping the first "new mail" notification. (In April, 2007, >> though, so you'd figure one of the testers would have caught a problem >> before now.) >> >> I don't use a maildir-aware mail program, but you can debug this by >> setting a breakpoint in mailcheck.c:check_mail(). >> > > I recently faced with the same problem, when package manager update > my bash from 3.x to 4.x. > I compared mailcheck.c from 3.2 and 4.0, and see only logic difference > in add_mail_file. When it function handle new file, it not read it's > date information as it was in 3.x, but set it to zero,
The change to use init_mail_file was intentional, but it doesn't set the mod time and access time to 0. It initializes a mailpath entry, but doesn't call mailstat on the file until it's actually checking mail. Changing it back to call update_mail_file defeats the purpose of the change, which is to avoid calling mailstat and reading a potentially very large maildir until MAILCHECK is set and we need to. Chet -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, ITS, CWRU c...@case.edu http://cnswww.cns.cwru.edu/~chet/