Commit 4e07d0d6 authored by Alexandre Julliard's avatar Alexandre Julliard

make_ctests: Clean output files when aborting on an error or signal.

parent 411fe29a
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "config.h" #include "config.h"
#include <signal.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
...@@ -34,6 +35,16 @@ ...@@ -34,6 +35,16 @@
static const char *output_file; 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, ... ) static void fatal_error( const char *msg, ... )
{ {
va_list valist; va_list valist;
...@@ -41,7 +52,6 @@ static void fatal_error( const char *msg, ... ) ...@@ -41,7 +52,6 @@ static void fatal_error( const char *msg, ... )
fprintf( stderr, "make_ctests: " ); fprintf( stderr, "make_ctests: " );
vfprintf( stderr, msg, valist ); vfprintf( stderr, msg, valist );
va_end( valist ); va_end( valist );
if (output_file) unlink( output_file );
exit(1); exit(1);
} }
...@@ -108,6 +118,13 @@ int main( int argc, const char** argv ) ...@@ -108,6 +118,13 @@ int main( int argc, const char** argv )
tests[count++] = basename( argv[i] ); 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 (output_file)
{ {
if (!(out = fopen( output_file, "w" ))) if (!(out = fopen( output_file, "w" )))
...@@ -138,5 +155,6 @@ int main( int argc, const char** argv ) ...@@ -138,5 +155,6 @@ int main( int argc, const char** argv )
if (output_file && fclose( out )) if (output_file && fclose( out ))
fatal_perror( "error writing to %s", output_file ); fatal_perror( "error writing to %s", output_file );
output_file = NULL;
return 0; return 0;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment