add support for x-mac-cyrillic encoding.
authorPaul <paul@claws-mail.org>
Mon, 19 Jan 2015 09:21:52 +0000 (09:21 +0000)
committerPaul <paul@claws-mail.org>
Mon, 19 Jan 2015 09:21:52 +0000 (09:21 +0000)
patch by Anton Butanaev.

AUTHORS
src/codeconv.c
src/codeconv.h
src/compose.c
src/gtk/authors.h
src/mainwindow.c
src/messageview.c
src/prefs_send.c
src/procmime.c

diff --git a/AUTHORS b/AUTHORS
index 31a80d73484f2e0f16868a3c3a993fb0ee8ce609..52d91eef8d328144d02df67643396d13942ed11b 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -309,3 +309,4 @@ contributors (in addition to the above; based on Changelog)
        Alessandro Di Federico
        Timo Teräs
        H. Merijn Brand
+       Anton Butanaev
index 565c0c273109ba4742ec6aaf46e8b2295db27fc0..419e291aae9a3c45d453924e255e53070e084531 100644 (file)
@@ -695,6 +695,8 @@ conv_get_fallback_for_private_encoding(const gchar *encoding)
 {
        if (encoding && (encoding[0] == 'X' || encoding[0] == 'x') &&
            encoding[1] == '-') {
+               if (!g_ascii_strcasecmp(encoding, CS_X_MACCYR))
+                       return CS_MACCYR;
                if (!g_ascii_strcasecmp(encoding, CS_X_GBK))
                        return CS_GBK;
        }
@@ -1022,6 +1024,7 @@ static const struct {
        {C_WINDOWS_1257,        CS_WINDOWS_1257},
        {C_WINDOWS_1258,        CS_WINDOWS_1258},
        {C_KOI8_R,              CS_KOI8_R},
+       {C_MACCYR,              CS_MACCYR},
        {C_KOI8_T,              CS_KOI8_T},
        {C_KOI8_U,              CS_KOI8_U},
        {C_ISO_2022_JP,         CS_ISO_2022_JP},
index d293c9e95c371caef31ff895ee79fbe8f57e7302..bdc6dff5988ee0bb75dc235f58c3cc8a63a53288 100644 (file)
@@ -69,6 +69,7 @@ typedef enum
        C_WINDOWS_1257,
        C_WINDOWS_1258,
        C_KOI8_R,
+       C_MACCYR,
        C_KOI8_T,
        C_KOI8_U,
        C_ISO_2022_JP,
@@ -141,6 +142,8 @@ struct _CodeConverter
 #define CS_WINDOWS_1257                "Windows-1257"
 #define CS_WINDOWS_1258                "Windows-1258"
 #define CS_KOI8_R              "KOI8-R"
+#define CS_X_MACCYR            "x-mac-cyrillic"
+#define CS_MACCYR              "mac-cyrillic"
 #define CS_KOI8_T              "KOI8-T"
 #define CS_KOI8_U              "KOI8-U"
 #define CS_ISO_2022_JP         "ISO-2022-JP"
index e9ecf08b98518cd12e6fdc13401f5ed91a08fc2e..d4156cae0eeaa8459c430e82d50364fe563a92d4 100644 (file)
@@ -737,6 +737,7 @@ static GtkRadioActionEntry compose_radio_enc_entries[] =
        ENC_ACTION(CS_ISO_8859_9, C_ISO_8859_9, N_("Turkish (ISO-8859-_9)")), /* RADIO compose_set_encoding_cb */
        ENC_ACTION("Cyrillic/"CS_ISO_8859_5, C_ISO_8859_5, "ISO-8859-_5"), /* RADIO compose_set_encoding_cb */
        ENC_ACTION("Cyrillic/"CS_KOI8_R, C_KOI8_R, "KOI8-_R"), /* RADIO compose_set_encoding_cb */
+       ENC_ACTION("Cyrillic/"CS_MACCYR, C_MACCYR, "MAC_CYR"), /* RADIO compose_set_encoding_cb */
        ENC_ACTION("Cyrillic/"CS_KOI8_U, C_KOI8_U, "KOI8-_U"), /* RADIO compose_set_encoding_cb */
        ENC_ACTION("Cyrillic/"CS_WINDOWS_1251, C_WINDOWS_1251, "Windows-1251"), /* RADIO compose_set_encoding_cb */
        ENC_ACTION("Japanese/"CS_ISO_2022_JP, C_ISO_2022_JP, "ISO-2022-_JP"), /* RADIO compose_set_encoding_cb */
@@ -7658,6 +7659,7 @@ static Compose *compose_create(PrefsAccount *account,
        MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Options/Encoding", "Cyrillic", "Options/Encoding/Cyrillic", GTK_UI_MANAGER_MENU)
        MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Options/Encoding/Cyrillic", CS_ISO_8859_5, "Options/Encoding/Cyrillic/"CS_ISO_8859_5, GTK_UI_MANAGER_MENUITEM)
        MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Options/Encoding/Cyrillic", CS_KOI8_R, "Options/Encoding/Cyrillic/"CS_KOI8_R, GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Options/Encoding/Cyrillic", CS_MACCYR, "Options/Encoding/Cyrillic/"CS_MACCYR, GTK_UI_MANAGER_MENUITEM)
        MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Options/Encoding/Cyrillic", CS_KOI8_U, "Options/Encoding/Cyrillic/"CS_KOI8_U, GTK_UI_MANAGER_MENUITEM)
        MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Options/Encoding/Cyrillic", CS_WINDOWS_1251, "Options/Encoding/Cyrillic/"CS_WINDOWS_1251, GTK_UI_MANAGER_MENUITEM)
 
@@ -8334,6 +8336,7 @@ static void compose_set_out_encoding(Compose *compose)
                case C_WINDOWS_1256: branch = "Menu/Options/Encoding/Arabic/" CS_WINDOWS_1256; break;
                case C_ISO_8859_5: branch = "Menu/Options/Encoding/Cyrillic/" CS_ISO_8859_5; break;
                case C_KOI8_R: branch = "Menu/Options/Encoding/Cyrillic/" CS_KOI8_R; break;
+               case C_MACCYR: branch = "Menu/Options/Encoding/Cyrillic/" CS_MACCYR; break;
                case C_KOI8_U: branch = "Menu/Options/Encoding/Cyrillic/" CS_KOI8_U; break;
                case C_WINDOWS_1251: branch = "Menu/Options/Encoding/Cyrillic/" CS_WINDOWS_1251; break;
                case C_ISO_2022_JP: branch = "Menu/Options/Encoding/Japanese/" CS_ISO_2022_JP; break;
index 02d36e0ae554b7a6f8b8c2cc858d018033c8997a..63e11da8abe1513e0201977b578589027995b745 100644 (file)
@@ -97,6 +97,7 @@ static char *CONTRIBS_LIST[] = {
 "H. Merijn Brand",
 "Eugene Brevdo",
 "Sean Buckheister",
+"Anton Butanaev",
 "Henrik Carlqvist",
 "Luca Cavalli",
 "David Chalmers",
index 0e614b7a02433d2b9b4c086990e2f984af9be426..377d1b9e72b9e3993d9f1965a146e9c984051233 100644 (file)
@@ -882,6 +882,7 @@ static GtkRadioActionEntry mainwin_radio_enc_entries[] =
        ENC_ACTION(CS_ISO_8859_9, C_ISO_8859_9, N_("Turkish (ISO-8859-_9)")), /* RADIO set_charset_cb */
        ENC_ACTION("Cyrillic/"CS_ISO_8859_5, C_ISO_8859_5, "ISO-8859-_5"), /* RADIO set_charset_cb */
        ENC_ACTION("Cyrillic/"CS_KOI8_R, C_KOI8_R, "KOI8-_R"), /* RADIO set_charset_cb */
+       ENC_ACTION("Cyrillic/"CS_MACCYR, C_MACCYR, "MAC_CYR"), /* RADIO set_charset_cb */
        ENC_ACTION("Cyrillic/"CS_KOI8_U, C_KOI8_U, "KOI8-_U"), /* RADIO set_charset_cb */
        ENC_ACTION("Cyrillic/"CS_WINDOWS_1251, C_WINDOWS_1251, "Windows-1251"), /* RADIO set_charset_cb */
        ENC_ACTION("Japanese/"CS_ISO_2022_JP, C_ISO_2022_JP, "ISO-2022-_JP"), /* RADIO set_charset_cb */
@@ -1672,6 +1673,7 @@ MainWindow *main_window_create()
        MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/View/Encoding", "Cyrillic", "View/Encoding/Cyrillic", GTK_UI_MANAGER_MENU)
        MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/View/Encoding/Cyrillic", CS_ISO_8859_5, "View/Encoding/Cyrillic/"CS_ISO_8859_5, GTK_UI_MANAGER_MENUITEM)
        MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/View/Encoding/Cyrillic", CS_KOI8_R, "View/Encoding/Cyrillic/"CS_KOI8_R, GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/View/Encoding/Cyrillic", CS_MACCYR, "View/Encoding/Cyrillic/"CS_MACCYR, GTK_UI_MANAGER_MENUITEM)
        MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/View/Encoding/Cyrillic", CS_KOI8_U, "View/Encoding/Cyrillic/"CS_KOI8_U, GTK_UI_MANAGER_MENUITEM)
        MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/View/Encoding/Cyrillic", CS_WINDOWS_1251, "View/Encoding/Cyrillic/"CS_WINDOWS_1251, GTK_UI_MANAGER_MENUITEM)
 
index 6618c8b314bbd75e80d0c546a285848aee7da08a..e6fc2ad7b44228658b9154457e304205ea4bf3e0 100644 (file)
@@ -366,6 +366,7 @@ static GtkRadioActionEntry msgview_radio_enc_entries[] =
        ENC_ACTION(CS_ISO_8859_9, C_ISO_8859_9, N_("Turkish (ISO-8859-_9)")), /* RADIO set_charset_cb */
        ENC_ACTION("Cyrillic/"CS_ISO_8859_5, C_ISO_8859_5, "ISO-8859-_5"), /* RADIO set_charset_cb */
        ENC_ACTION("Cyrillic/"CS_KOI8_R, C_KOI8_R, "KOI8-_R"), /* RADIO set_charset_cb */
+       ENC_ACTION("Cyrillic/"CS_MACCYR, C_MACCYR, "MAC_CYR"), /* RADIO set_charset_cb */
        ENC_ACTION("Cyrillic/"CS_KOI8_U, C_KOI8_U, "KOI8-_U"), /* RADIO set_charset_cb */
        ENC_ACTION("Cyrillic/"CS_WINDOWS_1251, C_WINDOWS_1251, "Windows-1251"), /* RADIO set_charset_cb */
        ENC_ACTION("Japanese/"CS_ISO_2022_JP, C_ISO_2022_JP, "ISO-2022-_JP"), /* RADIO set_charset_cb */
@@ -572,6 +573,7 @@ static void messageview_add_toolbar(MessageView *msgview, GtkWidget *window)
        MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/View/Encoding", "Cyrillic", "View/Encoding/Cyrillic", GTK_UI_MANAGER_MENU)
        MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/View/Encoding/Cyrillic", CS_ISO_8859_5, "View/Encoding/Cyrillic/"CS_ISO_8859_5, GTK_UI_MANAGER_MENUITEM)
        MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/View/Encoding/Cyrillic", CS_KOI8_R, "View/Encoding/Cyrillic/"CS_KOI8_R, GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/View/Encoding/Cyrillic", CS_MACCYR, "View/Encoding/Cyrillic/"CS_MACCYR, GTK_UI_MANAGER_MENUITEM)
        MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/View/Encoding/Cyrillic", CS_KOI8_U, "View/Encoding/Cyrillic/"CS_KOI8_U, GTK_UI_MANAGER_MENUITEM)
        MENUITEM_ADDUI_MANAGER(msgview->ui_manager, "/Menu/View/Encoding/Cyrillic", CS_WINDOWS_1251, "View/Encoding/Cyrillic/"CS_WINDOWS_1251, GTK_UI_MANAGER_MENUITEM)
 
index ee8f876c4f7f5702679d4f271eb58a1d5f427179..b76ac9b6554b78e8c9319c42d416b4caa26a2501 100644 (file)
@@ -242,6 +242,7 @@ static void prefs_send_create_widget(PrefsPage *_page, GtkWindow *window,
        SET_MENUITEM(NULL, NULL);
        SET_MENUITEM(_("Cyrillic (ISO-8859-5)"),         CS_ISO_8859_5);
        SET_MENUITEM(_("Cyrillic (KOI8-R)"),             CS_KOI8_R);
+       SET_MENUITEM(_("Cyrillic (X-MAC-CYRILLIC)"),             CS_MACCYR);
        SET_MENUITEM(_("Cyrillic (KOI8-U)"),             CS_KOI8_U);
        SET_MENUITEM(_("Cyrillic (Windows-1251)"),       CS_WINDOWS_1251);
        SET_MENUITEM(NULL, NULL);
index 20401d86c52d16653f93f3456e9f0aa32b5f69cb..78ef1926a300106dcedae3d8b304bd95b1b82116 100644 (file)
@@ -1269,6 +1269,8 @@ EncodingType procmime_get_encoding_for_charset(const gchar *charset)
                return ENC_7BIT;
        else if (!g_ascii_strcasecmp(charset, "ISO-8859-5") ||
                 !g_ascii_strncasecmp(charset, "KOI8-", 5) ||
+                !g_ascii_strcasecmp(charset, "X-MAC-CYRILLIC") ||
+                !g_ascii_strcasecmp(charset, "MACCYRILLIC") ||
                 !g_ascii_strcasecmp(charset, "Windows-1251"))
                return ENC_8BIT;
        else if (!g_ascii_strncasecmp(charset, "ISO-8859-", 9))