aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2021-02-14 22:23:07 +0100
committerAleksander Morgado <aleksander@aleksander.es>2021-02-23 11:35:11 +0000
commit8a8e00168b02c5064f01d5da20a97c7268ba1e2b (patch)
tree0ad7a60dcfcc4fdf3fbc06f0a54e6de6234ca70f /src
parentc84454c1b00da7d33cc4fd917be4be6756317488 (diff)
charsets: define common translit fallback character
Diffstat (limited to 'src')
-rw-r--r--src/mm-charsets.c16
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);