diff --git a/applypatch b/applypatch
index 789917f3c51..5a3a44b0e6a 100755
--- a/applypatch
+++ b/applypatch
@@ -7,11 +7,10 @@
 ## The arguments are:
 ##	$1 - file with commit message
 ##	$2 - file with the actual patch
-##	$3 - file with list of filenames the patch touches
-##	$4 - "info" file with Author, email and subject
-##	$5 - optional file containing signoff to add
+##	$3 - "info" file with Author, email and subject
+##	$4 - optional file containing signoff to add
 ##
-signoff="$5"
+signoff="$4"
 final=.dotest/final-commit
 ##
 ## If this file exists, we ask before applying
@@ -19,8 +18,7 @@ final=.dotest/final-commit
 query_apply=.dotest/.query_apply
 MSGFILE=$1
 PATCHFILE=$2
-FILES=$3
-INFO=$4
+INFO=$3
 EDIT=${VISUAL:-$EDITOR}
 EDIT=${EDIT:-vi}
 
diff --git a/dotest b/dotest
index ccc1f0304f1..c6f44e1c413 100755
--- a/dotest
+++ b/dotest
@@ -19,9 +19,9 @@ esac
 mailsplit $1 .dotest || exit 1
 for i in .dotest/*
 do
-	mailinfo .dotest/msg .dotest/patch .dotest/file < $i > .dotest/info || exit 1
+	mailinfo .dotest/msg .dotest/patch < $i > .dotest/info || exit 1
 	stripspace < .dotest/msg > .dotest/msg-clean
-	applypatch .dotest/msg-clean .dotest/patch .dotest/file .dotest/info "$2"
+	applypatch .dotest/msg-clean .dotest/patch .dotest/info "$2"
 	ret=$?
 	if [ $ret -ne 0 ]; then
 		# 2 is a special exit code from applypatch to indicate that
diff --git a/mailinfo.c b/mailinfo.c
index 13c1e951ac2..6c4d5898238 100644
--- a/mailinfo.c
+++ b/mailinfo.c
@@ -7,7 +7,7 @@
 #include <string.h>
 #include <ctype.h>
 
-static FILE *cmitmsg, *patchfile, *filelist;
+static FILE *cmitmsg, *patchfile;
 
 static char line[1000];
 static char date[1000];
@@ -181,45 +181,6 @@ static void cleanup_space(char *buf)
 	}
 }
 
-/*
- * Hacky hacky. This depends not only on -p1, but on
- * filenames not having some special characters in them,
- * like tilde.
- */
-static void show_filename(char *line)
-{
-	int len;
-	char *name = strchr(line, '/');
-
-	if (!name || !isspace(*line))
-		return;
-	name++;
-	len = 0;
-	for (;;) {
-		unsigned char c = name[len];
-		switch (c) {
-		default:
-			len++;
-			continue;
-
-		case 0:	case ' ':
-		case '\t': case '\n':
-			break;
-
-		/* patch tends to special-case these things.. */
-		case '~':
-			break;
-		}
-		break;
-	}
-	/* remove ".orig" from the end - common patch behaviour */
-	if (len > 5 && !memcmp(name+len-5, ".orig", 5))
-		len -=5;
-	if (!len)
-		return;
-	fprintf(filelist, "%.*s\n", len, name);
-}
-
 static void handle_rest(void)
 {
 	char *sub = cleanup_subject(subject);
@@ -231,14 +192,9 @@ static void handle_rest(void)
 	FILE *out = cmitmsg;
 
 	do {
-		/* Track filename information from the patch.. */
-		if (!memcmp("---", line, 3)) {
+		if (!memcmp("diff -", line, 6) ||
+		    !memcmp("---", line, 3))
 			out = patchfile;
-			show_filename(line+3);
-		}
-
-		if (!memcmp("+++", line, 3))
-			show_filename(line+3);
 
 		fputs(line, out);
 	} while (fgets(line, sizeof(line), stdin) != NULL);
@@ -283,13 +239,13 @@ static void handle_body(void)
 
 static void usage(void)
 {
-	fprintf(stderr, "mailinfo msg-file path-file filelist-file < email\n");
+	fprintf(stderr, "mailinfo msg-file path-file < email\n");
 	exit(1);
 }
 
 int main(int argc, char ** argv)
 {
-	if (argc != 4)
+	if (argc != 3)
 		usage();
 	cmitmsg = fopen(argv[1], "w");
 	if (!cmitmsg) {
@@ -301,11 +257,6 @@ int main(int argc, char ** argv)
 		perror(argv[2]);
 		exit(1);
 	}
-	filelist = fopen(argv[3], "w");
-	if (!filelist) {
-		perror(argv[3]);
-		exit(1);
-	}
 	while (fgets(line, sizeof(line), stdin) != NULL) {
 		int len = eatspace(line);
 		if (!len) {