Mercurial > hg > Applications > mh
comparison 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 |
comparison
equal
deleted
inserted
replaced
6:d802748a597d | 7:c20e4181370f |
---|---|
414 coding_system_t coding; | 414 coding_system_t coding; |
415 | 415 |
416 if ((s == NULL) || ((coding = CSL_FILE(ml_coding_info)) == CS_NOCONV)) | 416 if ((s == NULL) || ((coding = CSL_FILE(ml_coding_info)) == CS_NOCONV)) |
417 return(s); | 417 return(s); |
418 | 418 |
419 ml_conv_sbr(s, coding, CE_UNKNOWN); | 419 ml_conv_sbr(s, coding, CE_UNKNOWN, 0); |
420 return(s); | 420 return(s); |
421 } | 421 } |
422 | 422 |
423 char * | 423 char * |
424 ml_conv_decode(s,encode) | 424 ml_conv_decode(s,encode,charset) |
425 char *s; | 425 char *s; |
426 int encode; | 426 int encode,charset; |
427 { | 427 { |
428 coding_system_t coding; | 428 coding_system_t coding; |
429 | 429 |
430 if ((s == NULL) || ((coding = CSL_FILE(ml_coding_info)) == CS_NOCONV)) | 430 if ((s == NULL) || ((coding = CSL_FILE(ml_coding_info)) == CS_NOCONV)) |
431 return(s); | 431 return(s); |
432 | 432 |
433 ml_conv_sbr(s, coding, encode); | 433 ml_conv_sbr(s, coding, encode, charset); |
434 return(s); | 434 return(s); |
435 } | 435 } |
436 | 436 |
437 /* | 437 /* |
438 Convert to EUC | 438 Convert to EUC |
451 } | 451 } |
452 return "-t"; | 452 return "-t"; |
453 } | 453 } |
454 | 454 |
455 static char * | 455 static char * |
456 cs_input_opt(int cs, int encode) | 456 cs_input_opt(int cs, int encode, int input_charset) |
457 { | 457 { |
458 switch(encode) { | 458 switch(encode) { |
459 case CE_BASE64: return "-emB"; | 459 case CE_BASE64: |
460 case CE_QUOTED: return "-emQ"; | 460 if (input_charset==CS_UTF8) |
461 return "-emBW8"; | |
462 return "-emB"; | |
463 case CE_QUOTED: | |
464 if (input_charset==CS_UTF8) | |
465 return "-emQW8"; | |
466 return "-emQ"; | |
461 } | 467 } |
462 switch(cs) { | 468 switch(cs) { |
463 case CS_JIS7: return "-Je"; | 469 case CS_JIS7: return "-Je"; |
464 case CS_JEUC: return "-Ee"; | 470 case CS_JEUC: return "-Ee"; |
465 case CS_SJIS: return "-Se"; | 471 case CS_SJIS: return "-Se"; |
468 } | 474 } |
469 return "-e"; | 475 return "-e"; |
470 } | 476 } |
471 | 477 |
472 static void | 478 static void |
473 ml_conv_sbr(in, cs, encode) | 479 ml_conv_sbr(in, cs, encode, input_charset) |
474 char *in; | 480 char *in; |
475 coding_system_t cs; | 481 coding_system_t cs; |
476 int encode; | 482 int encode, input_charset; |
477 { | 483 { |
478 char *opt = cs_input_opt(cs,encode); | 484 char *opt = cs_input_opt(cs,encode,input_charset); |
479 int len = strlen(in); | 485 int len = strlen(in); |
480 nkf_open((unsigned char *)opt,(unsigned char *)in,len,(unsigned char *)in,len,extend,0); | 486 nkf_open((unsigned char *)opt,(unsigned char *)in,len,(unsigned char *)in,len,extend,0); |
481 nkf_end(); | 487 nkf_end(); |
482 nkf_output[nkf_output_ctr]=0; | 488 nkf_output[nkf_output_ctr]=0; |
483 } | 489 } |