wmc: Clean output files when aborting on an error or signal.
diff --git a/tools/wmc/wmc.c b/tools/wmc/wmc.c
index f852f2b..9a19654 100644
--- a/tools/wmc/wmc.c
+++ b/tools/wmc/wmc.c
@@ -116,6 +116,17 @@
 int getopt (int argc, char *const *argv, const char *optstring);
 static void segvhandler(int sig);
 
+static void cleanup_files(void)
+{
+    if (output_name) unlink( output_name );
+    if (header_name) unlink( header_name );
+}
+
+static void exit_on_signal( int sig )
+{
+    exit(1);  /* this will call the atexit functions */
+}
+
 int main(int argc,char *argv[])
 {
 	extern char* optarg;
@@ -126,7 +137,13 @@
 	int i;
 	int cmdlen;
 
+	atexit( cleanup_files );
 	signal(SIGSEGV, segvhandler);
+	signal( SIGTERM, exit_on_signal );
+	signal( SIGINT, exit_on_signal );
+#ifdef SIGHUP
+	signal( SIGHUP, exit_on_signal );
+#endif
 
 	now = time(NULL);
 
@@ -269,7 +286,8 @@
 	write_rc_file(output_name);
 	if(!rcinline)
 		write_bin_files();
-
+	output_name = NULL;
+	header_name = NULL;
 	return 0;
 }