make_ctests: Clean output files when aborting on an error or signal.
This commit is contained in:
parent
411fe29a54
commit
4e07d0d6d9
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue