X-Git-Url: http://git.sourceforge.jp/view?p=nkf%2Fnkf.git;a=blobdiff_plain;f=nkf.c;h=3415fd1e4a7cd3dd5b729a745654397da702c5b9;hp=4e3381fc449fbc85b50ee4039d2c4c4c14300336;hb=13ee2a9f18c23d392ce61c30de7c254c740fd3ff;hpb=9ac098ef8e0412652620dbc253b3102bbe8c54e3 diff --git a/nkf.c b/nkf.c index 4e3381f..3415fd1 100644 --- a/nkf.c +++ b/nkf.c @@ -1,7 +1,7 @@ /** Network Kanji Filter. (PDS Version) ************************************************************************ ** Copyright (C) 1987, Fujitsu LTD. (Itaru ICHIKAWA) -** 連絡先: (株)富士通研究所 ソフト3研 市川 至 +** 連絡先: (株)富士通研究所 ソフト3研 市川 至 ** (E-Mail Address: ichikawa@flab.fujitsu.co.jp) ** Copyright (C) 1996,1998 ** Copyright (C) 2002 @@ -17,86 +17,28 @@ ** バイナリの配布の際にはversion messageを保存することを条件とします。 ** このプログラムについては特に何の保証もしない、悪しからず。 ** -** Everyone is permitted to do anything on this program +** Everyone is permitted to do anything on this program ** including copying, modifying, improving, ** as long as you don't try to pretend that you wrote it. -** i.e., the above copyright notice has to appear in all copies. +** i.e., the above copyright notice has to appear in all copies. ** Binary distribution requires original version messages. ** You don't have to ask before copying, redistribution or publishing. ** THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE. ***********************************************************************/ /*********************************************************************** -** UTF-8 サポートについて -** 従来の nkf と入れかえてそのまま使えるようになっています -** nkf -e などとして起動すると、自動判別で UTF-8 と判定されれば、 -** そのまま euc-jp に変換されます -** -** まだバグがある可能性が高いです。 -** (特に自動判別、コード混在、エラー処理系) -** -** 何か問題を見つけたら、 -** E-Mail: furukawa@tcp-ip.or.jp -** まで御連絡をお願いします。 + * 現在、nkf は SorceForge にてメンテナンスが続けられています。 + * http://sourceforge.jp/projects/nkf/ ***********************************************************************/ -/* $Id: nkf.c,v 1.134 2007/09/19 13:06:23 naruse Exp $ */ +/* $Id: nkf.c,v 1.138 2007/10/01 19:55:25 naruse Exp $ */ #define NKF_VERSION "2.0.8" -#define NKF_RELEASE_DATE "2007-09-19" -#include "config.h" -#include "utf8tbl.h" - +#define NKF_RELEASE_DATE "2007-10-01" #define COPY_RIGHT \ "Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa),2000 S. Kono, COW\n" \ "Copyright (C) 2002-2007 Kono, Furukawa, Naruse, mastodon" - -/* -** -** -** -** USAGE: nkf [flags] [file] -** -** Flags: -** b Output is buffered (DEFAULT) -** u Output is unbuffered -** -** t no operation -** -** j Output code is JIS 7 bit (DEFAULT SELECT) -** s Output code is MS Kanji (DEFAULT SELECT) -** e Output code is AT&T JIS (DEFAULT SELECT) -** w Output code is AT&T JIS (DEFAULT SELECT) -** l Output code is JIS 7bit and ISO8859-1 Latin-1 -** -** m MIME conversion for ISO-2022-JP -** I Convert non ISO-2022-JP charactor to GETA by Pekoe -** i_ Output sequence to designate JIS-kanji (DEFAULT_J) -** o_ Output sequence to designate single-byte roman characters (DEFAULT_R) -** M MIME output conversion -** -** r {de/en}crypt ROT13/47 -** -** v display Version -** -** T Text mode output (for MS-DOS) -** -** x Do not convert X0201 kana into X0208 -** Z Convert X0208 alphabet to ASCII -** -** f60 fold option -** -** m MIME decode -** B try to fix broken JIS, missing Escape -** B[1-9] broken level -** -** O Output to 'nkf.out' file or last file name -** d Delete \r in line feed -** c Add \r in line feed -** -- other long option -** -- ignore following option (don't use with -O ) -** -**/ - +#include "config.h" +#include "utf8tbl.h" #if (defined(__TURBOC__) || defined(_MSC_VER) || defined(LSI_C) || defined(__MINGW32__) || defined(__EMX__) || defined(__MSDOS__) || defined(__WINDOWS__) || defined(__DOS__) || defined(__OS2__)) && !defined(MSDOS) #define MSDOS #if (defined(__Win32__) || defined(_WIN32)) && !defined(__WIN32__) @@ -196,7 +138,7 @@ void djgpp_setbinmode(FILE *fp) #define FALSE 0 #define TRUE 1 -/* state of output_mode and input_mode +/* state of output_mode and input_mode c2 0 means ASCII X0201 @@ -249,10 +191,10 @@ void djgpp_setbinmode(FILE *fp) #define BS 0x08 #define TAB 0x09 -#define NL 0x0a +#define LF 0x0a #define CR 0x0d #define ESC 0x1b -#define SPACE 0x20 +#define SP 0x20 #define AT 0x40 #define SSP 0xa0 #define DEL 0x7f @@ -260,6 +202,7 @@ void djgpp_setbinmode(FILE *fp) #define SO 0x0e #define SSO 0x8e #define SS3 0x8f +#define CRLF 0x0D0A #define is_alnum(c) \ (('a'<=c && c<='z')||('A'<= c && c<='Z')||('0'<=c && c<='9')) @@ -269,15 +212,15 @@ void djgpp_setbinmode(FILE *fp) #define nkf_isoctal(c) ('0'<=c && c<='7') #define nkf_isdigit(c) ('0'<=c && c<='9') #define nkf_isxdigit(c) (nkf_isdigit(c) || ('a'<=c && c<='f') || ('A'<=c && c <= 'F')) -#define nkf_isblank(c) (c == SPACE || c == TAB) -#define nkf_isspace(c) (nkf_isblank(c) || c == CR || c == NL) +#define nkf_isblank(c) (c == SP || c == TAB) +#define nkf_isspace(c) (nkf_isblank(c) || c == CR || c == LF) #define nkf_isalpha(c) (('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')) #define nkf_isalnum(c) (nkf_isdigit(c) || nkf_isalpha(c)) -#define nkf_isprint(c) (' '<=c && c<='~') +#define nkf_isprint(c) (SP<=c && c<='~') #define nkf_isgraph(c) ('!'<=c && c<='~') #define hex2bin(c) (('0'<=c&&c<='9') ? (c-'0') : \ ('A'<=c&&c<='F') ? (c-'A'+10) : \ - ('a'<=c&&c<='f') ? (c-'a'+10) : 0 ) + ('a'<=c&&c<='f') ? (c-'a'+10) : 0) #define bin2hex(c) ("0123456789ABCDEF"[c&15]) #define is_eucg3(c2) (((unsigned short)c2 >> 8) == SS3) @@ -331,7 +274,7 @@ struct input_code{ int _file_stat; }; -static char *input_codename = ""; +static char *input_codename = NULL; /* NULL: unestablished, "": BINARY */ #ifndef PERL_XS static const char *CopyRight = COPY_RIGHT; @@ -398,7 +341,7 @@ static nkf_char e2s_conv(nkf_char c2, nkf_char c1, nkf_char *p2, nkf_char * static void s_oconv(nkf_char c2,nkf_char c1); static void j_oconv(nkf_char c2,nkf_char c1); static void fold_conv(nkf_char c2,nkf_char c1); -static void cr_conv(nkf_char c2,nkf_char c1); +static void nl_conv(nkf_char c2,nkf_char c1); static void z_conv(nkf_char c2,nkf_char c1); static void rot_conv(nkf_char c2,nkf_char c1); static void hira_conv(nkf_char c2,nkf_char c1); @@ -456,7 +399,7 @@ static int hold_count = 0; /* MIME preprocessor fifo */ #define MIME_BUF_SIZE (1024) /* 2^n ring buffer */ -#define MIME_BUF_MASK (MIME_BUF_SIZE-1) +#define MIME_BUF_MASK (MIME_BUF_SIZE-1) #define Fifo(n) mime_buf[(n)&MIME_BUF_MASK] static unsigned char mime_buf[MIME_BUF_SIZE]; static unsigned int mime_top = 0; @@ -479,7 +422,7 @@ static int mimebuf_f = FALSE; /* MIME buffered input */ static int broken_f = FALSE; /* convert ESC-less broken JIS */ static int iso8859_f = FALSE; /* ISO8859 through */ static int mimeout_f = FALSE; /* base64 mode */ -#if defined(MSDOS) || defined(__OS2__) +#if defined(MSDOS) || defined(__OS2__) static int x0201_f = TRUE; /* Assume JISX0201 kana */ #else static int x0201_f = NO_X0201; /* Assume NO JISX0201 */ @@ -543,7 +486,6 @@ static void print_guessed_code(char *filename); #endif static void set_input_codename(char *codename); static int is_inputcode_mixed = FALSE; -static int is_inputcode_set = FALSE; #ifdef EXEC_IO static int exec_f = 0; @@ -637,7 +579,7 @@ static nkf_char (*iconv)(nkf_char c2,nkf_char c1,nkf_char c0) = no_connection2; static void (*o_zconv)(nkf_char c2,nkf_char c1) = no_connection; static void (*o_fconv)(nkf_char c2,nkf_char c1) = no_connection; -static void (*o_crconv)(nkf_char c2,nkf_char c1) = no_connection; +static void (*o_nlconv)(nkf_char c2,nkf_char c1) = no_connection; static void (*o_rot_conv)(nkf_char c2,nkf_char c1) = no_connection; static void (*o_hira_conv)(nkf_char c2,nkf_char c1) = no_connection; static void (*o_base64conv)(nkf_char c2,nkf_char c1) = no_connection; @@ -754,7 +696,6 @@ static const unsigned char fv[] = { } ; -#define CRLF 1 static int file_out_f = FALSE; #ifdef OVERWRITE @@ -765,8 +706,9 @@ static char *backup_suffix = ""; static char *get_backup_filename(const char *suffix, const char *filename); #endif -static int crmode_f = 0; /* CR, NL, CRLF */ -static nkf_char prev_cr = 0; +static int nlmode_f = 0; /* CR, LF, CRLF */ +static int input_nextline = 0; /* 0: unestablished, EOF: MIXED */ +static nkf_char prev_cr = 0; /* CR or 0 */ #ifdef EASYWIN /*Easy Win */ static int end_check; #endif /*Easy Win */ @@ -827,7 +769,7 @@ int main(int argc, char **argv) if (binmode_f == TRUE) #if defined(__OS2__) && (defined(__IBMC__) || defined(__IBMCPP__)) - if (freopen("","wb",stdout) == NULL) + if (freopen("","wb",stdout) == NULL) return (-1); #else setbinmode(stdout); @@ -857,8 +799,7 @@ int main(int argc, char **argv) int is_argument_error = FALSE; while (argc--) { is_inputcode_mixed = FALSE; - is_inputcode_set = FALSE; - input_codename = ""; + input_codename = NULL; #ifdef CHECK_OPTION iconv_for_check = 0; #endif @@ -913,7 +854,7 @@ int main(int argc, char **argv) } }else #endif - if(argc == 1 ) { + if(argc == 1) { outfname = *argv++; argc--; } else { @@ -926,7 +867,7 @@ int main(int argc, char **argv) } if (binmode_f == TRUE) { #if defined(__OS2__) && (defined(__IBMC__) || defined(__IBMCPP__)) - if (freopen("","wb",stdout) == NULL) + if (freopen("","wb",stdout) == NULL) return (-1); #else setbinmode(stdout); @@ -935,11 +876,11 @@ int main(int argc, char **argv) } if (binmode_f == TRUE) #if defined(__OS2__) && (defined(__IBMC__) || defined(__IBMCPP__)) - if (freopen("","rb",fin) == NULL) + if (freopen("","rb",fin) == NULL) return (-1); #else setbinmode(fin); -#endif +#endif setvbuffer(fin, (char *) stdibuf, IOBUF_SIZE); if (nop_f) noconvert(fin); @@ -1018,12 +959,12 @@ int main(int argc, char **argv) return(-1); } #ifdef EASYWIN /*Easy Win */ - if (file_out_f == FALSE) + if (file_out_f == FALSE) scanf("%d",&end_check); - else + else fclose(stdout); #else /* for Other OS */ - if (file_out_f == TRUE) + if (file_out_f == TRUE) fclose(stdout); #endif /*Easy Win */ return (0); @@ -1171,27 +1112,27 @@ void options(unsigned char *cp) p = 0; switch (*cp++) { case '-': /* literal options */ - if (!*cp || *cp == SPACE) { /* ignore the rest of arguments */ + if (!*cp || *cp == SP) { /* ignore the rest of arguments */ option_mode = 1; return; } for (i=0;ihiragana bit:2 hiragana->katakana */ - if ('9'>= *cp && *cp>='0') + if ('9'>= *cp && *cp>='0') hira_f |= (*cp++ -'0'); - else + else hira_f |= 1; continue; case 'r': rot_f = TRUE; continue; -#if defined(MSDOS) || defined(__OS2__) +#if defined(MSDOS) || defined(__OS2__) case 'T': binmode_f = FALSE; continue; @@ -1818,11 +1759,11 @@ void options(unsigned char *cp) ESC-(-I in JIS, EUC, MS Kanji SI/SO in JIS, EUC, MS Kanji SSO in EUC, JIS, not in MS Kanji - MS Kanji (0xa0-0xdf) + MS Kanji (0xa0-0xdf) output X0201 ESC-(-I in JIS (0x20-0x5f) SSO in EUC (0xa0-0xdf) - 0xa0-0xd in MS Kanji (0xa0-0xdf) + 0xa0-0xd in MS Kanji (0xa0-0xdf) */ continue; case 'X': /* Assume X0201 kana */ @@ -1838,7 +1779,7 @@ void options(unsigned char *cp) fold_len *= 10; fold_len += *cp++ - '0'; } - if (!(0= *cp && *cp>='0') + if ('9'>= *cp && *cp>='0') broken_f |= 1<<(*cp++ -'0'); - else + else broken_f |= TRUE; continue; #ifndef PERL_XS @@ -1890,23 +1831,23 @@ void options(unsigned char *cp) continue; #endif case 'c':/* add cr code */ - crmode_f = CRLF; + nlmode_f = CRLF; continue; case 'd':/* delete cr code */ - crmode_f = NL; + nlmode_f = LF; continue; case 'I': /* ISO-2022-JP output */ iso2022jp_f = TRUE; continue; case 'L': /* line mode */ if (*cp=='u') { /* unix */ - crmode_f = NL; cp++; + nlmode_f = LF; cp++; } else if (*cp=='m') { /* mac */ - crmode_f = CR; cp++; + nlmode_f = CR; cp++; } else if (*cp=='w') { /* windows */ - crmode_f = CRLF; cp++; + nlmode_f = CRLF; cp++; } else if (*cp=='0') { /* no conversion */ - crmode_f = 0; cp++; + nlmode_f = 0; cp++; } continue; case 'g': @@ -1914,7 +1855,7 @@ void options(unsigned char *cp) guess_f = TRUE; #endif continue; - case ' ': + case SP: /* module muliple options in a string are allowed for Perl moudle */ while(*cp && *cp++!='-'); continue; @@ -1960,7 +1901,7 @@ void set_iconv(nkf_char f, nkf_char (*iconv_func)(nkf_char c2,nkf_char c1,nkf_ch struct input_code *p = find_inputcode_byfunc(iconv); if (p){ set_input_codename(p->name); - debug(input_codename); + debug(p->name); } iconv_for_check = iconv; } @@ -2321,7 +2262,7 @@ nkf_char noconvert(FILE *f) void module_connection(void) { - oconv = output_conv; + oconv = output_conv; o_putc = std_putc; /* replace continucation module, from output side */ @@ -2341,8 +2282,8 @@ void module_connection(void) /* base64_count = 0; */ } - if (crmode_f) { - o_crconv = oconv; oconv = cr_conv; + if (nlmode_f || guess_f) { + o_nlconv = oconv; oconv = nl_conv; } if (rot_f) { o_rot_conv = oconv; oconv = rot_conv; @@ -2530,7 +2471,7 @@ void check_bom(FILE *f) } /* - Conversion main loop. Code detection only. + Conversion main loop. Code detection only. */ nkf_char kanji_convert(FILE *f) @@ -2569,9 +2510,9 @@ nkf_char kanji_convert(FILE *f) if (!estab_f&&!mime_decode_mode) { /* in case of not established yet */ /* It is still ambiguious */ - if (h_conv(f, c2, c1)==EOF) + if (h_conv(f, c2, c1)==EOF) LAST; - else + else c2 = 0; NEXT; } else { @@ -2587,7 +2528,7 @@ nkf_char kanji_convert(FILE *f) } else /* second byte, 7 bit code */ /* it might be kanji shitfted */ - if ((c1 == DEL) || (c1 <= SPACE)) { + if ((c1 == DEL) || (c1 <= SP)) { /* ignore bogus first code */ c2 = 0; NEXT; @@ -2702,14 +2643,14 @@ nkf_char kanji_convert(FILE *f) NEXT; } } - } else if ((c1 > SPACE) && (c1 != DEL)) { + } else if ((c1 > SP) && (c1 != DEL)) { /* in case of Roman characters */ - if (shift_mode) { + if (shift_mode) { /* output 1 shifted byte */ if (iso8859_f) { c2 = ISO8859_1; SEND; - } else if (SPACE<=c1 && c1<(0xe0&0x7f) ){ + } else if (SP <= c1 && c1 < (0xe0&0x7f)){ /* output 1 shifted byte */ if(iso2022jp_f && x0201_f==NO_X0201) { (*oconv)(GETA1, GETA2); @@ -2727,7 +2668,7 @@ nkf_char kanji_convert(FILE *f) /* in case of Kanji shifted */ c2 = c1; NEXT; - } else if (c1 == '=' && mime_f && !mime_decode_mode ) { + } else if (c1 == '=' && mime_f && !mime_decode_mode) { /* Check MIME code */ if ((c1 = (*i_getc)(f)) == EOF) { (*oconv)(0, '='); @@ -2736,11 +2677,11 @@ nkf_char kanji_convert(FILE *f) /* =? is mime conversion start sequence */ if(mime_f == STRICT_MIME) { /* check in real detail */ - if (mime_begin_strict(f) == EOF) + if (mime_begin_strict(f) == EOF) LAST; else NEXT; - } else if (mime_begin(f) == EOF) + } else if (mime_begin(f) == EOF) LAST; else NEXT; @@ -2750,14 +2691,14 @@ nkf_char kanji_convert(FILE *f) NEXT; } } else { - /* normal ASCII code */ + /* normal ASCII code */ SEND; } } else if (c1 == SI && (!is_8bit || mime_decode_mode)) { - shift_mode = FALSE; + shift_mode = FALSE; NEXT; } else if (c1 == SO && (!is_8bit || mime_decode_mode)) { - shift_mode = TRUE; + shift_mode = TRUE; NEXT; } else if (c1 == ESC && (!is_8bit || mime_decode_mode)) { if ((c1 = (*i_getc)(f)) == EOF) { @@ -2766,7 +2707,7 @@ nkf_char kanji_convert(FILE *f) } else if (c1 == '$') { if ((c1 = (*i_getc)(f)) == EOF) { /* - (*oconv)(0, ESC); don't send bogus code + (*oconv)(0, ESC); don't send bogus code (*oconv)(0, '$'); */ LAST; } else if (c1 == '@'|| c1 == 'B') { @@ -2775,12 +2716,12 @@ nkf_char kanji_convert(FILE *f) shift_mode = FALSE; set_input_codename("ISO-2022-JP"); #ifdef CHECK_OPTION - debug(input_codename); + debug("ISO-2022-JP"); #endif NEXT; } else if (c1 == '(') { if ((c1 = (*i_getc)(f)) == EOF) { - /* don't send bogus code + /* don't send bogus code (*oconv)(0, ESC); (*oconv)(0, '$'); (*oconv)(0, '('); @@ -2826,7 +2767,7 @@ nkf_char kanji_convert(FILE *f) } } else if (c1 == '(') { if ((c1 = (*i_getc)(f)) == EOF) { - /* don't send bogus code + /* don't send bogus code (*oconv)(0, ESC); (*oconv)(0, '('); */ LAST; @@ -2849,10 +2790,10 @@ nkf_char kanji_convert(FILE *f) SEND; } } - } else if ( c1 == 'N' || c1 == 'n' ){ + } else if ( c1 == 'N' || c1 == 'n'){ /* SS2 */ c3 = (*i_getc)(f); /* skip SS2 */ - if ( (SPACE<=c3 && c3 < 0x60) || (0xa0<=c3 && c3 < 0xe0)){ + if ( (SP<=c3 && c3 < 0x60) || (0xa0<=c3 && c3 < 0xe0)){ c1 = c3; c2 = X0201; SEND; @@ -2876,7 +2817,7 @@ nkf_char kanji_convert(FILE *f) /* J-PHONE emoji */ if ((c1 = (*i_getc)(f)) == EOF) { /* - (*oconv)(0, ESC); don't send bogus code + (*oconv)(0, ESC); don't send bogus code (*oconv)(0, '$'); */ LAST; } else { @@ -2890,9 +2831,9 @@ nkf_char kanji_convert(FILE *f) NUM : 2 0 3 4 5 X 1 */ static const char jphone_emoji_first_table[7] = {2, 0, 3, 4, 5, 0, 1}; - c0 = (jphone_emoji_first_table[c1 % 7] << 8) - SPACE + 0xE000 + CLASS_UNICODE; + c0 = (jphone_emoji_first_table[c1 % 7] << 8) - SP + 0xE000 + CLASS_UNICODE; while ((c1 = (*i_getc)(f)) != EOF) { - if (SPACE <= c1 && c1 <= 'z') { + if (SP <= c1 && c1 <= 'z') { (*oconv)(0, c1 + c0); } else break; /* c1 == SO */ } @@ -2905,32 +2846,32 @@ nkf_char kanji_convert(FILE *f) (*oconv)(0, ESC); SEND; } - } else if (c1 == NL || c1 == CR) { + } else if (c1 == LF || c1 == CR) { if (broken_f&4) { input_mode = ASCII; set_iconv(FALSE, 0); SEND; } else if (mime_decode_f && !mime_decode_mode){ - if (c1 == NL) { - if ((c1=(*i_getc)(f))!=EOF && c1 == SPACE) { - i_ungetc(SPACE,f); + if (c1 == LF) { + if ((c1=(*i_getc)(f))!=EOF && c1 == SP) { + i_ungetc(SP,f); continue; } else { i_ungetc(c1,f); } - c1 = NL; + c1 = LF; SEND; } else { /* if (c1 == CR)*/ if ((c1=(*i_getc)(f))!=EOF) { - if (c1==SPACE) { - i_ungetc(SPACE,f); + if (c1==SP) { + i_ungetc(SP,f); continue; - } else if (c1 == NL && (c1=(*i_getc)(f))!=EOF && c1 == SPACE) { - i_ungetc(SPACE,f); + } else if (c1 == LF && (c1=(*i_getc)(f))!=EOF && c1 == SP) { + i_ungetc(SP,f); continue; } else { i_ungetc(c1,f); } - i_ungetc(NL,f); + i_ungetc(LF,f); } else { i_ungetc(c1,f); } @@ -2938,15 +2879,11 @@ nkf_char kanji_convert(FILE *f) SEND; } } - if (!crmode_f) { - if (prev_cr && c1 == NL) crmode_f = CRLF; - else crmode_f = c1; - } - } else if (c1 == DEL && input_mode == X0208 ) { + } else if (c1 == DEL && input_mode == X0208) { /* CP5022x */ c2 = c1; NEXT; - } else + } else SEND; } /* send: */ @@ -3005,7 +2942,7 @@ nkf_char kanji_convert(FILE *f) /* epilogue */ (*iconv)(EOF, 0, 0); - if (!is_inputcode_set) + if (!input_codename) { if (is_8bit) { struct input_code *p = input_code_list; @@ -3015,6 +2952,9 @@ nkf_char kanji_convert(FILE *f) ++p; } set_input_codename(result->name); +#ifdef CHECK_OPTION + debug(result->name); +#endif } } return 1; @@ -3198,7 +3138,7 @@ nkf_char s2e_conv(nkf_char c2, nkf_char c1, nkf_char *p2, nkf_char *p1) if (0x9E < c1) c2++; } if (c1 < 0x9F) - c1 = c1 - ((c1 > DEL) ? SPACE : 0x1F); + c1 = c1 - ((c1 > DEL) ? SP : 0x1F); else { c1 = c1 - 0x7E; } @@ -3216,7 +3156,7 @@ nkf_char s_iconv(nkf_char c2, nkf_char c1, nkf_char c0) { if (c2 == X0201) { c1 &= 0x7f; - } else if ((c2 == EOF) || (c2 == 0) || c2 < SPACE) { + } else if ((c2 == EOF) || (c2 == 0) || c2 < SP) { /* NOP */ } else if (!x0213_f && 0xF0 <= c2 && c2 <= 0xF9 && 0x40 <= c1 && c1 <= 0xFC) { /* CP932 UDC */ @@ -3264,7 +3204,7 @@ nkf_char e_iconv(nkf_char c2, nkf_char c1, nkf_char c0) } else if (c2 == SSO){ c2 = X0201; c1 &= 0x7f; - } else if ((c2 == EOF) || (c2 == 0) || c2 < SPACE) { + } else if ((c2 == EOF) || (c2 == 0) || c2 < SP) { /* NOP */ } else { if (!cp51932_f && ms_ucs_map_f && 0xF5 <= c2 && c2 <= 0xFE && 0xA1 <= c1 && c1 <= 0xFE) { @@ -3322,7 +3262,7 @@ nkf_char w_iconv(nkf_char c2, nkf_char c1, nkf_char c0) 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 33, 33, 40, 41, 41, 41, 42, 43, 43, 43, 50, 50, 50, 50, 60, 60, 70, 70}; - + if (c2 < 0 || 0xff < c2) { }else if (c2 == 0) { /* 0 : 1 byte*/ c0 = 0; @@ -3858,7 +3798,7 @@ void w_oconv(nkf_char c2, nkf_char c1) } #endif - if (c2 == 0) { + if (c2 == 0) { output_mode = ASCII; (*o_putc)(c1); } else if (c2 == ISO8859_1) { @@ -4017,7 +3957,7 @@ void e_oconv(nkf_char c2, nkf_char c1) if (c2 == EOF) { (*o_putc)(EOF); return; - } else if (c2 == 0) { + } else if (c2 == 0) { output_mode = ASCII; (*o_putc)(c1); } else if (c2 == X0201) { @@ -4263,7 +4203,7 @@ void j_oconv(nkf_char c2, nkf_char c1) (*o_putc)(c1); } else if (c2==ISO8859_1) { /* iso8859 introduction, or 8th bit on */ - /* Can we convert in 7bit form using ESC-'-'-A ? + /* Can we convert in 7bit form using ESC-'-'-A ? Is this popular? */ output_mode = ISO8859_1; (*o_putc)(c1|0x80); @@ -4316,19 +4256,19 @@ nkf_char broken_getc(FILE *f) return broken_buf[--broken_counter]; } c= (*i_bgetc)(f); - if (c=='$' && broken_last != ESC + if (c=='$' && broken_last != ESC && (input_mode==ASCII || input_mode==X0201)) { c1= (*i_bgetc)(f); broken_last = 0; if (c1=='@'|| c1=='B') { - broken_buf[0]=c1; broken_buf[1]=c; + broken_buf[0]=c1; broken_buf[1]=c; broken_counter=2; return ESC; } else { (*i_bungetc)(c1,f); return c; } - } else if (c=='(' && broken_last != ESC + } else if (c=='(' && broken_last != ESC && (input_mode==X0208 || input_mode==X0201)) { /* ) */ c1= (*i_bgetc)(f); broken_last = 0; @@ -4353,46 +4293,41 @@ nkf_char broken_ungetc(nkf_char c, FILE *f) return c; } -void cr_conv(nkf_char c2, nkf_char c1) +void nl_conv(nkf_char c2, nkf_char c1) { - if (prev_cr) { + if (guess_f && input_nextline != EOF) { + if (c2 == 0 && c1 == LF) { + if (!input_nextline) input_nextline = prev_cr ? CRLF : LF; + else if (input_nextline != (prev_cr ? CRLF : LF)) input_nextline = EOF; + } else if (c2 == 0 && c1 == CR && input_nextline == LF) input_nextline = EOF; + else if (!prev_cr); + else if (!input_nextline) input_nextline = CR; + else if (input_nextline != CR) input_nextline = EOF; + } + if (prev_cr || c2 == 0 && c1 == LF) { prev_cr = 0; - if (! (c2==0&&c1==NL) ) { - cr_conv(0,'\n'); - } - } - if (c2) { - (*o_crconv)(c2,c1); - } else if (c1=='\r') { - prev_cr = c1; - } else if (c1=='\n') { - if (crmode_f==CRLF) { - (*o_crconv)(0,'\r'); - } else if (crmode_f==CR) { - (*o_crconv)(0,'\r'); - return; - } - (*o_crconv)(0,NL); - } else if (c1!='\032' || crmode_f!=NL){ - (*o_crconv)(c2,c1); + if (nlmode_f != LF) (*o_nlconv)(0, CR); + if (nlmode_f != CR) (*o_nlconv)(0, LF); } + if (c2 == 0 && c1 == CR) prev_cr = CR; + else if (c2 != 0 || c1 != LF) (*o_nlconv)(c2, c1); } -/* +/* Return value of fold_conv() - \n add newline and output char - \r add newline and output nothing - ' ' space - 0 skip - 1 (or else) normal output + LF add newline and output char + CR add newline and output nothing + SP space + 0 skip + 1 (or else) normal output fold state in prev (previous character) >0x80 Japanese (X0208/X0201) <0x80 ASCII - \n new line - ' ' space + LF new line + SP space This fold algorthm does not preserve heading space in a line. This is the main difference from fmt. @@ -4401,34 +4336,34 @@ void cr_conv(nkf_char c2, nkf_char c1) #define char_size(c2,c1) (c2?2:1) void fold_conv(nkf_char c2, nkf_char c1) -{ +{ nkf_char prev0; nkf_char fold_state; - if (c1== '\r' && !fold_preserve_f) { + if (c1== CR && !fold_preserve_f) { fold_state=0; /* ignore cr */ - }else if (c1== '\n'&&f_prev=='\r' && fold_preserve_f) { - f_prev = '\n'; + }else if (c1== LF&&f_prev==CR && fold_preserve_f) { + f_prev = LF; fold_state=0; /* ignore cr */ } else if (c1== BS) { if (f_line>0) f_line--; fold_state = 1; } else if (c2==EOF && f_line != 0) { /* close open last line */ - fold_state = '\n'; - } else if ((c1=='\n' && !fold_preserve_f) - || ((c1=='\r'||(c1=='\n'&&f_prev!='\r')) + fold_state = LF; + } else if ((c1==LF && !fold_preserve_f) + || ((c1==CR||(c1==LF&&f_prev!=CR)) && fold_preserve_f)) { /* new line */ - if (fold_preserve_f) { + if (fold_preserve_f) { f_prev = c1; f_line = 0; - fold_state = '\r'; + fold_state = CR; } else if ((f_prev == c1 && !fold_preserve_f) - || (f_prev == '\n' && fold_preserve_f) + || (f_prev == LF && fold_preserve_f) ) { /* duplicate newline */ if (f_line) { f_line = 0; - fold_state = '\n'; /* output two newline */ + fold_state = LF; /* output two newline */ } else { f_line = 0; fold_state = 1; @@ -4437,41 +4372,41 @@ void fold_conv(nkf_char c2, nkf_char c1) if (f_prev&0x80) { /* Japanese? */ f_prev = c1; fold_state = 0; /* ignore given single newline */ - } else if (f_prev==' ') { + } else if (f_prev==SP) { fold_state = 0; } else { f_prev = c1; - if (++f_line<=fold_len) - fold_state = ' '; + if (++f_line<=fold_len) + fold_state = SP; else { f_line = 0; - fold_state = '\r'; /* fold and output nothing */ + fold_state = CR; /* fold and output nothing */ } } } } else if (c1=='\f') { - f_prev = '\n'; + f_prev = LF; f_line = 0; - fold_state = '\n'; /* output newline and clear */ - } else if ( (c2==0 && c1==' ')|| - (c2==0 && c1=='\t')|| + fold_state = LF; /* output newline and clear */ + } else if ( (c2==0 && c1==SP)|| + (c2==0 && c1==TAB)|| (c2=='!'&& c1=='!')) { /* X0208 kankaku or ascii space */ - if (f_prev == ' ') { + if (f_prev == SP) { fold_state = 0; /* remove duplicate spaces */ } else { - f_prev = ' '; - if (++f_line<=fold_len) - fold_state = ' '; /* output ASCII space only */ + f_prev = SP; + if (++f_line<=fold_len) + fold_state = SP; /* output ASCII space only */ else { - f_prev = ' '; f_line = 0; - fold_state = '\r'; /* fold and output nothing */ + f_prev = SP; f_line = 0; + fold_state = CR; /* fold and output nothing */ } } } else { prev0 = f_prev; /* we still need this one... , but almost done */ f_prev = c1; - if (c2 || c2==X0201) + if (c2 || c2==X0201) f_prev |= 0x80; /* this is Japanese */ f_line += char_size(c2,c1); if (f_line<=fold_len) { /* normal case */ @@ -4479,7 +4414,7 @@ void fold_conv(nkf_char c2, nkf_char c1) } else { if (f_line>fold_len+fold_margin) { /* too many kinsoku suspension */ f_line = char_size(c2,c1); - fold_state = '\n'; /* We can't wait, do fold now */ + fold_state = LF; /* We can't wait, do fold now */ } else if (c2==X0201) { /* simple kinsoku rules return 1 means no folding */ if (c1==(0xde&0x7f)) fold_state = 1; /* ゛*/ @@ -4488,15 +4423,15 @@ void fold_conv(nkf_char c2, nkf_char c1) else if (c1==(0xa3&0x7f)) fold_state = 1; /* ,*/ else if (c1==(0xa1&0x7f)) fold_state = 1; /* 」*/ else if (c1==(0xb0&0x7f)) fold_state = 1; /* - */ - else if (SPACE<=c1 && c1<=(0xdf&0x7f)) { /* X0201 */ + else if (SP<=c1 && c1<=(0xdf&0x7f)) { /* X0201 */ f_line = 1; - fold_state = '\n';/* add one new f_line before this character */ + fold_state = LF;/* add one new f_line before this character */ } else { f_line = 1; - fold_state = '\n';/* add one new f_line before this character */ + fold_state = LF;/* add one new f_line before this character */ } } else if (c2==0) { - /* kinsoku point in ASCII */ + /* kinsoku point in ASCII */ if ( c1==')'|| /* { [ ( */ c1==']'|| c1=='}'|| @@ -4506,17 +4441,17 @@ void fold_conv(nkf_char c2, nkf_char c1) c1=='?'|| c1=='/'|| c1==':'|| - c1==';' ) { + c1==';') { fold_state = 1; /* just after special */ } else if (!is_alnum(prev0)) { f_line = char_size(c2,c1); - fold_state = '\n'; - } else if ((prev0==' ') || /* ignored new f_line */ - (prev0=='\n')|| /* ignored new f_line */ + fold_state = LF; + } else if ((prev0==SP) || /* ignored new f_line */ + (prev0==LF)|| /* ignored new f_line */ (prev0&0x80)) { /* X0208 - ASCII */ f_line = char_size(c2,c1); - fold_state = '\n';/* add one new f_line before this character */ + fold_state = LF;/* add one new f_line before this character */ } else { fold_state = 1; /* default no fold in ASCII */ } @@ -4535,14 +4470,14 @@ void fold_conv(nkf_char c2, nkf_char c1) else if (c1=='+') fold_state = 1; /* ゛ */ else if (c1==',') fold_state = 1; /* ゜ */ /* default no fold in kinsoku */ - else { - fold_state = '\n'; + else { + fold_state = LF; f_line = char_size(c2,c1); /* add one new f_line before this character */ } } else { f_line = char_size(c2,c1); - fold_state = '\n'; + fold_state = LF; /* add one new f_line before this character */ } } @@ -4550,18 +4485,18 @@ void fold_conv(nkf_char c2, nkf_char c1) } /* terminator process */ switch(fold_state) { - case '\n': - (*o_fconv)(0,'\n'); + case LF: + (*o_fconv)(0,LF); (*o_fconv)(c2,c1); break; - case 0: + case 0: return; - case '\r': - (*o_fconv)(0,'\n'); + case CR: + (*o_fconv)(0,LF); break; - case '\t': - case ' ': - (*o_fconv)(0,' '); + case TAB: + case SP: + (*o_fconv)(0,SP); break; default: (*o_fconv)(c2,c1); @@ -4585,25 +4520,25 @@ void z_conv(nkf_char c2, nkf_char c1) if (c2 == X0201) { if (c1 == (0xde&0x7f)) { /* 濁点 */ z_prev2 = 0; - (*o_zconv)(dv[(z_prev1-SPACE)*2], dv[(z_prev1-SPACE)*2+1]); + (*o_zconv)(dv[(z_prev1-SP)*2], dv[(z_prev1-SP)*2+1]); return; - } else if (c1 == (0xdf&0x7f) && ev[(z_prev1-SPACE)*2]) { /* 半濁点 */ + } else if (c1 == (0xdf&0x7f) && ev[(z_prev1-SP)*2]) { /* 半濁点 */ z_prev2 = 0; - (*o_zconv)(ev[(z_prev1-SPACE)*2], ev[(z_prev1-SPACE)*2+1]); + (*o_zconv)(ev[(z_prev1-SP)*2], ev[(z_prev1-SP)*2+1]); return; } } z_prev2 = 0; - (*o_zconv)(cv[(z_prev1-SPACE)*2], cv[(z_prev1-SPACE)*2+1]); + (*o_zconv)(cv[(z_prev1-SP)*2], cv[(z_prev1-SP)*2+1]); } if (c2 == X0201) { - if (dv[(c1-SPACE)*2] || ev[(c1-SPACE)*2]) { + if (dv[(c1-SP)*2] || ev[(c1-SP)*2]) { /* wait for 濁点 or 半濁点 */ z_prev1 = c1; z_prev2 = c2; return; } else { - (*o_zconv)(cv[(c1-SPACE)*2], cv[(c1-SPACE)*2+1]); + (*o_zconv)(cv[(c1-SP)*2], cv[(c1-SP)*2+1]); return; } } @@ -4614,24 +4549,24 @@ void z_conv(nkf_char c2, nkf_char c1) return; } - if (alpha_f&1 && c2 == 0x23 ) { + if (alpha_f&1 && c2 == 0x23) { /* JISX0208 Alphabet */ c2 = 0; - } else if (c2 == 0x21) { + } else if (c2 == 0x21) { /* JISX0208 Kigou */ if (0x21==c1) { if (alpha_f&2) { c2 = 0; - c1 = ' '; + c1 = SP; } else if (alpha_f&4) { - (*o_zconv)(0, ' '); - (*o_zconv)(0, ' '); + (*o_zconv)(0, SP); + (*o_zconv)(0, SP); return; - } + } } else if (alpha_f&1 && 0x20' ';i++) { /* start at =? */ - if ( ((r[i] = c1 = (*i_getc)(f))==EOF) || nkf_toupper(c1) != p[i] ) { + for(i=2;p[i]>SP;i++) { /* start at =? */ + if (((r[i] = c1 = (*i_getc)(f))==EOF) || nkf_toupper(c1) != p[i]) { /* pattern fails, try next one */ q = p; while (mime_pattern[++j]) { @@ -4947,7 +4882,7 @@ nkf_char mime_begin_strict(FILE *f) if (!unbuf_f) { /* do MIME integrity check */ return mime_integrity(f,mime_pattern[j]); - } + } } switch_mime_getc(); mimebuf_f = TRUE; @@ -4966,7 +4901,7 @@ nkf_char mime_ungetc_buf(nkf_char c, FILE *f) { if (mimebuf_f) (*i_mungetc_buf)(c,f); - else + else Fifo(--mime_input) = (unsigned char)c; return c; } @@ -4985,8 +4920,8 @@ nkf_char mime_begin(FILE *f) for(i=2;i 0 && ((buf[i] & 0xc0) != 0x80)){ lower=0, upper=NORMALIZATION_TABLE_LENGTH-1; @@ -5225,7 +5156,7 @@ nkf_char nfc_ungetc(nkf_char c, FILE *f) #endif /* UNICODE_NORMALIZATION */ -nkf_char +nkf_char mime_getc(FILE *f) { nkf_char c1, c2, c3, c4, cc; @@ -5251,15 +5182,15 @@ mime_getc(FILE *f) if (mime_decode_mode == 'Q') { if ((c1 = (*i_mgetc)(f)) == EOF) return (EOF); restart_mime_q: - if (c1=='_' && mimebuf_f != FIXED_MIME) return ' '; - if (c1<=' ' || DEL<=c1) { + if (c1=='_' && mimebuf_f != FIXED_MIME) return SP; + if (c1<=SP || DEL<=c1) { mime_decode_mode = exit_mode; /* prepare for quit */ return c1; } if (c1!='=' && (c1!='?' || mimebuf_f == FIXED_MIME)) { return c1; } - + mime_decode_mode = exit_mode; /* prepare for quit */ if ((c2 = (*i_mgetc)(f)) == EOF) return (EOF); if (c1=='?'&&c2=='=' && mimebuf_f != FIXED_MIME) { @@ -5273,32 +5204,32 @@ restart_mime_q: } while ((c1=(*i_getc)(f))!=EOF) { switch (c1) { - case NL: + case LF: case CR: - if (c1==NL) { - if ((c1=(*i_getc)(f))!=EOF && (c1==SPACE||c1==TAB)) { - i_ungetc(SPACE,f); + if (c1==LF) { + if ((c1=(*i_getc)(f))!=EOF && (c1==SP||c1==TAB)) { + i_ungetc(SP,f); continue; } else { i_ungetc(c1,f); } - c1 = NL; + c1 = LF; } else { - if ((c1=(*i_getc)(f))!=EOF && c1 == NL) { - if ((c1=(*i_getc)(f))!=EOF && (c1==SPACE||c1==TAB)) { - i_ungetc(SPACE,f); + if ((c1=(*i_getc)(f))!=EOF && c1 == LF) { + if ((c1=(*i_getc)(f))!=EOF && (c1==SP||c1==TAB)) { + i_ungetc(SP,f); continue; } else { i_ungetc(c1,f); } - i_ungetc(NL,f); + i_ungetc(LF,f); } else { i_ungetc(c1,f); } c1 = CR; } break; - case SPACE: + case SP: case TAB: lwsp_buf[lwsp_count] = (unsigned char)c1; if (lwsp_count++>lwsp_size){ @@ -5315,7 +5246,7 @@ restart_mime_q: } break; } - if (lwsp_count > 0 && (c1 != '=' || (lwsp_buf[lwsp_count-1] != SPACE && lwsp_buf[lwsp_count-1] != TAB))) { + if (lwsp_count > 0 && (c1 != '=' || (lwsp_buf[lwsp_count-1] != SP && lwsp_buf[lwsp_count-1] != TAB))) { i_ungetc(c1,f); for(lwsp_count--;lwsp_count>0;lwsp_count--) i_ungetc(lwsp_buf[lwsp_count],f); @@ -5324,8 +5255,8 @@ restart_mime_q: free(lwsp_buf); return c1; } - if (c1=='='&&c2<' ') { /* this is soft wrap */ - while((c1 = (*i_mgetc)(f)) <=' ') { + if (c1=='='&&c2 0 && (c1 != '=' || (lwsp_buf[lwsp_count-1] != SP && lwsp_buf[lwsp_count-1] != TAB))) { i_ungetc(c1,f); for(lwsp_count--;lwsp_count>0;lwsp_count--) i_ungetc(lwsp_buf[lwsp_count],f); @@ -5436,19 +5367,19 @@ mime_c2_retry: return c1; } mime_c3_retry: - if ((c3 = (*i_mgetc)(f))<=' ') { + if ((c3 = (*i_mgetc)(f))<=SP) { if (c3==EOF) return (EOF); if (mime_f != STRICT_MIME) goto mime_c3_retry; - if (mimebuf_f!=FIXED_MIME) input_mode = ASCII; + if (mimebuf_f!=FIXED_MIME) input_mode = ASCII; return c3; } mime_c4_retry: - if ((c4 = (*i_mgetc)(f))<=' ') { + if ((c4 = (*i_mgetc)(f))<=SP) { if (c4==EOF) return (EOF); if (mime_f != STRICT_MIME) goto mime_c4_retry; - if (mimebuf_f!=FIXED_MIME) input_mode = ASCII; + if (mimebuf_f!=FIXED_MIME) input_mode = ASCII; return c4; } @@ -5467,7 +5398,7 @@ mime_c4_retry: if (c3 != '=') { Fifo(mime_last++) = (unsigned char)cc; cc = ((t3 << 6) & 0x0c0) | (t4 & 0x3f); - if (c4 != '=') + if (c4 != '=') Fifo(mime_last++) = (unsigned char)cc; } } else { @@ -5490,7 +5421,7 @@ nkf_char mime_integrity(FILE *f, const unsigned char *p) */ mime_input = mime_top; mime_last = mime_top; - + while(*p) Fifo(mime_input++) = *p++; d = 0; q = mime_input; @@ -5502,7 +5433,7 @@ nkf_char mime_integrity(FILE *f, const unsigned char *p) /* checked. skip header, start decode */ Fifo(mime_input++) = (unsigned char)c; /* mime_last_input = mime_input; */ - mime_input = q; + mime_input = q; switch_mime_getc(); return 1; } @@ -5562,26 +5493,26 @@ void open_mime(nkf_char mode) } } mimeout_mode = mime_encode_method[i]; - + i = 0; if (base64_count>45) { if (mimeout_buf_count>0 && nkf_isblank(mimeout_buf[i])){ (*o_mputc)(mimeout_buf[i]); i++; } - (*o_mputc)(NL); - (*o_mputc)(SPACE); + (*o_mputc)(LF); + (*o_mputc)(SP); base64_count = 1; if (!mimeout_preserve_space && mimeout_buf_count>0 - && (mimeout_buf[i]==SPACE || mimeout_buf[i]==TAB - || mimeout_buf[i]==CR || mimeout_buf[i]==NL )) { + && (mimeout_buf[i]==SP || mimeout_buf[i]==TAB + || mimeout_buf[i]==CR || mimeout_buf[i]==LF)) { i++; } } if (!mimeout_preserve_space) { for (;i 73){ (*o_base64conv)(EOF,0); - (*o_base64conv)(0,NL); - (*o_base64conv)(0,SPACE); + (*o_base64conv)(0,LF); + (*o_base64conv)(0,SP); } } else if (c2){ if (base64_count + mimeout_buf_count/3*4> 66){ (*o_base64conv)(EOF,0); - (*o_base64conv)(0,NL); - (*o_base64conv)(0,SPACE); + (*o_base64conv)(0,LF); + (*o_base64conv)(0,SP); } }/*else if (mime_lastchar2){ if (c1 <=DEL && !nkf_isspace(c1)){ - (*o_base64conv)(0,SPACE); + (*o_base64conv)(0,SP); } }*/ }/*else{ if (c2 && mime_lastchar2 == 0 && mime_lastchar1 && !nkf_isspace(mime_lastchar1)){ - (*o_base64conv)(0,SPACE); + (*o_base64conv)(0,SP); } }*/ /*mime_lastchar2 = c2; @@ -5718,16 +5649,16 @@ void mime_putc(nkf_char c) if (mimeout_f == FIXED_MIME){ if (mimeout_mode == 'Q'){ if (base64_count > 71){ - if (c!=CR && c!=NL) { + if (c!=CR && c!=LF) { (*o_mputc)('='); - (*o_mputc)(NL); + (*o_mputc)(LF); } base64_count = 0; } }else{ if (base64_count > 71){ eof_mime(); - (*o_mputc)(NL); + (*o_mputc)(LF); base64_count = 0; } if (c == EOF) { /* c==EOF */ @@ -5739,7 +5670,7 @@ void mime_putc(nkf_char c) } return; } - + /* mimeout_f != FIXED_MIME */ if (c == EOF) { /* c==EOF */ @@ -5773,20 +5704,20 @@ void mime_putc(nkf_char c) } if (mimeout_mode=='Q') { - if (c <= DEL && (output_mode==ASCII ||output_mode == ISO8859_1 ) ) { - if (c == CR || c == NL) { + if (c <= DEL && (output_mode==ASCII ||output_mode == ISO8859_1)) { + if (c == CR || c == LF) { close_mime(); (*o_mputc)(c); base64_count = 0; return; - } else if (c <= SPACE) { + } else if (c <= SP) { close_mime(); if (base64_count > 70) { - (*o_mputc)(NL); + (*o_mputc)(LF); base64_count = 0; } if (!nkf_isblank(c)) { - (*o_mputc)(SPACE); + (*o_mputc)(SP); base64_count++; } } @@ -5805,12 +5736,12 @@ void mime_putc(nkf_char c) if (!mimeout_mode) { if (c <= DEL && (output_mode==ASCII ||output_mode == ISO8859_1)) { if (nkf_isspace(c)) { - if (c==CR || c==NL) { + if (c==CR || c==LF) { base64_count=0; } for (i=0;i 1 && base64_count + mimeout_buf_count > 76 - && mimeout_buf[0] != CR && mimeout_buf[0] != NL){ - (*o_mputc)(NL); + && mimeout_buf[0] != CR && mimeout_buf[0] != LF){ + (*o_mputc)(LF); base64_count = 0; if (!nkf_isspace(mimeout_buf[0])){ - (*o_mputc)(SPACE); + (*o_mputc)(SP); base64_count++; } } @@ -5836,33 +5767,33 @@ void mime_putc(nkf_char c) } return; }else{ - if (lastchar==CR || lastchar == NL){ + if (lastchar==CR || lastchar == LF){ for (i=0;i0 && SPACE0 && SPMIMEOUT_BUF_LENGTH) { j = mimeout_buf_count; @@ -5910,7 +5841,7 @@ void mime_putc(nkf_char c) j = mimeout_buf_count; mimeout_buf_count = 0; for (i=0;i - ** ohta@src.ricoh.co.jp (Junn Ohta) - ** inouet@strl.nhk.or.jp (Tomoyuki Inoue) - ** kiri@pulser.win.or.jp (Tetsuaki Kiriyama) - ** Kimihiko Sato - ** a_kuroe@kuroe.aoba.yokohama.jp (Akihiko Kuroe) - ** kono@ie.u-ryukyu.ac.jp (Shinji Kono) - ** GHG00637@nifty-serve.or.jp (COW) - ** - **/ - -/* end */