[PATCH] unix-mail.c when using a filesystem that is mounted with noatime

[email protected] (Adam Sjøgren) Tue, 18 Mar 2003 18:11:41 +0100
Newsgroups gmane.comp.gnome.apps.bubblemon
Organization koldfront - analysis & revolution, Copenhagen, Denmark
Message-ID <[email protected]>
  Hi.


I was wondering whether there is some way to detect whether the
filesystem that $MAIL resides on has been mounted with noatime?

I mount with noatime, and bubblemon always thinks I've got mail...

So I made a little change, included below, that bubblemon perhaps
could fall back to, if atime isn't updated?


  Best wishes,

    Adam

--- unix-mail.c.orig	2002-11-13 13:51:43.000000000 +0100
+++ unix-mail.c	2003-03-18 18:06:33.000000000 +0100
@@ -34,7 +34,8 @@
   static int countdown = 0;
   static char *mailFileName = NULL;
   static int cachedMailState = 0;
-
+  static int mailFileSize = 0;
+  
   struct stat mailStat;
 
   if (countdown > 0)
@@ -63,7 +64,15 @@
 
   // New mail has arrived if the mail file has been updated after it
   // was last read from
-  cachedMailState = mailStat.st_mtime > mailStat.st_atime;
+  // cachedMailState = mailStat.st_mtime > mailStat.st_atime;
+
+  // That is no good when the partition is mounted with noatime,
+  // to prevent needless disk-trashing with ext3.
+
+  // Let's just say: if the file grew, or stayed the same larger than 0:
+  cachedMailState=(mailStat.st_size >= mailFileSize) && (mailStat.st_size != 0);
 
+  mailFileSize=mailStat.st_size;
+  
   return cachedMailState;
 }


-- 
 "I wear my unprofessionalism as a badge of honor.             Adam Sjøgren
  Professionalism has no place in art"                    [email protected]