diff options
Diffstat (limited to 'src/systemkey.c')
-rw-r--r-- | src/systemkey.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/systemkey.c b/src/systemkey.c index 7affc2ccbb..ce152a3aed 100644 --- a/src/systemkey.c +++ b/src/systemkey.c @@ -54,10 +54,20 @@ static gnutls_x509_crt_fmt_t incert_format, outcert_format; static gnutls_x509_crt_fmt_t inkey_format, outkey_format; static FILE *outfile; +static const char *outfile_name = NULL; static FILE *infile; 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); @@ -108,8 +118,9 @@ static void cmd_parser(int argc, char **argv) outfile = safe_open_rw(OPT_ARG(OUTFILE), 0); if (outfile == NULL) { fprintf(stderr, "%s", OPT_ARG(OUTFILE)); - exit(1); + app_exit(1); } + outfile_name = OPT_ARG(OUTFILE); } else outfile = stdout; @@ -117,7 +128,7 @@ static void cmd_parser(int argc, char **argv) infile = fopen(OPT_ARG(INFILE), "rb"); if (infile == NULL) { fprintf(stderr, "%s", OPT_ARG(INFILE)); - exit(1); + app_exit(1); } } else infile = stdin; @@ -142,7 +153,7 @@ static void systemkey_delete(const char *url, FILE * out) if (ret < 0) { fprintf(stderr, "gnutls_systemkey_privkey_delete: %s", gnutls_strerror(ret)); - exit(1); + app_exit(1); } fprintf(out, "Key %s deleted\n", url); @@ -164,7 +175,7 @@ static void systemkey_list(FILE * out) if (ret < 0 && ret != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { fprintf(stderr, "gnutls_system_key_iter_get_url: %s", gnutls_strerror(ret)); - exit(1); + app_exit(1); } gnutls_system_key_iter_deinit(iter); fputs("\n", out); |