From 669de0ca521b8aada5be6cfa52fe5f4416ca84a1 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Fri, 21 Feb 2020 14:51:19 +0100 Subject: [PATCH] Improve setting encryption char error handling --- src/command/cmd_funcs.c | 21 +++++++++++++++------ src/config/preferences.c | 16 +++++++++------- src/config/preferences.h | 6 +++--- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index f32deef0..f0468cdd 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -7132,8 +7132,11 @@ cmd_pgp(ProfWin *window, const char *const command, gchar **args) cons_bad_cmd_usage(command); return TRUE; } else if (g_utf8_strlen(args[1], 4) == 1) { - prefs_set_pgp_char(args[1]); - cons_show("PGP char set to %s.", args[1]); + if (prefs_set_pgp_char(args[1])) { + cons_show("PGP char set to %s.", args[1]); + } else { + cons_show_error("Could not set PGP char: %s.", args[1]); + } return TRUE; } cons_bad_cmd_usage(command); @@ -7369,8 +7372,11 @@ cmd_otr_char(ProfWin *window, const char *const command, gchar **args) cons_bad_cmd_usage(command); return TRUE; } else if (g_utf8_strlen(args[1], 4) == 1) { - prefs_set_otr_char(args[1]); - cons_show("OTR char set to %s.", args[1]); + if (prefs_set_otr_char(args[1])) { + cons_show("OTR char set to %s.", args[1]); + } else { + cons_show_error("Could not set OTR char: %s.", args[1]); + } return TRUE; } cons_bad_cmd_usage(command); @@ -8272,8 +8278,11 @@ cmd_omemo_char(ProfWin *window, const char *const command, gchar **args) cons_bad_cmd_usage(command); return TRUE; } else if (g_utf8_strlen(args[1], 4) == 1) { - prefs_set_omemo_char(args[1]); - cons_show("OMEMO char set to %s.", args[1]); + if (prefs_set_omemo_char(args[1])) { + cons_show("OMEMO char set to %s.", args[1]); + } else { + cons_show_error("Could not set OMEMO char: %s.", args[1]); + } return TRUE; } cons_bad_cmd_usage(command); diff --git a/src/config/preferences.c b/src/config/preferences.c index 3e9629e1..fdd18ea0 100644 --- a/src/config/preferences.c +++ b/src/config/preferences.c @@ -883,14 +883,16 @@ _prefs_get_encryption_char(const char *const ch, const char *const pref_group, c return result; } -static void +static gboolean _prefs_set_encryption_char(const char *const ch, const char *const pref_group, const char *const key) { if (g_utf8_strlen(ch, 4) == 1) { g_key_file_set_string(prefs, pref_group, key, ch); + return TRUE; } else { log_error("Could not set %s encryption char to: %s", key, ch); } + return FALSE; } char* @@ -899,10 +901,10 @@ prefs_get_otr_char(void) return _prefs_get_encryption_char("~", PREF_GROUP_OTR, "otr.char"); } -void +gboolean prefs_set_otr_char(char *ch) { - _prefs_set_encryption_char(ch, PREF_GROUP_OTR, "otr.char"); + return _prefs_set_encryption_char(ch, PREF_GROUP_OTR, "otr.char"); } char* @@ -911,10 +913,10 @@ prefs_get_pgp_char(void) return _prefs_get_encryption_char("~", PREF_GROUP_PGP, "pgp.char"); } -void +gboolean prefs_set_pgp_char(char *ch) { - _prefs_set_encryption_char(ch, PREF_GROUP_PGP, "pgp.char"); + return _prefs_set_encryption_char(ch, PREF_GROUP_PGP, "pgp.char"); } char* @@ -923,10 +925,10 @@ prefs_get_omemo_char(void) return _prefs_get_encryption_char("~", PREF_GROUP_OMEMO, "omemo.char"); } -void +gboolean prefs_set_omemo_char(char *ch) { - _prefs_set_encryption_char(ch, PREF_GROUP_OMEMO, "omemo.char"); + return _prefs_set_encryption_char(ch, PREF_GROUP_OMEMO, "omemo.char"); } char diff --git a/src/config/preferences.h b/src/config/preferences.h index 24e642d9..a9993e5b 100644 --- a/src/config/preferences.h +++ b/src/config/preferences.h @@ -233,11 +233,11 @@ void prefs_add_plugin(const char *const name); void prefs_remove_plugin(const char *const name); char* prefs_get_otr_char(void); -void prefs_set_otr_char(char *ch); +gboolean prefs_set_otr_char(char *ch); char* prefs_get_pgp_char(void); -void prefs_set_pgp_char(char *ch); +gboolean prefs_set_pgp_char(char *ch); char* prefs_get_omemo_char(void); -void prefs_set_omemo_char(char *ch); +gboolean prefs_set_omemo_char(char *ch); char prefs_get_roster_header_char(void); void prefs_set_roster_header_char(char ch);