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 }