diff options
Diffstat (limited to 'src/p11tool.c')
-rw-r--r-- | src/p11tool.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/p11tool.c b/src/p11tool.c index ff247835cd..e3b24b8353 100644 --- a/src/p11tool.c +++ b/src/p11tool.c @@ -51,9 +51,19 @@ static void cmd_parser(int argc, char **argv); static FILE *outfile; +static const char *outfile_name = NULL; int batch = 0; int ask_pass = 0; +void app_exit(int val) +{ + if (val != 0) { + if (outfile_name) + remove(outfile_name); + } + exit(val); +} + static void tls_log_func(int level, const char *str) { fprintf(stderr, "|<%d>| %s", level, str); @@ -150,7 +160,7 @@ static void cmd_parser(int argc, char **argv) if ((ret = gnutls_global_init()) < 0) { fprintf(stderr, "global_init: %s\n", gnutls_strerror(ret)); - exit(1); + app_exit(1); } if (HAVE_OPT(PROVIDER)) { @@ -165,7 +175,7 @@ static void cmd_parser(int argc, char **argv) if (ret < 0) { fprintf(stderr, "pkcs11_add_provider: %s\n", gnutls_strerror(ret)); - exit(1); + app_exit(1); } } } else { @@ -179,8 +189,9 @@ static void cmd_parser(int argc, char **argv) outfile = safe_open_rw(OPT_ARG(OUTFILE), 0); if (outfile == NULL) { fprintf(stderr, "cannot open %s\n", OPT_ARG(OUTFILE)); - exit(1); + app_exit(1); } + outfile_name = OPT_ARG(OUTFILE); } else outfile = stdout; |