summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2021-10-02 20:01:46 +0000
committerJune McEnroe <june@causal.agency>2021-10-02 20:01:46 +0000
commit7c13ead7812dc7510a71eb603525fdbc2674eaf7 (patch)
tree22a3f4712839636c79fef4143c506ccfb6045c0e
parentReplace filter shell scripts with C program (diff)
downloadsrc-7c13ead7812dc7510a71eb603525fdbc2674eaf7.tar.gz
src-7c13ead7812dc7510a71eb603525fdbc2674eaf7.zip
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.
Diffstat (limited to '')
-rw-r--r--bin/dash/src/mail.c14
1 files changed, 7 insertions, 7 deletions
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);
d>June McEnroe 2020-02-11Exit focus and paste modes on err exitJune McEnroe 2020-02-11Add startup GPLv3 note and URLJune McEnroe I am a degenerate. 2020-02-11Make sure -D_GNU_SOURCE ends up in CFLAGS on LinuxJune McEnroe 2020-02-11Add note about setting PKG_CONFIG_PATHJune McEnroe 2020-02-11Rename query ID on nick changeJune McEnroe 2020-02-11Call completeClear when closing a windowJune McEnroe 2020-02-11Don't insert color codes for non-mentionsJune McEnroe 2020-02-11Take first two words in colorMentionsJune McEnroe This lets phrases like "hi june" get colored, but still doesn't get carried away. 2020-02-11Use time_t for save signatureJune McEnroe It's actually more likely to be 64-bit than size_t anyway, and it eliminates some helper functions. Also don't error when reading an empty save file. 2020-02-11Set self.nick to * initiallyJune McEnroe Allows removing a bunch of checks that self.nick is set, and it's what the server usually calls you before registration. Never highlight notices as mentions. 2020-02-11Define ColorCap instead of hardcoding 100June McEnroe 2020-02-11Move hash to top of chat.hJune McEnroe 2020-02-11Move base64 out of chat.hJune McEnroe 2020-02-11Move XDG_SUBDIR out of chat.hJune McEnroe 2020-02-11Fix whois idle unit calculationJune McEnroe Rookie mistake. 2020-02-11Cast towupper to wchar_tJune McEnroe For some reason it takes and returns wint_t... 2020-02-11Cast set but unused variables to voidJune McEnroe 2020-02-11Declare strlcatJune McEnroe 2020-02-11Check if VDSUSP existsJune McEnroe 2020-02-11Fix completeReplace iterationJune McEnroe 2020-02-11Use pkg(8) to configure on FreeBSDJune McEnroe 2020-02-11Remove legacy codeJune McEnroe 2020-02-11Add INSTALLING section to READMEJune McEnroe