talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

codeconv.h (5907B)


      1 /*
      2  * Claws Mail -- a GTK based, lightweight, and fast e-mail client
      3  * Copyright (C) 1999-2012 Hiroyuki Yamamoto and the Claws Mail team
      4  *
      5  * This program is free software; you can redistribute it and/or modify
      6  * it under the terms of the GNU General Public License as published by
      7  * the Free Software Foundation; either version 3 of the License, or
      8  * (at your option) any later version.
      9  *
     10  * This program is distributed in the hope that it will be useful,
     11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13  * GNU General Public License for more details.
     14  *
     15  * You should have received a copy of the GNU General Public License
     16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
     17  *
     18  */
     19 
     20 #ifndef __CODECONV_H__
     21 #define __CODECONV_H__
     22 
     23 #include <glib.h>
     24 #include <iconv.h>
     25 
     26 typedef struct _CodeConverter	CodeConverter;
     27 
     28 typedef enum
     29 {
     30 	C_UNINITIALIZED,
     31 	C_AUTO,
     32 	C_US_ASCII,
     33 	C_UTF_8,
     34 	C_UTF_7,
     35 	C_ISO_8859_1,
     36 	C_ISO_8859_2,
     37 	C_ISO_8859_3,
     38 	C_ISO_8859_4,
     39 	C_ISO_8859_5,
     40 	C_ISO_8859_6,
     41 	C_ISO_8859_7,
     42 	C_ISO_8859_8,
     43 	C_ISO_8859_9,
     44 	C_ISO_8859_10,
     45 	C_ISO_8859_11,
     46 	C_ISO_8859_13,
     47 	C_ISO_8859_14,
     48 	C_ISO_8859_15,
     49 	C_BALTIC,
     50 	C_CP1250,
     51 	C_CP1251,
     52 	C_CP1252,
     53 	C_CP1253,
     54 	C_CP1254,
     55 	C_CP1255,
     56 	C_CP1256,
     57 	C_CP1257,
     58 	C_CP1258,
     59 	C_WINDOWS_1250,
     60 	C_WINDOWS_1251,
     61 	C_WINDOWS_1252,
     62 	C_WINDOWS_1253,
     63 	C_WINDOWS_1254,
     64 	C_WINDOWS_1255,
     65 	C_WINDOWS_1256,
     66 	C_WINDOWS_1257,
     67 	C_WINDOWS_1258,
     68 	C_KOI8_R,
     69 	C_MACCYR,
     70 	C_KOI8_T,
     71 	C_KOI8_U,
     72 	C_ISO_2022_JP,
     73 	C_ISO_2022_JP_2,
     74 	C_ISO_2022_JP_3,
     75 	C_EUC_JP,
     76 	C_EUC_JP_MS,
     77 	C_SHIFT_JIS,
     78 	C_ISO_2022_KR,
     79 	C_EUC_KR,
     80 	C_ISO_2022_CN,
     81 	C_EUC_CN,
     82 	C_GB18030,
     83 	C_GB2312,
     84 	C_GBK,
     85 	C_EUC_TW,
     86 	C_BIG5,
     87 	C_BIG5_HKSCS,
     88 	C_TIS_620,
     89 	C_WINDOWS_874,
     90 	C_GEORGIAN_PS,
     91 	C_TCVN5712_1
     92 } CharSet;
     93 
     94 typedef gint (*CodeConvFunc) (gchar *outbuf, gint outlen, const gchar *inbuf);
     95 
     96 struct _CodeConverter
     97 {
     98 	CodeConvFunc code_conv_func;
     99 	gchar *charset_str;
    100 	CharSet charset;
    101 };
    102 
    103 #define CS_AUTO			"AUTO"
    104 #define CS_US_ASCII		"US-ASCII"
    105 #define CS_ANSI_X3_4_1968	"ANSI_X3.4-1968"
    106 #define CS_UTF_8		"UTF-8"
    107 #define CS_UTF_7		"UTF-7"
    108 #define CS_ISO_8859_1		"ISO-8859-1"
    109 #define CS_ISO_8859_2		"ISO-8859-2"
    110 #define CS_ISO_8859_3		"ISO-8859-3"
    111 #define CS_ISO_8859_4		"ISO-8859-4"
    112 #define CS_ISO_8859_5		"ISO-8859-5"
    113 #define CS_ISO_8859_6		"ISO-8859-6"
    114 #define CS_ISO_8859_7		"ISO-8859-7"
    115 #define CS_ISO_8859_8		"ISO-8859-8"
    116 #define CS_ISO_8859_8_I	"ISO-8859-8-I"
    117 #define CS_ISO_8859_9		"ISO-8859-9"
    118 #define CS_ISO_8859_10		"ISO-8859-10"
    119 #define CS_ISO_8859_11		"ISO-8859-11"
    120 #define CS_ISO_8859_13		"ISO-8859-13"
    121 #define CS_ISO_8859_14		"ISO-8859-14"
    122 #define CS_ISO_8859_15		"ISO-8859-15"
    123 #define CS_BALTIC		"BALTIC"
    124 #define CS_CP1250		"CP1250"
    125 #define CS_CP1251		"CP1251"
    126 #define CS_CP1252		"CP1252"
    127 #define CS_CP1253		"CP1253"
    128 #define CS_CP1254		"CP1254"
    129 #define CS_CP1255		"CP1255"
    130 #define CS_CP1256		"CP1256"
    131 #define CS_CP1257		"CP1257"
    132 #define CS_CP1258		"CP1258"
    133 #define CS_WINDOWS_1250		"Windows-1250"
    134 #define CS_WINDOWS_1251		"Windows-1251"
    135 #define CS_WINDOWS_1252		"Windows-1252"
    136 #define CS_WINDOWS_1253		"Windows-1253"
    137 #define CS_WINDOWS_1254		"Windows-1254"
    138 #define CS_WINDOWS_1255		"Windows-1255"
    139 #define CS_WINDOWS_1256		"Windows-1256"
    140 #define CS_WINDOWS_1257		"Windows-1257"
    141 #define CS_WINDOWS_1258		"Windows-1258"
    142 #define CS_KOI8_R		"KOI8-R"
    143 #define CS_X_MACCYR		"x-mac-cyrillic"
    144 #define CS_MACCYR		"Mac-Cyrillic"
    145 #define CS_KOI8_T		"KOI8-T"
    146 #define CS_KOI8_U		"KOI8-U"
    147 #define CS_ISO_2022_JP		"ISO-2022-JP"
    148 #define CS_ISO_2022_JP_2	"ISO-2022-JP-2"
    149 #define CS_ISO_2022_JP_3	"ISO-2022-JP-3"
    150 #define CS_EUC_JP		"EUC-JP"
    151 #define CS_EUCJP		"EUCJP"
    152 #define CS_EUC_JP_MS		"EUC-JP-MS"
    153 #define CS_SHIFT_JIS		"Shift_JIS"
    154 #define CS_SHIFT__JIS		"SHIFT-JIS"
    155 #define CS_SJIS			"SJIS"
    156 #define CS_X_SJIS		"X-SJIS"
    157 #define CS_ISO_2022_KR		"ISO-2022-KR"
    158 #define CS_EUC_KR		"EUC-KR"
    159 #define CS_ISO_2022_CN		"ISO-2022-CN"
    160 #define CS_EUC_CN		"EUC-CN"
    161 #define CS_GB18030		"GB18030"
    162 #define CS_GB2312		"GB2312"
    163 #define CS_GBK			"GBK"
    164 #define CS_X_GBK		"X-GBK"
    165 #define CS_EUC_TW		"EUC-TW"
    166 #define CS_BIG5			"Big5"
    167 #define CS_BIG5_HKSCS		"BIG5-HKSCS"
    168 #define CS_TIS_620		"TIS-620"
    169 #define CS_WINDOWS_874		"Windows-874"
    170 #define CS_GEORGIAN_PS		"GEORGIAN-PS"
    171 #define CS_TCVN5712_1		"TCVN5712-1"
    172 #define CS_X_VIET_VPS		"X-VIET-VPS"
    173 
    174 #define C_INTERNAL		C_UTF_8
    175 #define CS_INTERNAL		CS_UTF_8
    176 
    177 void conv_utf8todisp	(gchar *outbuf, gint outlen, const gchar *inbuf);
    178 void conv_localetodisp	(gchar *outbuf, gint outlen, const gchar *inbuf);
    179 
    180 CodeConverter *conv_code_converter_new	(const gchar	*src_charset);
    181 void conv_code_converter_destroy	(CodeConverter	*conv);
    182 gint conv_convert			(CodeConverter	*conv,
    183 					 gchar		*outbuf,
    184 					 gint		 outlen,
    185 					 const gchar	*inbuf);
    186 
    187 gchar *conv_codeset_strdup		(const gchar	*inbuf,
    188 					 const gchar	*src_code,
    189 					 const gchar	*dest_code);
    190 
    191 const gchar *conv_get_charset_str		(CharSet	 charset);
    192 CharSet conv_get_charset_from_str		(const gchar	*charset);
    193 const gchar *conv_get_locale_charset_str	(void);
    194 const gchar *conv_get_locale_charset_str_no_utf8(void);
    195 const gchar *conv_get_outgoing_charset_str	(void);
    196 
    197 const gchar *conv_get_current_locale		(void);
    198 
    199 gchar *conv_unmime_header		(const gchar	*str,
    200 					  const gchar	*default_encoding,
    201 					  gboolean	 addr_field);
    202 void conv_encode_header			(gchar		*dest,
    203 					 gint		 len,
    204 					 const gchar	*src,
    205 					 gint		 header_len,
    206 					 gboolean	 addr_field);
    207 void conv_encode_header_full		(gchar		*dest,
    208 					 gint		 len,
    209 					 const gchar	*src,
    210 					 gint		 header_len,
    211 					 gboolean	 addr_field,
    212 					 const gchar	*out_encoding_);
    213 
    214 gchar *conv_filename_from_utf8		(const gchar	*utf8_file);
    215 gchar *conv_filename_to_utf8		(const gchar	*fs_file);
    216 
    217 void codeconv_set_strict		(gboolean	 mode);
    218 void codeconv_set_allow_jisx0201_kana	(gboolean	 allow);
    219 void codeconv_set_broken_are_utf8	(gboolean	 are);
    220 
    221 #endif /* __CODECONV_H__ */