summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--mshow.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/mshow.c b/mshow.c
index c4f5228..4b87f46 100644
--- a/mshow.c
+++ b/mshow.c
@@ -35,6 +35,7 @@ static char fallback_ct[] = "text/plain";
 struct message *filters;
 
 static int mimecount;
+static int extractcount;
 static int safe_output;
 
 static int reply_found;
@@ -525,6 +526,7 @@ extract_mime(int depth, struct message *msg, char *body, size_t bodylen)
 					printf("%s\n", bufptr);
 					writefile(bufptr, body, bodylen);
 				}
+				extractcount++;
 			} else if (filename &&
 			    fnmatch(a, filename, FNM_PATHNAME) == 0) {
 				// extract by name
@@ -545,6 +547,7 @@ extract_mime(int depth, struct message *msg, char *body, size_t bodylen)
 					printf("\n");
 					writefile(filename, body, bodylen);
 				}
+				extractcount++;
 			}
 		}
 	}
@@ -839,5 +842,10 @@ main(int argc, char *argv[])
 	if (pid1 > 0)
 		pipeclose(pid1);
 
+	if ((xflag || Oflag) && extractcount < argc-optind) {
+		fprintf(stderr, "mshow: could not extract all attachments\n");
+		return 1;
+	}
+
 	return 0;
 }