diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2021-02-14 22:23:07 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-02-23 11:35:11 +0000 |
commit | 8a8e00168b02c5064f01d5da20a97c7268ba1e2b (patch) | |
tree | 0ad7a60dcfcc4fdf3fbc06f0a54e6de6234ca70f /src | |
parent | c84454c1b00da7d33cc4fd917be4be6756317488 (diff) |
charsets: define common translit fallback character
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-charsets.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/mm-charsets.c b/src/mm-charsets.c index ed351a81..5430e253 100644 --- a/src/mm-charsets.c +++ b/src/mm-charsets.c @@ -27,6 +27,9 @@ #include "mm-charsets.h" #include "mm-log.h" +/* Common fallback character when transliteration is enabled */ +static const gchar *translit_fallback = "?"; + /******************************************************************************/ /* Expected charset settings */ @@ -209,13 +212,12 @@ utf8_to_gsm_def_char (const gchar *utf8, static gboolean translit_gsm_nul_byte (GByteArray *gsm) { - static const gchar *replacement = "?"; - guint i; - guint n_replaces = 0; + guint i; + guint n_replaces = 0; for (i = 0; i < gsm->len; i++) { if (gsm->data[i] == 0x00) { - utf8_to_gsm_def_char (replacement, 1, &gsm->data[i]); + utf8_to_gsm_def_char (translit_fallback, strlen (translit_fallback), &gsm->data[i]); n_replaces++; } } @@ -333,7 +335,7 @@ charset_gsm_unpacked_to_utf8 (const guint8 *gsm, if (ulen) g_byte_array_append (utf8, &uchars[0], ulen); else if (translit) - g_byte_array_append (utf8, (guint8 *) "?", 1); + g_byte_array_append (utf8, (guint8 *) translit_fallback, strlen (translit_fallback)); else { g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_INVALID_ARGS, "Invalid conversion from GSM7"); @@ -690,7 +692,7 @@ charset_iconv_from_utf8 (const gchar *utf8, } encoded = (guint8 *) g_convert_with_fallback (utf8, -1, - settings->iconv_name, "UTF-8", "?", + settings->iconv_name, "UTF-8", translit_fallback, NULL, &bytes_written, error); if (encoded) { if (out_size) @@ -812,7 +814,7 @@ charset_iconv_to_utf8 (const guint8 *data, } utf8 = g_convert_with_fallback ((const gchar *) data, len, - "UTF-8", settings->iconv_name, "?", + "UTF-8", settings->iconv_name, translit_fallback, NULL, NULL, error); if (utf8) return g_steal_pointer (&utf8); |