about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--imbox.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/imbox.c b/imbox.c
index 22bb36a..5ab23c1 100644
--- a/imbox.c
+++ b/imbox.c
@@ -55,35 +55,34 @@ static void printLines(const char *lines) {
 }
 
 static void mboxrd(const char *headers, const char *body) {
-	static regex_t fromRegex;
-	compile(&fromRegex, "^From: .*<([^>]+)>");
+#define MATCH(str, match) \
+	(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);
 	if (error) errx(EX_DATAERR, "missing From header");
-	printf(
-		"From %.*s ",
-		(int)(from[1].rm_eo - from[1].rm_so), &headers[from[1].rm_so]
-	);
+	printf("From %.*s ", MATCH(headers, from[1]));
 
-	static regex_t dateRegex;
+	// Day, Date Month Year Time -> Day Month Date Time Year
 	compile(&dateRegex, "^Date: (...), (..) (...) (....) (.{8})");
-
 	regmatch_t date[6];
 	error = regexec(&dateRegex, headers, 6, date, 0);
 	if (error) errx(EX_DATAERR, "missing Date header");
 	printf(
 		"%.*s %.*s %.*s %.*s %.*s\n",
-		(int)(date[1].rm_eo - date[1].rm_so), &headers[date[1].rm_so],
-		(int)(date[3].rm_eo - date[3].rm_so), &headers[date[3].rm_so],
-		(int)(date[2].rm_eo - date[2].rm_so), &headers[date[2].rm_so],
-		(int)(date[5].rm_eo - date[5].rm_so), &headers[date[5].rm_so],
-		(int)(date[4].rm_eo - date[4].rm_so), &headers[date[4].rm_so]
+		MATCH(headers, date[1]),
+		MATCH(headers, date[3]),
+		MATCH(headers, date[2]),
+		MATCH(headers, date[5]),
+		MATCH(headers, date[4])
 	);
 
 	printLines(headers);
 	printLines(body);
 	printf("\n");
+#undef MATCH
 }
 
 static bool verbose;
ated. 2020-05-21Explicitly set stdout line buffered when pagingJune McEnroe 2020-05-21Do not sort results in scoop by defaultJune McEnroe The -s flag now enables sorting (-g and -l also imply it), while the -S flag now launches the sqlite3 shell. Avoiding sorting by default is much faster and less memory-intensive as it doesn't require loading the entire result set into memory at once. 2020-05-21Expand and clarify documentationJune McEnroe 2020-05-21Execute PAGER with the SHELLJune McEnroe Same as how git executes it. Allows flags to be set in PAGER. 2020-05-21Automatically perform database migrations in litterboxJune McEnroe To simplify upgrades, restarting litterbox should be sufficient. The database can still be explicitly migrated with -m. 2020-05-20Don't install rc scripts on other platformsJune McEnroe Oops, meant to do this in the last commit. 2020-05-20Rewrite build and install like pounce 1.3June McEnroe man pages are no longer compressed! 2020-05-20Update email addressesJune McEnroe 2020-04-23Call updateConsumer from handleError 1.2p1June McEnroe This should prevent continually crashing on the same ERROR in the pounce buffer. 2020-04-20Use . as ${LDLIBS.$@} separatorJune McEnroe 2020-04-05Error on invalid ISUPPORT values 1.2June McEnroe 2020-04-05Only set RCS on FreeBSDJune McEnroe 2020-04-05Log bans and unbansJune McEnroe 2020-04-05Parse mode types from ISUPPORTJune McEnroe 2020-04-05Add unscoop matchers for ban/unban eventsJune McEnroe The IRC and Textual matchers miss bans mixed with other mode changes, but those are rare. 2020-04-05Check unscoop regexps with make testJune McEnroe 2020-04-05Add unscoop -n flag for checking regexpsJune McEnroe 2020-04-05Add Ban and Unban event typesJune McEnroe 2020-04-02Update styleJune McEnroe Replacing declarations followed by while loops with for loops and generating the short option string from the long options. 2020-03-31Update unscoop catgirl matchersJune McEnroe I'm not concerned about keeping the old matchers since I'm almost entirely certain I was the only one who ever used the old version of catgirl, and I already imported those logs. 2020-03-31Fix writing verbose to stderrJune McEnroe 2020-03-02Include <>/-/* around nicks in scoop coloring 1.1June McEnroe 2020-03-02Replace .mk files with configure scriptJune McEnroe 2020-02-28Implement the causal.agency/consumer capabilityJune McEnroe 2020-02-22Include <>/-/* around nicks in coloringJune McEnroe 2020-02-22Use (almost) the full range of IRC colors for nicksJune McEnroe