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 | |
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')
-rw-r--r-- | src/config/preferences.c | 72 | ||||
-rw-r--r-- | src/config/preferences.h | 14 | ||||
-rw-r--r-- | src/config/theme.c | 12 |
3 files changed, 47 insertions, 51 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; } diff --git a/src/config/preferences.h b/src/config/preferences.h index 7eda87db..24e642d9 100644 --- a/src/config/preferences.h +++ b/src/config/preferences.h @@ -232,12 +232,12 @@ void prefs_free_plugins(gchar **plugins); 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); -char prefs_get_pgp_char(void); -void prefs_set_pgp_char(char ch); -char prefs_get_omemo_char(void); -void prefs_set_omemo_char(char ch); +char* prefs_get_otr_char(void); +void prefs_set_otr_char(char *ch); +char* prefs_get_pgp_char(void); +void prefs_set_pgp_char(char *ch); +char* prefs_get_omemo_char(void); +void prefs_set_omemo_char(char *ch); char prefs_get_roster_header_char(void); void prefs_set_roster_header_char(char ch); @@ -273,7 +273,7 @@ void prefs_set_roster_presence_indent(gint value); gint prefs_get_occupants_indent(void); void prefs_set_occupants_indent(gint value); -char prefs_get_correction_char(void); +char* prefs_get_correction_char(void); void prefs_set_correction_char(char ch); void prefs_add_login(const char *jid); diff --git a/src/config/theme.c b/src/config/theme.c index 072dc3a8..64c276e9 100644 --- a/src/config/theme.c +++ b/src/config/theme.c @@ -461,24 +461,24 @@ _load_preferences(void) if (g_key_file_has_key(theme, "ui", "otr.char", NULL)) { gchar *ch = g_key_file_get_string(theme, "ui", "otr.char", NULL); - if (ch && strlen(ch) > 0) { - prefs_set_otr_char(ch[0]); + if (ch && g_utf8_strlen(ch, 4) == 1) { + prefs_set_otr_char(ch); g_free(ch); } } if (g_key_file_has_key(theme, "ui", "pgp.char", NULL)) { gchar *ch = g_key_file_get_string(theme, "ui", "pgp.char", NULL); - if (ch && strlen(ch) > 0) { - prefs_set_pgp_char(ch[0]); + if (ch && g_utf8_strlen(ch, 4) == 1) { + prefs_set_pgp_char(ch); g_free(ch); } } if (g_key_file_has_key(theme, "ui", "omemo.char", NULL)) { gchar *ch = g_key_file_get_string(theme, "ui", "omemo.char", NULL); - if (ch && strlen(ch) > 0) { - prefs_set_omemo_char(ch[0]); + if (ch && g_utf8_strlen(ch, 4) == 1) { + prefs_set_omemo_char(ch); g_free(ch); } } |