diff options
author | Michael Vetter <jubalh@iodoru.org> | 2020-02-20 18:11:08 +0100 |
---|---|---|
committer | Michael Vetter <jubalh@iodoru.org> | 2020-02-20 23:36:10 +0100 |
commit | 1f8b1eb740391941e79e1004ad041f8178a2b674 (patch) | |
tree | 726eb598bfe2a99f80a239dc5b8f1c41ae5bae71 /src/config/preferences.c | |
parent | 280b718cfb592f2eae317bf298a96a71fdf7dff9 (diff) | |
download | profani-tty-1f8b1eb740391941e79e1004ad041f8178a2b674.tar.gz |
Allow utf8 symbols as omemo/pgp/otr indicator char
Fix https://github.com/profanity-im/profanity/issues/1264
Diffstat (limited to 'src/config/preferences.c')
-rw-r--r-- | src/config/preferences.c | 72 |
1 files changed, 34 insertions, 38 deletions
diff --git a/src/config/preferences.c b/src/config/preferences.c index 4b5635a1..a747c911 100644 --- a/src/config/preferences.c +++ b/src/config/preferences.c @@ -868,82 +868,79 @@ prefs_get_roster_size(void) } } -char +char* prefs_get_otr_char(void) { - char result = '~'; + char *result = "~"; char *resultstr = g_key_file_get_string(prefs, PREF_GROUP_OTR, "otr.char", NULL); if (!resultstr) { - result = '~'; + result = strdup("~"); } else { - result = resultstr[0]; + result = resultstr; } - free(resultstr); return result; } void -prefs_set_otr_char(char ch) +prefs_set_otr_char(char *ch) { - char str[2]; - str[0] = ch; - str[1] = '\0'; - - g_key_file_set_string(prefs, PREF_GROUP_OTR, "otr.char", str); + if (g_utf8_strlen(ch, 4) == 1) { + g_key_file_set_string(prefs, PREF_GROUP_OTR, "otr.char", ch); + } else { + log_error("Could not set otr char: %s", ch); + } } -char +char* prefs_get_pgp_char(void) { - char result = '~'; + char *result = "~"; char *resultstr = g_key_file_get_string(prefs, PREF_GROUP_PGP, "pgp.char", NULL); if (!resultstr) { - result = '~'; + result = strdup("~"); } else { - result = resultstr[0]; + result = resultstr; } - free(resultstr); return result; } void -prefs_set_pgp_char(char ch) +prefs_set_pgp_char(char *ch) { - char str[2]; - str[0] = ch; - str[1] = '\0'; - - g_key_file_set_string(prefs, PREF_GROUP_PGP, "pgp.char", str); + if (g_utf8_strlen(ch, 4) == 1) { + g_key_file_set_string(prefs, PREF_GROUP_PGP, "pgp.char", ch); + } else { + log_error("Could not set pgp char: %s", ch); + } } -char +char* prefs_get_omemo_char(void) { - char result = '~'; + char *result = "~"; char *resultstr = g_key_file_get_string(prefs, PREF_GROUP_OMEMO, "omemo.char", NULL); if (!resultstr) { - result = '~'; + result = strdup("~"); } else { - result = resultstr[0]; + result = resultstr; } - free(resultstr); return result; } void -prefs_set_omemo_char(char ch) +prefs_set_omemo_char(char *ch) { - char str[2]; - str[0] = ch; - str[1] = '\0'; - - g_key_file_set_string(prefs, PREF_GROUP_OMEMO, "omemo.char", str); + if (g_utf8_strlen(ch, 4) == 1) { + g_key_file_set_string(prefs, PREF_GROUP_OMEMO, "omemo.char", ch); + } else { + log_error("Could not set omemo char: %s", ch); + } } char @@ -1201,18 +1198,17 @@ prefs_set_roster_presence_indent(gint value) g_key_file_set_integer(prefs, PREF_GROUP_UI, "roster.presence.indent", value); } -char +char* prefs_get_correction_char(void) { - char result = '+'; + char *result = "+"; char *resultstr = g_key_file_get_string(prefs, PREF_GROUP_UI, "correction.char", NULL); if (!resultstr) { - result = '+'; + result = strdup("+"); } else { - result = resultstr[0]; + result = resultstr; } - free(resultstr); return result; } |