From de7b9977f3ef93bf71a9aac32f94d4d58034afb7 Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Sat, 2 Oct 2021 20:01:46 +0000 Subject: 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. --- bin/dash/src/mail.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'bin/dash/src/mail.c') diff --git a/bin/dash/src/mail.c b/bin/dash/src/mail.c index 8eacb2d0..e6baaa1b 100644 --- a/bin/dash/src/mail.c +++ b/bin/dash/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