X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=nkf.c;h=6877afe2374925c01f6ea480989933506c006daa;hb=71012057801fe0cdcf0ab9a136c7259e5409ca0e;hp=a8bfc9a58b73d7dfe25dffd332ecc01c13b63da2;hpb=5d213c263b33494a0af1e45cf3414151f0daaf2e;p=nkf%2Fnkf.git diff --git a/nkf.c b/nkf.c index a8bfc9a..6877afe 100644 --- a/nkf.c +++ b/nkf.c @@ -21,7 +21,7 @@ * 3. This notice may not be removed or altered from any source distribution. */ #define NKF_VERSION "2.1.1" -#define NKF_RELEASE_DATE "2010-04-14" +#define NKF_RELEASE_DATE "2010-08-08" #define COPY_RIGHT \ "Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).\n" \ "Copyright (C) 1996-2010, The nkf Project." @@ -223,6 +223,7 @@ struct { {"ISO-2022-JP-2004", ISO_2022_JP_2004}, {"SHIFT_JIS", SHIFT_JIS}, {"SJIS", SHIFT_JIS}, + {"MS_Kanji", SHIFT_JIS}, {"PCK", SHIFT_JIS}, {"WINDOWS-31J", WINDOWS_31J}, {"CSWINDOWS31J", WINDOWS_31J}, @@ -476,7 +477,7 @@ struct input_code input_code_list[] = { {"UTF-16", 0, 0, 0, {0, 0, 0}, NULL, w_iconv16, 0}, {"UTF-32", 0, 0, 0, {0, 0, 0}, NULL, w_iconv32, 0}, #endif - {0} + {NULL, 0, 0, 0, {0, 0, 0}, NULL, NULL, 0} }; static int mimeout_mode = 0; /* 0, -1, 'Q', 'B', 1, 2 */ @@ -901,7 +902,7 @@ usage(void) " Z[0-4] Default/0: Convert JISX0208 Alphabet to ASCII\n" " 1: Kankaku to one space 2: to two spaces 3: HTML Entity\n" " 4: JISX0208 Katakana to JISX0201 Katakana\n" - " X,x Assume X0201 kana in MS-Kanji, -x preserves X0201\n" + " X,x Convert Halfwidth Katakana to Fullwidth or preserve it\n" ); fprintf(HELP_OUTPUT, " O Output to File (DEFAULT 'nkf.out')\n" @@ -1208,10 +1209,10 @@ set_input_encoding(nkf_encoding *enc) case ISO_8859_1: iso8859_f = TRUE; break; - case CP50220: case CP50221: case CP50222: if (x0201_f == NKF_UNSPECIFIED) x0201_f = FALSE; /* -x specified implicitly */ + case CP50220: #ifdef SHIFTJIS_CP932 cp51932_f = TRUE; #endif @@ -1264,6 +1265,7 @@ set_input_encoding(nkf_encoding *enc) #endif break; case EUCJP_MS: + if (x0201_f == NKF_UNSPECIFIED) x0201_f = FALSE; /* -x specified implicitly */ #ifdef SHIFTJIS_CP932 cp51932_f = FALSE; #endif @@ -1272,6 +1274,7 @@ set_input_encoding(nkf_encoding *enc) #endif break; case EUCJP_ASCII: + if (x0201_f == NKF_UNSPECIFIED) x0201_f = FALSE; /* -x specified implicitly */ #ifdef SHIFTJIS_CP932 cp51932_f = FALSE; #endif @@ -1326,7 +1329,6 @@ set_output_encoding(nkf_encoding *enc) { switch (nkf_enc_to_index(enc)) { case CP50220: - if (x0201_f == NKF_UNSPECIFIED) x0201_f = FALSE; /* -x specified implicitly */ #ifdef SHIFTJIS_CP932 if (cp932inv_f == TRUE) cp932inv_f = FALSE; #endif @@ -1402,12 +1404,14 @@ set_output_encoding(nkf_encoding *enc) #endif break; case EUCJP_MS: + if (x0201_f == NKF_UNSPECIFIED) x0201_f = FALSE; /* -x specified implicitly */ x0212_f = TRUE; #ifdef UTF8_OUTPUT_ENABLE ms_ucs_map_f = UCS_MAP_MS; #endif break; case EUCJP_ASCII: + if (x0201_f == NKF_UNSPECIFIED) x0201_f = FALSE; /* -x specified implicitly */ x0212_f = TRUE; #ifdef UTF8_OUTPUT_ENABLE ms_ucs_map_f = UCS_MAP_ASCII; @@ -2198,8 +2202,8 @@ unicode_iconv(nkf_char wc) return 0; } -#define NKF_ICONV_NEED_ONE_MORE_BYTE -1 -#define NKF_ICONV_NEED_TWO_MORE_BYTES -2 +#define NKF_ICONV_NEED_ONE_MORE_BYTE (size_t)-1 +#define NKF_ICONV_NEED_TWO_MORE_BYTES (size_t)-2 #define UTF16_TO_UTF32(lead, trail) (((lead) << 10) + (trail) - NKF_INT32_C(0x35FDC00)) static size_t nkf_iconv_utf_16(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4) @@ -4631,7 +4635,7 @@ static const char basis_64[] = #define MIMEOUT_BUF_LENGTH 74 static struct { - char buf[MIMEOUT_BUF_LENGTH+1]; + unsigned char buf[MIMEOUT_BUF_LENGTH+1]; int count; } mimeout_state; @@ -4943,7 +4947,7 @@ mime_putc(nkf_char c) i = 0; for (; i < mimeout_state.count - len; ++i) { - if (!strncmp(mimeout_state.buf+i, str, len)) { + if (!strncmp((char *)(mimeout_state.buf+i), str, len)) { i += len - 2; break; } @@ -5414,7 +5418,7 @@ noconvert(FILE *f) #define NEXT continue /* no output, get next */ #define SKIP c2=0;continue /* no output, get next */ #define MORE c2=c1;continue /* need one more byte */ -#define SEND ; /* output c1 and c2, get next */ +#define SEND (void)0 /* output c1 and c2, get next */ #define LAST break /* end of loop, go closing */ #define set_input_mode(mode) do { \ input_mode = mode; \ @@ -5459,7 +5463,7 @@ kanji_convert(FILE *f) else if (iconv == w_iconv16) { while ((c1 = (*i_getc)(f)) != EOF && (c2 = (*i_getc)(f)) != EOF) { - if (nkf_iconv_utf_16(c1, c2, 0, 0) == -2 && + if (nkf_iconv_utf_16(c1, c2, 0, 0) == NKF_ICONV_NEED_TWO_MORE_BYTES && (c3 = (*i_getc)(f)) != EOF && (c4 = (*i_getc)(f)) != EOF) { nkf_iconv_utf_16(c1, c2, c3, c4); @@ -5899,7 +5903,7 @@ options(unsigned char *cp) option_mode = 1; return 0; } - for (i=0;i