fnt2fon: Clean output files when aborting on an error or signal.
This commit is contained in:
parent
3f1bc3a0a2
commit
411fe29a54
|
@ -21,6 +21,7 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "wine/port.h"
|
#include "wine/port.h"
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -55,6 +56,18 @@ static const BYTE MZ_hdr[] = {'M', 'Z', 0x0d, 0x01, 0x01, 0x00, 0x00, 0x00, 0x
|
||||||
'm', 'o', 'd', 'e', 0x0d, 0x0a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
'm', 'o', 'd', 'e', 0x0d, 0x0a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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 usage(char **argv)
|
static void usage(char **argv)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s fntfiles output.fon\n", argv[0]);
|
fprintf(stderr, "%s fntfiles output.fon\n", argv[0]);
|
||||||
|
@ -177,7 +190,15 @@ int main(int argc, char **argv)
|
||||||
fontdir_off = (non_resident_name_off + non_resident_name_len + 15) & ~0xf;
|
fontdir_off = (non_resident_name_off + non_resident_name_len + 15) & ~0xf;
|
||||||
font_off = (fontdir_off + fontdir_len + 15) & ~0x0f;
|
font_off = (fontdir_off + fontdir_len + 15) & ~0x0f;
|
||||||
|
|
||||||
ofp = fopen(argv[argc - 1], "wb");
|
atexit( cleanup_files );
|
||||||
|
signal( SIGTERM, exit_on_signal );
|
||||||
|
signal( SIGINT, exit_on_signal );
|
||||||
|
#ifdef SIGHUP
|
||||||
|
signal( SIGHUP, exit_on_signal );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
output_file = argv[argc - 1];
|
||||||
|
ofp = fopen(output_file, "wb");
|
||||||
|
|
||||||
fwrite(MZ_hdr, sizeof(MZ_hdr), 1, ofp);
|
fwrite(MZ_hdr, sizeof(MZ_hdr), 1, ofp);
|
||||||
fwrite(&NE_hdr, sizeof(NE_hdr), 1, ofp);
|
fwrite(&NE_hdr, sizeof(NE_hdr), 1, ofp);
|
||||||
|
@ -288,6 +309,7 @@ int main(int argc, char **argv)
|
||||||
fputc(0x00, ofp);
|
fputc(0x00, ofp);
|
||||||
}
|
}
|
||||||
fclose(ofp);
|
fclose(ofp);
|
||||||
|
output_file = NULL;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue