From f14a9ed72df27c4ed93489c029967a16d2e72738 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 12 Jan 2014 00:27:13 +0000 Subject: [PATCH] Implemented write fingerprints callback --- src/otr.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/otr.c b/src/otr.c index 3259543f..ab4b79cd 100644 --- a/src/otr.c +++ b/src/otr.c @@ -120,7 +120,25 @@ cb_update_context_list(void *opdata) static void cb_write_fingerprints(void *opdata) { -// cons_debug("cb_write_fingerprints"); + cons_debug("cb_write_fingerprints"); + gcry_error_t err = 0; + gchar *data_home = xdg_get_data_home(); + gchar *account_dir = str_replace(jid, "@", "_at_"); + + GString *basedir = g_string_new(data_home); + g_string_append(basedir, "/profanity/otr/"); + g_string_append(basedir, account_dir); + g_string_append(basedir, "/"); + + GString *fpsfilename = g_string_new(basedir->str); + g_string_append(fpsfilename, "fingerprints.txt"); + err = otrl_privkey_write_fingerprints(user_state, fpsfilename->str); + if (!err == GPG_ERR_NO_ERROR) { + log_error("Failed to write fingerprints file"); + cons_show_error("Failed to create fingerprints file"); + } + g_string_free(basedir, TRUE); + g_string_free(fpsfilename, TRUE); } static void @@ -228,6 +246,7 @@ otr_on_connect(ProfAccount *account) if (!err == GPG_ERR_NO_ERROR) { g_string_free(basedir, TRUE); g_string_free(keysfilename, TRUE); + g_string_free(fpsfilename, TRUE); log_error("Failed to load fingerprints"); return; } else {