summary refs log tree commit diff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--notemap.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/notemap.c b/notemap.c
index 99a1418..b448a2a 100644
--- a/notemap.c
+++ b/notemap.c
@@ -348,10 +348,7 @@ next:
 				errx(EX_CONFIG, "multiple messages matching %s", uuid);
 			}
 			if (resp.data.len) {
-				if (resp.data.ptr[0].type != Number) {
-					errx(EX_PROTOCOL, "invalid search result");
-				}
-				seq = resp.data.ptr[0].number;
+				seq = dataCheck(resp.data.ptr[0], Number).number;
 				fprintf(
 					imap, "%s FETCH %" PRIu32 " ENVELOPE\r\n",
 					Atoms[AtomFetch], seq
@@ -364,19 +361,21 @@ next:
 				);
 			}
 		}
+		
+		if (resp.resp == AtomFetch) {
+			if (!resp.data.len) errx(EX_PROTOCOL, "missing fetch data");
+			struct List items = dataCheck(resp.data.ptr[0], List).list;
+			if (items.len < 2) errx(EX_PROTOCOL, "missing fetch data items");
+			enum Atom item = dataCheck(items.ptr[0], Atom).atom;
+			if (item != AtomEnvelope) continue;
+
+			struct List envelope = dataCheck(items.ptr[1], List).list;
+			if (envelope.len < 1) errx(EX_PROTOCOL, "missing envelope date");
 
-		if (
-			resp.resp == AtomFetch &&
-			resp.data.len &&
-			resp.data.ptr[0].type == List &&
-			resp.data.ptr[0].list.len > 1 &&
-			resp.data.ptr[0].list.ptr[0].type == Atom &&
-			resp.data.ptr[0].list.ptr[0].atom == AtomEnvelope &&
-			resp.data.ptr[0].list.ptr[1].type == List
-		) {
-			struct List envelope = resp.data.ptr[0].list.ptr[1].list;
 			struct tm date = {0};
-			char *rest = strptime(envelope.ptr[0].string, DATE_FORMAT, &date);
+			char *rest = strptime(
+				dataCheck(envelope.ptr[0], String).string, DATE_FORMAT, &date
+			);
 			if (!rest) errx(EX_PROTOCOL, "invalid envelope date format");
 
 			struct stat status;
d5c59433dd2aad50&follow=1'>Use flock(2) when loading and saving historyJune McEnroe 2019-01-15Add sans8x16.psfJune McEnroe The symbols are still really bad... 2019-01-14Add guides to psfedJune McEnroe 2019-01-14Check for NULL copy or undo buffers in psfedJune McEnroe 2019-01-14Add cash.7 READMEJune McEnroe 2019-01-14Document old=new argument of fc -sJune McEnroe 2019-01-14Allow replacing empty string with fc old=newJune McEnroe 2019-01-13Enable warnings in libeditJune McEnroe 2019-01-13Show full path in RPS1June McEnroe 2019-01-13Shorten $HOME to ~ in prompt expansionJune McEnroe 2019-01-13Document PSlitJune McEnroe 2019-01-13Document PS0June McEnroe 2019-01-13Set PS0 in cashJune McEnroe 2019-01-13Add PS0June McEnroe 2019-01-13Change default ENV from cashrc to env.shJune McEnroe 2019-01-13Use colours in cash promptsJune McEnroe 2019-01-12Set PSlit like NetBSD shJune McEnroe 2019-01-12Install gnupg2 from pkgsrc and symlink gpgJune McEnroe 2019-01-12Reference cash builtin man pages in cash.1 SEE ALSOJune McEnroe 2019-01-12Restore cash builtin man page datesJune McEnroe 2019-01-12Use local libeditJune McEnroe 2019-01-12Replace libedit MakefileJune McEnroe 2019-01-11Import /usr/src/lib/libedit from NetBSD 8.0June McEnroe 2019-01-11Add PSlit for prompt escapesJune McEnroe 2019-01-11Don't make depend automaticallyJune McEnroe