Alexandre Julliard : make_ctests:
Clean output files when aborting on an error or signal.
Alexandre Julliard
julliard at wine.codeweavers.com
Sat May 27 06:34:58 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 4e07d0d6d900f516da99bd9abe93d431fd3da875
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=4e07d0d6d900f516da99bd9abe93d431fd3da875
Author: Alexandre Julliard <julliard at winehq.org>
Date: Sat May 27 13:24:25 2006 +0200
make_ctests: Clean output files when aborting on an error or signal.
---
tools/make_ctests.c | 20 +++++++++++++++++++-
1 files changed, 19 insertions(+), 1 deletions(-)
diff --git a/tools/make_ctests.c b/tools/make_ctests.c
index b43b588..54f7484 100644
--- a/tools/make_ctests.c
+++ b/tools/make_ctests.c
@@ -24,6 +24,7 @@
#include "config.h"
+#include <signal.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
@@ -34,6 +35,16 @@ #endif
static const char *output_file;
+static void cleanup_files(void)
+{
+ if (output_file) unlink( output_file );
+}
+
+static void exit_on_signal( int sig )
+{
+ exit(1); /* this will call the atexit functions */
+}
+
static void fatal_error( const char *msg, ... )
{
va_list valist;
@@ -41,7 +52,6 @@ static void fatal_error( const char *msg
fprintf( stderr, "make_ctests: " );
vfprintf( stderr, msg, valist );
va_end( valist );
- if (output_file) unlink( output_file );
exit(1);
}
@@ -108,6 +118,13 @@ int main( int argc, const char** argv )
tests[count++] = basename( argv[i] );
}
+ atexit( cleanup_files );
+ signal( SIGTERM, exit_on_signal );
+ signal( SIGINT, exit_on_signal );
+#ifdef SIGHUP
+ signal( SIGHUP, exit_on_signal );
+#endif
+
if (output_file)
{
if (!(out = fopen( output_file, "w" )))
@@ -138,5 +155,6 @@ int main( int argc, const char** argv )
if (output_file && fclose( out ))
fatal_perror( "error writing to %s", output_file );
+ output_file = NULL;
return 0;
}
More information about the wine-cvs
mailing list