about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2019-12-23 14:33:18 -0500
committerJune McEnroe <june@causal.agency>2019-12-23 14:33:18 -0500
commitd806183d7b72a7ed5b8e8b12aeaf20c5306aaf52 (patch)
tree01c7b80f059781932949c1f886a70250cbd7e3fa
parentRestrict search to plain-text messages (diff)
downloadimbox-d806183d7b72a7ed5b8e8b12aeaf20c5306aaf52.tar.gz
imbox-d806183d7b72a7ed5b8e8b12aeaf20c5306aaf52.zip
Handle folded From headers
-rw-r--r--imbox.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/imbox.c b/imbox.c
index e620a61..a55b09f 100644
--- a/imbox.c
+++ b/imbox.c
@@ -66,11 +66,11 @@ static void mboxrd(const char *headers, const char *body) {
 	(int)((match).rm_eo - (match).rm_so), &(str)[(match).rm_so]
 	static regex_t fromRegex, dateRegex;
 
-	compile(&fromRegex, "^From: .*<([^>]+)>");
-	regmatch_t from[2];
-	int error = regexec(&fromRegex, headers, 2, from, 0);
+	compile(&fromRegex, "^From: ([^\r]|\r\n[ \t])*<([^>]+)>");
+	regmatch_t from[3];
+	int error = regexec(&fromRegex, headers, 3, from, 0);
 	if (error) errx(EX_DATAERR, "missing From header");
-	printf("From %.*s ", MATCH(headers, from[1]));
+	printf("From %.*s ", MATCH(headers, from[2]));
 
 	// Day, Date Month Year Time -> Day Month Date Time Year
 	compile(&dateRegex, "^Date: (...), (..) (...) (....) (.{8})");