Mercurial > hg > Applications > mh
diff sbr/ml_codeconv.c @ 7:c20e4181370f
utf-8 input assumption in case of base64/utf-8
author | kono |
---|---|
date | Sun, 04 Dec 2005 02:30:39 +0900 |
parents | d802748a597d |
children | 77780b728543 |
line wrap: on
line diff
--- a/sbr/ml_codeconv.c Sat Dec 03 17:50:08 2005 +0900 +++ b/sbr/ml_codeconv.c Sun Dec 04 02:30:39 2005 +0900 @@ -416,21 +416,21 @@ if ((s == NULL) || ((coding = CSL_FILE(ml_coding_info)) == CS_NOCONV)) return(s); - ml_conv_sbr(s, coding, CE_UNKNOWN); + ml_conv_sbr(s, coding, CE_UNKNOWN, 0); return(s); } char * -ml_conv_decode(s,encode) +ml_conv_decode(s,encode,charset) char *s; - int encode; + int encode,charset; { coding_system_t coding; if ((s == NULL) || ((coding = CSL_FILE(ml_coding_info)) == CS_NOCONV)) return(s); - ml_conv_sbr(s, coding, encode); + ml_conv_sbr(s, coding, encode, charset); return(s); } @@ -453,11 +453,17 @@ } static char * -cs_input_opt(int cs, int encode) +cs_input_opt(int cs, int encode, int input_charset) { switch(encode) { - case CE_BASE64: return "-emB"; - case CE_QUOTED: return "-emQ"; + case CE_BASE64: + if (input_charset==CS_UTF8) + return "-emBW8"; + return "-emB"; + case CE_QUOTED: + if (input_charset==CS_UTF8) + return "-emQW8"; + return "-emQ"; } switch(cs) { case CS_JIS7: return "-Je"; @@ -470,12 +476,12 @@ } static void -ml_conv_sbr(in, cs, encode) +ml_conv_sbr(in, cs, encode, input_charset) char *in; coding_system_t cs; - int encode; + int encode, input_charset; { - char *opt = cs_input_opt(cs,encode); + char *opt = cs_input_opt(cs,encode,input_charset); int len = strlen(in); nkf_open((unsigned char *)opt,(unsigned char *)in,len,(unsigned char *)in,len,extend,0); nkf_end();