summaryrefslogtreecommitdiff
path: root/src/zyklonb.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/zyklonb.c')
-rw-r--r--src/zyklonb.c33
1 files changed, 9 insertions, 24 deletions
diff --git a/src/zyklonb.c b/src/zyklonb.c
index 1c7f6ae..de4e3ac 100644
--- a/src/zyklonb.c
+++ b/src/zyklonb.c
@@ -277,12 +277,16 @@ irc_initialize_ssl (struct bot_context *ctx, struct error **e)
goto error_ssl_2;
const char *ssl_cert = str_map_find (&ctx->config, "ssl_cert");
- if (ssl_cert
- && !SSL_use_certificate_file (ctx->ssl, ssl_cert, SSL_FILETYPE_PEM))
+ if (ssl_cert)
{
+ char *path = resolve_config_filename (ssl_cert);
+ if (!path)
+ print_error ("%s: %s", "cannot open file", ssl_cert);
// XXX: perhaps we should read the file ourselves for better messages
- print_error ("%s: %s", "setting the SSL client certificate failed",
- ERR_error_string (ERR_get_error (), NULL));
+ else if (!SSL_use_certificate_file (ctx->ssl, path, SSL_FILETYPE_PEM))
+ print_error ("%s: %s", "setting the SSL client certificate failed",
+ ERR_error_string (ERR_get_error (), NULL));
+ free (path);
}
SSL_set_connect_state (ctx->ssl);
@@ -1686,25 +1690,6 @@ print_usage (const char *program_name)
program_name);
}
-static void
-call_write_default_config (const char *hint)
-{
- static const char *prolog =
- "# " PROGRAM_NAME " " PROGRAM_VERSION " configuration file\n"
- "\n";
-
- struct error *e = NULL;
- char *filename = write_default_config (hint, prolog, g_config_table, &e);
- if (!filename)
- {
- print_fatal ("%s", e->message);
- error_free (e);
- exit (EXIT_FAILURE);
- }
- print_status ("configuration written to `%s'", filename);
- free (filename);
-}
-
int
main (int argc, char *argv[])
{
@@ -1741,7 +1726,7 @@ main (int argc, char *argv[])
printf (PROGRAM_NAME " " PROGRAM_VERSION "\n");
exit (EXIT_SUCCESS);
case 'w':
- call_write_default_config (optarg);
+ call_write_default_config (optarg, g_config_table);
exit (EXIT_SUCCESS);
default:
print_fatal ("error in options");