about summary refs log tree commit diff
path: root/mpick.c
diff options
context:
space:
mode:
authorDuncaen <mail@duncano.de>2019-01-28 15:23:27 +0100
committerLeah Neukirchen <chneukirchen@gmail.com>2020-05-15 18:41:13 +0200
commitd235a3e64ca740e4cee57fc85c5270494b9b81fd (patch)
tree5bbd3ee58d889b497d1d4359867ed1d7ff92be76 /mpick.c
parent482bbffd2c49859612eeda1505f0c243cd974137 (diff)
downloadmblaze-d235a3e64ca740e4cee57fc85c5270494b9b81fd.tar.gz
mblaze-d235a3e64ca740e4cee57fc85c5270494b9b81fd.tar.xz
mblaze-d235a3e64ca740e4cee57fc85c5270494b9b81fd.zip
mpick: minor cleanups/memleak fixes for parse_msglist
Diffstat (limited to 'mpick.c')
-rw-r--r--mpick.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/mpick.c b/mpick.c
index 27ee831..16028a7 100644
--- a/mpick.c
+++ b/mpick.c
@@ -872,12 +872,13 @@ parse_msglist(char *s)
 	int r;
 	struct expr *e1, *e2;
 	char *d;
+	enum flags flag;
 
 	switch (*s) {
 	case '/':
 		s++;
 		e1 = mkexpr(EXPR_REGEXI);
-		e1->a.string = "subject";
+		e1->a.string = xstrdup("subject");
 		e1->b.regex = malloc(sizeof (regex_t));
 		r = regcomp(e1->b.regex, s, REG_EXTENDED | REG_NOSUB | REG_ICASE);
 		if (r != 0) {
@@ -887,13 +888,10 @@ parse_msglist(char *s)
 		}
 		return e1;
 	case ':':
-		if (strlen(s) <= 1)
-			parse_error("missing type at '%.15s'", s);
-
-		enum flags flag;
 		n = 0;
 
 		switch (*++s) {
+		case '\0': parse_error("missing flag at '%s'", s-1);
 		case 'P': flag = FLAG_PASSED; break;
 		case 'F': flag = FLAG_FLAGGED; break;
 		case 'D': flag = FLAG_DRAFT; break;
@@ -905,7 +903,7 @@ parse_msglist(char *s)
 		case 'o': n = 1; /* FALL THROUGH */
 		case 'n': flag = FLAG_NEW; break;
 		case 'R': flag = FLAG_REPLIED; break;
-		default: parse_error("unknown type at '%.15s'", s);
+		default: parse_error("unknown flag at '%s'", s);
 		}
 
 		e1 = mkexpr(EXPR_ANYSET);
@@ -946,9 +944,9 @@ parse_msglist(char *s)
 
 			blaze822_addr(s, &disp, &addr);
 			if (!disp && !addr)
-				parse_error("invalid address at '%.15s'", pos);
+				parse_error("invalid address '%s'", s);
 
-			d = xstrdup((disp) ? disp : addr);
+			d = (disp) ? disp : addr;
 
 			e1 = mkexpr(EXPR_REGEXI);
 			e1->a.prop = PROP_FROM;