about summary refs log tree commit diff
path: root/mpick.c
diff options
context:
space:
mode:
authorDuncaen <mail@duncano.de>2017-02-21 19:11:46 +0100
committerDuncaen <mail@duncano.de>2017-02-23 20:35:14 +0100
commit5eea6f4efb7b16ebe5318415dca2dfe620870589 (patch)
tree3e92b8a5b8985f9602828102125b8655c954a1cc /mpick.c
parent24e329172360651a2b3557da787df98b02fa6d16 (diff)
downloadmblaze-5eea6f4efb7b16ebe5318415dca2dfe620870589.tar.gz
mblaze-5eea6f4efb7b16ebe5318415dca2dfe620870589.tar.xz
mblaze-5eea6f4efb7b16ebe5318415dca2dfe620870589.zip
mpick: fix warnings found by clang-analyze
Diffstat (limited to 'mpick.c')
-rw-r--r--mpick.c30
1 files changed, 19 insertions, 11 deletions
diff --git a/mpick.c b/mpick.c
index 7850a74..b0e15cd 100644
--- a/mpick.c
+++ b/mpick.c
@@ -7,6 +7,16 @@
 #define _XOPEN_SOURCE 700
 #endif
 
+#ifdef __has_include
+  #if __has_include(<stdnoreturn.h>)
+    #include <stdnoreturn.h>
+  #else
+    #define noreturn /**/
+  #endif
+#else
+  #define noreturn /**/
+#endif
+
 /* For Solaris. */
 #if !defined(FNM_CASEFOLD) && defined(FNM_IGNORECASE)
 #define FNM_CASEFOLD FNM_IGNORECASE
@@ -171,7 +181,7 @@ token(char *token)
 	}
 }
 
-static void
+noreturn static void
 parse_error(char *msg, ...)
 {
 	va_list ap;
@@ -359,7 +369,7 @@ parse_strcmp()
 
 	if (prop == PROP_FROM || prop == PROP_TO) {
 		char *disp, *addr;
-		s = blaze822_addr(s, &disp, &addr);
+		blaze822_addr(s, &disp, &addr);
 		if (!disp && !addr)
 			parse_error("invalid address at '%.15s'", pos);
 		s = strdup((disp) ? disp : addr);
@@ -457,8 +467,6 @@ parse_cmp()
 	enum prop prop;
 	enum op op;
 
-	op = 0;
-
 	if (token("depth"))
 		prop = PROP_DEPTH;
 	else if (token("kept"))
@@ -684,7 +692,7 @@ parse_msglist(char *s)
 		case 'S': flag = FLAG_SEEN; break;
 		case 'o': n = 1; /* FALL TROUGH */
 		case 'n': flag = FLAG_NEW; break;
-		default: flag = 0; parse_error("unknown type at '%.15s'", s);
+		default: parse_error("unknown type at '%.15s'", s);
 		}
 
 		e1 = mkexpr(EXPR_ANYSET);
@@ -723,7 +731,7 @@ parse_msglist(char *s)
 		} else {
 			char *disp, *addr;
 
-			d = blaze822_addr(s, &disp, &addr);
+			blaze822_addr(s, &disp, &addr);
 			if (!disp && !addr)
 				parse_error("invalid address at '%.15s'", pos);
 
@@ -782,7 +790,7 @@ msg_addr(struct mailinfo *m, char *h, int t)
 		return "";
 
 	char *disp, *addr;
-	b = blaze822_addr(b, &disp, &addr);
+	blaze822_addr(b, &disp, &addr);
 
 	if (t) {
 		if (!addr)
@@ -847,12 +855,12 @@ eval(struct expr *e, struct mailinfo *m)
 		}
 
 		switch (e->a.prop) {
-		case PROP_ATIME: v = m->sb->st_atime; break;
-		case PROP_CTIME: v = m->sb->st_ctime; break;
-		case PROP_MTIME: v = m->sb->st_mtime; break;
+		case PROP_ATIME: if (m->sb) v = m->sb->st_atime; break;
+		case PROP_CTIME: if (m->sb) v = m->sb->st_ctime; break;
+		case PROP_MTIME: if (m->sb) v = m->sb->st_mtime; break;
 		case PROP_KEPT: v = kept; break;
 		case PROP_REPLIES: v = m->replies; break;
-		case PROP_SIZE: v = m->sb->st_size; break;
+		case PROP_SIZE: if (m->sb) v = m->sb->st_size; break;
 		case PROP_DATE: v = msg_date(m); break;
 		case PROP_FLAG: v = m->flags; break;
 		case PROP_INDEX: v = m->index; break;