From 5e47599cbca6a93ab39cefb469666c40e150bd94 Mon Sep 17 00:00:00 2001 From: June McEnroe Date: Sat, 2 Oct 2021 20:01:46 +0000 Subject: dash: Check sizes of mailboxes, not times This fixes "you have mail" showing right after checking and deleting mail, resulting in a modified but empty mailbox. Also somehow fixes "you have mail" always showing 3(!) times. --- src/mail.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/mail.c b/src/mail.c index 8eacb2d..e6baaa1 100644 --- a/src/mail.c +++ b/src/mail.c @@ -52,8 +52,8 @@ #define MAXMBOXES 10 -/* times of mailboxes */ -static time_t mailtime[MAXMBOXES]; +/* sizes of mailboxes */ +static off_t mailsize[MAXMBOXES]; /* Set if MAIL or MAILPATH is changed. */ static int changed; @@ -70,13 +70,13 @@ chkmail(void) const char *mpath; char *p; char *q; - time_t *mtp; + off_t *msp; struct stackmark smark; struct stat64 statb; setstackmark(&smark); mpath = mpathset() ? mpathval() : mailval(); - for (mtp = mailtime; mtp < mailtime + MAXMBOXES; mtp++) { + for (msp = mailsize; msp < mailsize + MAXMBOXES; msp++) { int len; len = padvance_magic(&mpath, nullstr, 2); @@ -92,16 +92,16 @@ chkmail(void) #endif q[-1] = '\0'; /* delete trailing '/' */ if (stat64(p, &statb) < 0) { - *mtp = 0; + *msp = 0; continue; } - if (!changed && statb.st_mtime != *mtp) { + if (!changed && statb.st_size > *msp) { outfmt( &errout, snlfmt, pathopt ? pathopt : "you have mail" ); } - *mtp = statb.st_mtime; + *msp = statb.st_size; } changed = 0; popstackmark(&smark); -- cgit 1.4.1