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

This commit is contained in:
Alexandre Julliard 2006-05-27 13:24:25 +02:00
parent 411fe29a54
commit 4e07d0d6d9
1 changed files with 19 additions and 1 deletions

View File

@ -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 @@
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, ... )
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 )
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 )
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;
} }