** E-Mail: furukawa@tcp-ip.or.jp
** \e$B$^$G8fO"Mm$r$*4j$$$7$^$9!#\e(B
***********************************************************************/
-/* $Id: nkf.c,v 1.100 2006/05/06 12:40:44 naruse Exp $ */
+/* $Id: nkf.c,v 1.101 2006/06/11 09:00:51 naruse Exp $ */
#define NKF_VERSION "2.0.7"
#define NKF_RELEASE_DATE "2006-05-06"
#include "config.h"
+#include "utf8tbl.h"
#define COPY_RIGHT \
"Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa),2000 S. Kono, COW\n" \
#define hex2bin(x) ( nkf_isdigit(x) ? x - '0' : nkf_toupper(x) - 'A' + 10)
#define HOLD_SIZE 1024
+#if defined(INT_IS_SHORT)
+#define IOBUF_SIZE 2048
+#else
#define IOBUF_SIZE 16384
+#endif
#define DEFAULT_J 'B'
#define DEFAULT_R 'B'
struct input_code{
char *name;
- int stat;
- int score;
- int index;
- int buf[3];
- void (*status_func)(struct input_code *, int);
- int (*iconv_func)(int c2, int c1, int c0);
+ nkf_char stat;
+ nkf_char score;
+ nkf_char index;
+ nkf_char buf[3];
+ void (*status_func)(struct input_code *, nkf_char);
+ nkf_char (*iconv_func)(nkf_char c2, nkf_char c1, nkf_char c0);
int _file_stat;
};
static const char *CopyRight = COPY_RIGHT;
#endif
#if !defined(PERL_XS) && !defined(WIN32DLL)
-static int noconvert(FILE *f);
+static nkf_char noconvert(FILE *f);
#endif
static void module_connection(void);
-static int kanji_convert(FILE *f);
-static int h_conv(FILE *f,int c2,int c1);
-static int push_hold_buf(int c2);
-static void set_iconv(int f, int (*iconv_func)(int c2,int c1,int c0));
-static int s_iconv(int c2,int c1,int c0);
-static int s2e_conv(int c2, int c1, int *p2, int *p1);
-static int e_iconv(int c2,int c1,int c0);
+static nkf_char kanji_convert(FILE *f);
+static nkf_char h_conv(FILE *f,nkf_char c2,nkf_char c1);
+static nkf_char push_hold_buf(nkf_char c2);
+static void set_iconv(nkf_char f, nkf_char (*iconv_func)(nkf_char c2,nkf_char c1,nkf_char c0));
+static nkf_char s_iconv(nkf_char c2,nkf_char c1,nkf_char c0);
+static nkf_char s2e_conv(nkf_char c2, nkf_char c1, nkf_char *p2, nkf_char *p1);
+static nkf_char e_iconv(nkf_char c2,nkf_char c1,nkf_char c0);
#if defined(UTF8_INPUT_ENABLE) || defined(UTF8_OUTPUT_ENABLE)
/* UCS Mapping
* 0: Shift_JIS, eucJP-ascii
/* ignore ZERO WIDTH NO-BREAK SPACE */
static int ignore_zwnbsp_f = TRUE;
static int no_best_fit_chars_f = FALSE;
-static int unicode_subchar = '?'; /* the regular substitution character */
-static void nkf_each_char_to_hex(void (*f)(int c2,int c1), int c);
-static void encode_fallback_html(int c);
-static void encode_fallback_xml(int c);
-static void encode_fallback_java(int c);
-static void encode_fallback_perl(int c);
-static void encode_fallback_subchar(int c);
-static void (*encode_fallback)(int c) = NULL;
-static int w2e_conv(int c2,int c1,int c0,int *p2,int *p1);
-static int w_iconv(int c2,int c1,int c0);
-static int w_iconv16(int c2,int c1,int c0);
-static int unicode_to_jis_common(int c2,int c1,int c0,int *p2,int *p1);
-static int w_iconv_common(int c1,int c0,const unsigned short *const *pp,int psize,int *p2,int *p1);
-static void w16w_conv(int val, int *p2, int *p1, int *p0);
-static int ww16_conv(int c2, int c1, int c0);
-static int w16e_conv(int val,int *p2,int *p1);
+static nkf_char unicode_subchar = '?'; /* the regular substitution character */
+static void nkf_each_char_to_hex(void (*f)(nkf_char c2,nkf_char c1), nkf_char c);
+static void encode_fallback_html(nkf_char c);
+static void encode_fallback_xml(nkf_char c);
+static void encode_fallback_java(nkf_char c);
+static void encode_fallback_perl(nkf_char c);
+static void encode_fallback_subchar(nkf_char c);
+static void (*encode_fallback)(nkf_char c) = NULL;
+static nkf_char w2e_conv(nkf_char c2,nkf_char c1,nkf_char c0,nkf_char *p2,nkf_char *p1);
+static nkf_char w_iconv(nkf_char c2,nkf_char c1,nkf_char c0);
+static nkf_char w_iconv16(nkf_char c2,nkf_char c1,nkf_char c0);
+static nkf_char unicode_to_jis_common(nkf_char c2,nkf_char c1,nkf_char c0,nkf_char *p2,nkf_char *p1);
+static nkf_char w_iconv_common(nkf_char c1,nkf_char c0,const unsigned short *const *pp,nkf_char psize,nkf_char *p2,nkf_char *p1);
+static void w16w_conv(nkf_char val, nkf_char *p2, nkf_char *p1, nkf_char *p0);
+static nkf_char ww16_conv(nkf_char c2, nkf_char c1, nkf_char c0);
+static nkf_char w16e_conv(nkf_char val,nkf_char *p2,nkf_char *p1);
#endif
#ifdef UTF8_OUTPUT_ENABLE
static int unicode_bom_f= 0; /* Output Unicode BOM */
static int w_oconv16_LE = 0; /* utf-16 little endian */
-static int e2w_conv(int c2,int c1);
-static void w_oconv(int c2,int c1);
-static void w_oconv16(int c2,int c1);
-#endif
-static void e_oconv(int c2,int c1);
-static int e2s_conv(int c2, int c1, int *p2, int *p1);
-static void s_oconv(int c2,int c1);
-static void j_oconv(int c2,int c1);
-static void fold_conv(int c2,int c1);
-static void cr_conv(int c2,int c1);
-static void z_conv(int c2,int c1);
-static void rot_conv(int c2,int c1);
-static void hira_conv(int c2,int c1);
-static void base64_conv(int c2,int c1);
-static void iso2022jp_check_conv(int c2,int c1);
-static void no_connection(int c2,int c1);
-static int no_connection2(int c2,int c1,int c0);
+static nkf_char e2w_conv(nkf_char c2,nkf_char c1);
+static void w_oconv(nkf_char c2,nkf_char c1);
+static void w_oconv16(nkf_char c2,nkf_char c1);
+#endif
+static void e_oconv(nkf_char c2,nkf_char c1);
+static nkf_char e2s_conv(nkf_char c2, nkf_char c1, nkf_char *p2, nkf_char *p1);
+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 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);
+static void base64_conv(nkf_char c2,nkf_char c1);
+static void iso2022jp_check_conv(nkf_char c2,nkf_char c1);
+static void no_connection(nkf_char c2,nkf_char c1);
+static nkf_char no_connection2(nkf_char c2,nkf_char c1,nkf_char c0);
static void code_score(struct input_code *ptr);
-static void code_status(int c);
+static void code_status(nkf_char c);
-static void std_putc(int c);
-static int std_getc(FILE *f);
-static int std_ungetc(int c,FILE *f);
+static void std_putc(nkf_char c);
+static nkf_char std_getc(FILE *f);
+static nkf_char std_ungetc(nkf_char c,FILE *f);
-static int broken_getc(FILE *f);
-static int broken_ungetc(int c,FILE *f);
+static nkf_char broken_getc(FILE *f);
+static nkf_char broken_ungetc(nkf_char c,FILE *f);
-static int mime_begin(FILE *f);
-static int mime_getc(FILE *f);
-static int mime_ungetc(int c,FILE *f);
+static nkf_char mime_begin(FILE *f);
+static nkf_char mime_getc(FILE *f);
+static nkf_char mime_ungetc(nkf_char c,FILE *f);
static void switch_mime_getc(void);
static void unswitch_mime_getc(void);
-static int mime_begin_strict(FILE *f);
-static int mime_getc_buf(FILE *f);
-static int mime_ungetc_buf(int c,FILE *f);
-static int mime_integrity(FILE *f,const unsigned char *p);
-
-static int base64decode(int c);
-static void mime_prechar(int c2, int c1);
-static void mime_putc(int c);
-static void open_mime(int c);
+static nkf_char mime_begin_strict(FILE *f);
+static nkf_char mime_getc_buf(FILE *f);
+static nkf_char mime_ungetc_buf(nkf_char c,FILE *f);
+static nkf_char mime_integrity(FILE *f,const unsigned char *p);
+
+static nkf_char base64decode(nkf_char c);
+static void mime_prechar(nkf_char c2, nkf_char c1);
+static void mime_putc(nkf_char c);
+static void open_mime(nkf_char c);
static void close_mime(void);
static void eof_mime(void);
-static void mimeout_addchar(int c);
+static void mimeout_addchar(nkf_char c);
#ifndef PERL_XS
static void usage(void);
static void version(void);
static unsigned int mime_top = 0;
static unsigned int mime_last = 0; /* decoded */
static unsigned int mime_input = 0; /* undecoded */
-static int (*mime_iconv_back)(int c2,int c1,int c0) = NULL;
+static nkf_char (*mime_iconv_back)(nkf_char c2,nkf_char c1,nkf_char c0) = NULL;
/* flags */
static int unbuf_f = FALSE;
#ifdef UNICODE_NORMALIZATION
static int nfc_f = FALSE;
-static int (*i_nfc_getc)(FILE *) = std_getc; /* input of ugetc */
-static int (*i_nfc_ungetc)(int c ,FILE *f) = std_ungetc;
-static int nfc_getc(FILE *f);
-static int nfc_ungetc(int c,FILE *f);
+static nkf_char (*i_nfc_getc)(FILE *) = std_getc; /* input of ugetc */
+static nkf_char (*i_nfc_ungetc)(nkf_char c ,FILE *f) = std_ungetc;
+static nkf_char nfc_getc(FILE *f);
+static nkf_char nfc_ungetc(nkf_char c,FILE *f);
#endif
#ifdef INPUT_OPTION
static int cap_f = FALSE;
-static int (*i_cgetc)(FILE *) = std_getc; /* input of cgetc */
-static int (*i_cungetc)(int c ,FILE *f) = std_ungetc;
-static int cap_getc(FILE *f);
-static int cap_ungetc(int c,FILE *f);
+static nkf_char (*i_cgetc)(FILE *) = std_getc; /* input of cgetc */
+static nkf_char (*i_cungetc)(nkf_char c ,FILE *f) = std_ungetc;
+static nkf_char cap_getc(FILE *f);
+static nkf_char cap_ungetc(nkf_char c,FILE *f);
static int url_f = FALSE;
-static int (*i_ugetc)(FILE *) = std_getc; /* input of ugetc */
-static int (*i_uungetc)(int c ,FILE *f) = std_ungetc;
-static int url_getc(FILE *f);
-static int url_ungetc(int c,FILE *f);
+static nkf_char (*i_ugetc)(FILE *) = std_getc; /* input of ugetc */
+static nkf_char (*i_uungetc)(nkf_char c ,FILE *f) = std_ungetc;
+static nkf_char url_getc(FILE *f);
+static nkf_char url_ungetc(nkf_char c,FILE *f);
#endif
#ifdef NUMCHAR_OPTION
+#ifdef INT_IS_SHORT
+#define CLASS_MASK 0x0f000000L
+#define CLASS_UTF16 0x01000000L
+#else
#define CLASS_MASK 0x0f000000
#define CLASS_UTF16 0x01000000
+#endif
static int numchar_f = FALSE;
-static int (*i_ngetc)(FILE *) = std_getc; /* input of ugetc */
-static int (*i_nungetc)(int c ,FILE *f) = std_ungetc;
-static int numchar_getc(FILE *f);
-static int numchar_ungetc(int c,FILE *f);
+static nkf_char (*i_ngetc)(FILE *) = std_getc; /* input of ugetc */
+static nkf_char (*i_nungetc)(nkf_char c ,FILE *f) = std_ungetc;
+static nkf_char numchar_getc(FILE *f);
+static nkf_char numchar_ungetc(nkf_char c,FILE *f);
#endif
#ifdef CHECK_OPTION
static int noout_f = FALSE;
-static void no_putc(int c);
-static int debug_f = FALSE;
+static void no_putc(nkf_char c);
+static nkf_char debug_f = FALSE;
static void debug(const char *str);
-static int (*iconv_for_check)(int c2,int c1,int c0) = 0;
+static nkf_char (*iconv_for_check)(nkf_char c2,nkf_char c1,nkf_char c0) = 0;
#endif
static int guess_f = FALSE;
#define CP932INV_TABLE_BEGIN (0xed)
#define CP932INV_TABLE_END (0xee)
-/* static int cp932_conv(int c2, int c1); */
+/* static nkf_char cp932_conv(nkf_char c2, nkf_char c1); */
#endif /* SHIFTJIS_CP932 */
#ifdef X0212_ENABLE
static int x0212_f = FALSE;
-static int x0212_shift(int c);
-static int x0212_unshift(int c);
+static nkf_char x0212_shift(nkf_char c);
+static nkf_char x0212_unshift(nkf_char c);
#endif
static int x0213_f = FALSE;
static unsigned char prefix_table[256];
-static void set_code_score(struct input_code *ptr, int score);
-static void clr_code_score(struct input_code *ptr, int score);
+static void set_code_score(struct input_code *ptr, nkf_char score);
+static void clr_code_score(struct input_code *ptr, nkf_char score);
static void status_disable(struct input_code *ptr);
-static void status_push_ch(struct input_code *ptr, int c);
+static void status_push_ch(struct input_code *ptr, nkf_char c);
static void status_clear(struct input_code *ptr);
static void status_reset(struct input_code *ptr);
static void status_reinit(struct input_code *ptr);
-static void status_check(struct input_code *ptr, int c);
-static void e_status(struct input_code *, int);
-static void s_status(struct input_code *, int);
+static void status_check(struct input_code *ptr, nkf_char c);
+static void e_status(struct input_code *, nkf_char);
+static void s_status(struct input_code *, nkf_char);
#ifdef UTF8_INPUT_ENABLE
-static void w_status(struct input_code *, int);
-static void w16_status(struct input_code *, int);
+static void w_status(struct input_code *, nkf_char);
+static void w16_status(struct input_code *, nkf_char);
static int utf16_mode = UTF16BE_INPUT;
#endif
#endif
/* process default */
-static void (*output_conv)(int c2,int c1) = DEFAULT_CONV;
+static void (*output_conv)(nkf_char c2,nkf_char c1) = DEFAULT_CONV;
-static void (*oconv)(int c2,int c1) = no_connection;
+static void (*oconv)(nkf_char c2,nkf_char c1) = no_connection;
/* s_iconv or oconv */
-static int (*iconv)(int c2,int c1,int c0) = no_connection2;
+static nkf_char (*iconv)(nkf_char c2,nkf_char c1,nkf_char c0) = no_connection2;
-static void (*o_zconv)(int c2,int c1) = no_connection;
-static void (*o_fconv)(int c2,int c1) = no_connection;
-static void (*o_crconv)(int c2,int c1) = no_connection;
-static void (*o_rot_conv)(int c2,int c1) = no_connection;
-static void (*o_hira_conv)(int c2,int c1) = no_connection;
-static void (*o_base64conv)(int c2,int c1) = no_connection;
-static void (*o_iso2022jp_check_conv)(int c2,int c1) = no_connection;
+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_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;
+static void (*o_iso2022jp_check_conv)(nkf_char c2,nkf_char c1) = no_connection;
/* static redirections */
-static void (*o_putc)(int c) = std_putc;
+static void (*o_putc)(nkf_char c) = std_putc;
-static int (*i_getc)(FILE *f) = std_getc; /* general input */
-static int (*i_ungetc)(int c,FILE *f) =std_ungetc;
+static nkf_char (*i_getc)(FILE *f) = std_getc; /* general input */
+static nkf_char (*i_ungetc)(nkf_char c,FILE *f) =std_ungetc;
-static int (*i_bgetc)(FILE *) = std_getc; /* input of mgetc */
-static int (*i_bungetc)(int c ,FILE *f) = std_ungetc;
+static nkf_char (*i_bgetc)(FILE *) = std_getc; /* input of mgetc */
+static nkf_char (*i_bungetc)(nkf_char c ,FILE *f) = std_ungetc;
-static void (*o_mputc)(int c) = std_putc ; /* output of mputc */
+static void (*o_mputc)(nkf_char c) = std_putc ; /* output of mputc */
-static int (*i_mgetc)(FILE *) = std_getc; /* input of mgetc */
-static int (*i_mungetc)(int c ,FILE *f) = std_ungetc;
+static nkf_char (*i_mgetc)(FILE *) = std_getc; /* input of mgetc */
+static nkf_char (*i_mungetc)(nkf_char c ,FILE *f) = std_ungetc;
/* for strict mime */
-static int (*i_mgetc_buf)(FILE *) = std_getc; /* input of mgetc_buf */
-static int (*i_mungetc_buf)(int c,FILE *f) = std_ungetc;
+static nkf_char (*i_mgetc_buf)(FILE *) = std_getc; /* input of mgetc_buf */
+static nkf_char (*i_mungetc_buf)(nkf_char c,FILE *f) = std_ungetc;
/* Global states */
static int output_mode = ASCII, /* output kanji mode */
#endif /*Easy Win */
#define STD_GC_BUFSIZE (256)
-int std_gc_buf[STD_GC_BUFSIZE];
-int std_gc_ndx;
+nkf_char std_gc_buf[STD_GC_BUFSIZE];
+nkf_char std_gc_ndx;
#ifdef WIN32DLL
#include "nkf32dll.c"
void options(unsigned char *cp)
{
- int i, j;
+ nkf_char i, j;
unsigned char *p;
unsigned char *cp_back = NULL;
char codeset[32];
}
#ifdef ANSI_C_PROTOTYPE
-struct input_code * find_inputcode_byfunc(int (*iconv_func)(int c2,int c1,int c0))
+struct input_code * find_inputcode_byfunc(nkf_char (*iconv_func)(nkf_char c2,nkf_char c1,nkf_char c0))
#else
struct input_code * find_inputcode_byfunc(iconv_func)
- int (*iconv_func)();
+ nkf_char (*iconv_func)();
#endif
{
if (iconv_func){
return 0;
}
-void set_iconv(int f, int (*iconv_func)(int c2,int c1,int c0))
+void set_iconv(nkf_char f, nkf_char (*iconv_func)(nkf_char c2,nkf_char c1,nkf_char c0))
{
#ifdef INPUT_CODE_FIX
if (f || !input_f)
#define SCORE_INIT (SCORE_iMIME)
-const int score_table_A0[] = {
+const nkf_char score_table_A0[] = {
0, 0, 0, 0,
0, 0, 0, 0,
0, SCORE_DEPEND, SCORE_DEPEND, SCORE_DEPEND,
SCORE_DEPEND, SCORE_DEPEND, SCORE_DEPEND, SCORE_NO_EXIST,
};
-const int score_table_F0[] = {
+const nkf_char score_table_F0[] = {
SCORE_L2, SCORE_L2, SCORE_L2, SCORE_L2,
SCORE_L2, SCORE_DEPEND, SCORE_NO_EXIST, SCORE_NO_EXIST,
SCORE_DEPEND, SCORE_DEPEND, SCORE_DEPEND, SCORE_DEPEND,
SCORE_DEPEND, SCORE_NO_EXIST, SCORE_NO_EXIST, SCORE_ERROR,
};
-void set_code_score(struct input_code *ptr, int score)
+void set_code_score(struct input_code *ptr, nkf_char score)
{
if (ptr){
ptr->score |= score;
}
}
-void clr_code_score(struct input_code *ptr, int score)
+void clr_code_score(struct input_code *ptr, nkf_char score)
{
if (ptr){
ptr->score &= ~score;
void code_score(struct input_code *ptr)
{
- int c2 = ptr->buf[0];
+ nkf_char c2 = ptr->buf[0];
#ifdef UTF8_OUTPUT_ENABLE
- int c1 = ptr->buf[1];
+ nkf_char c1 = ptr->buf[1];
#endif
if (c2 < 0){
set_code_score(ptr, SCORE_ERROR);
if (iconv == ptr->iconv_func) set_iconv(FALSE, 0);
}
-void status_push_ch(struct input_code *ptr, int c)
+void status_push_ch(struct input_code *ptr, nkf_char c)
{
ptr->buf[ptr->index++] = c;
}
ptr->_file_stat = 0;
}
-void status_check(struct input_code *ptr, int c)
+void status_check(struct input_code *ptr, nkf_char c)
{
if (c <= DEL && estab_f){
status_reset(ptr);
}
}
-void s_status(struct input_code *ptr, int c)
+void s_status(struct input_code *ptr, nkf_char c)
{
switch(ptr->stat){
case -1:
}
}
-void e_status(struct input_code *ptr, int c)
+void e_status(struct input_code *ptr, nkf_char c)
{
switch (ptr->stat){
case -1:
}
#ifdef UTF8_INPUT_ENABLE
-void w16_status(struct input_code *ptr, int c)
+void w16_status(struct input_code *ptr, nkf_char c)
{
switch (ptr->stat){
case -1:
}
}
-void w_status(struct input_code *ptr, int c)
+void w_status(struct input_code *ptr, nkf_char c)
{
switch (ptr->stat){
case -1:
}
#endif
-void code_status(int c)
+void code_status(nkf_char c)
{
int action_flag = 1;
struct input_code *result = 0;
}
#ifndef WIN32DLL
-int std_getc(FILE *f)
+nkf_char std_getc(FILE *f)
{
if (std_gc_ndx){
return std_gc_buf[--std_gc_ndx];
}
#endif /*WIN32DLL*/
-int std_ungetc(int c, FILE *f)
+nkf_char std_ungetc(nkf_char c, FILE *f)
{
if (std_gc_ndx == STD_GC_BUFSIZE){
return EOF;
}
#ifndef WIN32DLL
-void std_putc(int c)
+void std_putc(nkf_char c)
{
if(c!=EOF)
putchar(c);
#endif /*WIN32DLL*/
#if !defined(PERL_XS) && !defined(WIN32DLL)
-int noconvert(FILE *f)
+nkf_char noconvert(FILE *f)
{
- int c;
+ nkf_char c;
if (nop_f == 2)
module_connection();
Conversion main loop. Code detection only.
*/
-int kanji_convert(FILE *f)
+nkf_char kanji_convert(FILE *f)
{
- int c1,
+ nkf_char c1,
c2, c3;
int is_8bit = FALSE;
switch(input_mode){
case ASCII:
if ((*iconv)(c2, c1, 0) < 0){ /* can be EUC/SJIS */
- int c0 = (*i_getc)(f);
+ nkf_char c0 = (*i_getc)(f);
if (c0 != EOF){
code_status(c0);
(*iconv)(c2, c1, c0);
break;
#ifdef X0212_ENABLE
case X0212:
+#if defined(INT_IS_SHORT)
+ (*oconv)(0x8f00L | c2, c1);
+#else
(*oconv)((0x8f << 8) | c2, c1);
+#endif
break;
#endif /* X0212_ENABLE */
case X0213_2:
+#if defined(INT_IS_SHORT)
+ (*oconv)(0x8f00L | c2, c1);
+#else
(*oconv)((0x8f << 8) | c2, c1);
+#endif
break;
default:
(*oconv)(input_mode, c1); /* other special case */
return 1;
}
-int
-h_conv(FILE *f, int c2, int c1)
+nkf_char
+h_conv(FILE *f, nkf_char c2, nkf_char c1)
{
- int wc,c3;
+ nkf_char wc,c3;
/** it must NOT be in the kanji shifte sequence */
code_status(c1);
}
if ((*iconv)(c2, c1, 0) < 0){
- int c0;
+ nkf_char c0;
if (wc < hold_count){
c0 = hold_buf[wc++];
}else{
-int
-push_hold_buf(int c2)
+nkf_char
+push_hold_buf(nkf_char c2)
{
if (hold_count >= HOLD_SIZE*2)
return (EOF);
return ((hold_count >= HOLD_SIZE*2) ? EOF : hold_count);
}
-int s2e_conv(int c2, int c1, int *p2, int *p1)
+nkf_char s2e_conv(nkf_char c2, nkf_char c1, nkf_char *p2, nkf_char *p1)
{
#if defined(SHIFTJIS_CP932) || defined(X0212_ENABLE)
- int val;
+ nkf_char val;
#endif
- static const int shift_jisx0213_s1a3_table[5][2] ={ { 1, 8}, { 3, 4}, { 5,12}, {13,14}, {15, 0} };
+ static const nkf_char shift_jisx0213_s1a3_table[5][2] ={ { 1, 8}, { 3, 4}, { 5,12}, {13,14}, {15, 0} };
#ifdef SHIFTJIS_CP932
if (cp51932_f && CP932_TABLE_BEGIN <= c2 && c2 <= CP932_TABLE_END){
+#if 0
extern const unsigned short shiftjis_cp932[3][189];
+#endif
val = shiftjis_cp932[c2 - CP932_TABLE_BEGIN][c1 - 0x40];
if (val){
c2 = val >> 8;
#endif /* SHIFTJIS_CP932 */
#ifdef X0212_ENABLE
if (!x0213_f && 0xfa <= c2 && c2 <= 0xfc){
+#if 0
extern const unsigned short shiftjis_x0212[3][189];
+#endif
val = shiftjis_x0212[c2 - 0xfa][c1 - 0x40];
if (val){
+#if defined(INT_IS_SHORT)
+ if (val & 0x8000L){
+#else
if (val & 0x8000){
+#endif
c2 = (0x8f << 8) | (val >> 8);
c1 = val & 0xff;
}else{
if(c2 >= 0x80){
if(x0213_f && c2 >= 0xF0){
if(c2 <= 0xF3 || (c2 == 0xF4 && c1 < 0x9F)){ /* k=1, 3<=k<=5, k=8, 12<=k<=15 */
+#if defined(INT_IS_SHORT)
+ c2 = 0x8F20L + shift_jisx0213_s1a3_table[c2 - 0xF0][0x9E < c1];
+#else
c2 = 0x8F20 + shift_jisx0213_s1a3_table[c2 - 0xF0][0x9E < c1];
+#endif
}else{ /* 78<=k<=94 */
+#if defined(INT_IS_SHORT)
+ c2 = 0x8F00L | (c2 * 2 - 0x17B);
+#else
c2 = 0x8F00 | (c2 * 2 - 0x17B);
+#endif
if (0x9E < c1) c2++;
}
}else{
return 0;
}
-int s_iconv(int c2, int c1, int c0)
+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) {
/* NOP */
} else {
- int ret = s2e_conv(c2, c1, &c2, &c1);
+ nkf_char ret = s2e_conv(c2, c1, &c2, &c1);
if (ret) return ret;
}
(*oconv)(c2, c1);
return 0;
}
-int e_iconv(int c2, int c1, int c0)
+nkf_char e_iconv(nkf_char c2, nkf_char c1, nkf_char c0)
{
if (c2 == X0201) {
c1 &= 0x7f;
c1 = c0 & 0x7f;
#ifdef SHIFTJIS_CP932
if (cp51932_f){
- int s2, s1;
+ nkf_char s2, s1;
if (e2s_conv(c2, c1, &s2, &s1) == 0){
s2e_conv(s2, s1, &c2, &c1);
+#if defined(INT_IS_SHORT)
+ if ((c2 & 0xff00L) == 0){
+#else
if ((c2 & 0xff00) == 0){
+#endif
c1 &= 0x7f;
c2 &= 0x7f;
}
}
#ifdef UTF8_INPUT_ENABLE
-int w2e_conv(int c2, int c1, int c0, int *p2, int *p1)
+nkf_char w2e_conv(nkf_char c2, nkf_char c1, nkf_char c0, nkf_char *p2, nkf_char *p1)
{
- int ret = 0;
+ nkf_char ret = 0;
if (!c1){
*p2 = 0;
return ret;
}
-int w_iconv(int c2, int c1, int c0)
+nkf_char w_iconv(nkf_char c2, nkf_char c1, nkf_char c0)
{
- int ret = 0;
+ nkf_char ret = 0;
/* throw away ZERO WIDTH NO-BREAK SPACE (U+FEFF) */
if(ignore_zwnbsp_f){
#endif
#if defined(UTF8_INPUT_ENABLE) || defined(UTF8_OUTPUT_ENABLE)
-void w16w_conv(int val, int *p2, int *p1, int *p0)
+void w16w_conv(nkf_char val, nkf_char *p2, nkf_char *p1, nkf_char *p0)
{
+#if defined(INT_IS_SHORT)
+ val &= 0xFFFFFFL;
+#else
val &= 0xFFFFFF;
+#endif
if (val < 0x80){
*p2 = val;
*p1 = 0;
#endif
#ifdef UTF8_INPUT_ENABLE
-int ww16_conv(int c2, int c1, int c0)
+nkf_char ww16_conv(nkf_char c2, nkf_char c1, nkf_char c0)
{
- int val;
+ nkf_char val;
if (c2 >= 0xf0){
val = -1;
}else if (c2 >= 0xe0){
return val;
}
-int w16e_conv(int val, int *p2, int *p1)
+nkf_char w16e_conv(nkf_char val, nkf_char *p2, nkf_char *p1)
{
- int c2, c1, c0;
- int ret = 0;
+ nkf_char c2, c1, c0;
+ nkf_char ret = 0;
+#if defined(INT_IS_SHORT)
+ val &= 0xFFFFFFL;
+#else
val &= 0xFFFFFF;
+#endif
if (val < 0x80){
*p2 = 0;
*p1 = val;
#endif
#ifdef UTF8_INPUT_ENABLE
-int w_iconv16(int c2, int c1, int c0)
+nkf_char w_iconv16(nkf_char c2, nkf_char c1, nkf_char c0)
{
- int ret;
+ nkf_char ret;
/* throw away ZERO WIDTH NO-BREAK SPACE (U+FEFF) */
if(ignore_zwnbsp_f){
}
}
if (c2 != EOF && utf16_mode == UTF16LE_INPUT) {
- int tmp;
+ nkf_char tmp;
tmp=c1; c1=c2; c2=tmp;
}
if ((c2==0 && c1 < 0x80) || c2==EOF) {
return 0;
}else if((c2>>3)==27){ /* surrogate pair */
return 1;
+#if defined(INT_IS_SHORT)
+ }else ret = w16e_conv(((c2 & 0xff)<<8) + c1, &c2, &c1);
+#else
}else ret = w16e_conv(((c2<<8)&0xff00) + c1, &c2, &c1);
+#endif
if (ret) return ret;
(*oconv)(c2, c1);
return 0;
}
-int unicode_to_jis_common(int c2, int c1, int c0, int *p2, int *p1)
+nkf_char unicode_to_jis_common(nkf_char c2, nkf_char c1, nkf_char c0, nkf_char *p2, nkf_char *p1)
{
+#if 0
extern const unsigned short *const utf8_to_euc_2bytes[];
extern const unsigned short *const utf8_to_euc_2bytes_ms[];
extern const unsigned short *const utf8_to_euc_2bytes_932[];
extern const unsigned short *const *const utf8_to_euc_3bytes[];
extern const unsigned short *const *const utf8_to_euc_3bytes_ms[];
extern const unsigned short *const *const utf8_to_euc_3bytes_932[];
+#endif
const unsigned short *const *pp;
const unsigned short *const *const *ppp;
static const int no_best_fit_chars_table_C2[] =
1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1};
- int ret = 0;
+ nkf_char ret = 0;
if(c2 < 0x80){
*p2 = 0;
ret = w_iconv_common(c1, c0, ppp[c2 - 0xE0], sizeof_utf8_to_euc_C2, p2, p1);
}else return -1;
#ifdef SHIFTJIS_CP932
+#if defined(INT_IS_SHORT)
+ if (!ret && cp51932_f && ((unsigned short)(*p2) >> 8) == 0x8f) {
+#else
if (!ret && cp51932_f && (*p2 & 0xff00) >> 8 == 0x8f) {
- int s2, s1;
+#endif
+ nkf_char s2, s1;
if (e2s_conv(*p2, *p1, &s2, &s1) == 0) {
s2e_conv(s2, s1, p2, p1);
}else{
return ret;
}
-int w_iconv_common(int c1, int c0, const unsigned short *const *pp, int psize, int *p2, int *p1)
+nkf_char w_iconv_common(nkf_char c1, nkf_char c0, const unsigned short *const *pp, nkf_char psize, nkf_char *p2, nkf_char *p1)
{
- int c2;
+ nkf_char c2;
const unsigned short *p;
unsigned short val;
if (val == 0) return 1;
if (no_cp932ext_f && (
(val>>8) == 0x2D || /* NEC special characters */
+#if defined(INT_IS_SHORT)
+ val > 0xF300L /* NEC special characters */
+#else
val > 0xF300 /* NEC special characters */
+#endif
)) return 1;
c2 = val >> 8;
- if (val & 0x8000){
+#if defined(INT_IS_SHORT)
+ if (val & 0x8000L){
+ c2 &= 0x7f;
+ c2 |= 0x8f00L;
+ }
+#else
+ if (val & 0x8000){
c2 &= 0x7f;
c2 |= 0x8f00;
}
+#endif
if (c2 == SO) c2 = X0201;
c1 = val & 0x7f;
if (p2) *p2 = c2;
return 0;
}
-void nkf_each_char_to_hex(void (*f)(int c2,int c1), int c)
+void nkf_each_char_to_hex(void (*f)(nkf_char c2,nkf_char c1), nkf_char c)
{
const char *hex = "0123456789ABCDEF";
int shift = 20;
+#if defined(INT_IS_SHORT)
+ c &= 0x00FFFFFFL;
+#else
c &= 0x00FFFFFF;
+#endif
while(shift >= 0){
if(c >= 1<<shift){
while(shift >= 0){
return;
}
-void encode_fallback_html(int c)
+void encode_fallback_html(nkf_char c)
{
(*oconv)(0, '&');
(*oconv)(0, '#');
+#if defined(INT_IS_SHORT)
+ c &= 0x00FFFFFFL;
+ if(c >= 1000000L)
+ (*oconv)(0, 0x30+(c/1000000L)%10);
+ if(c >= 100000L)
+ (*oconv)(0, 0x30+(c/100000L )%10);
+#else
c &= 0x00FFFFFF;
if(c >= 1000000)
(*oconv)(0, 0x30+(c/1000000)%10);
if(c >= 100000)
(*oconv)(0, 0x30+(c/100000 )%10);
+#endif
if(c >= 10000)
(*oconv)(0, 0x30+(c/10000 )%10);
if(c >= 1000)
return;
}
-void encode_fallback_xml(int c)
+void encode_fallback_xml(nkf_char c)
{
(*oconv)(0, '&');
(*oconv)(0, '#');
return;
}
-void encode_fallback_java(int c)
+void encode_fallback_java(nkf_char c)
{
const char *hex = "0123456789ABCDEF";
(*oconv)(0, '\\');
+#if defined(INT_IS_SHORT)
+ if((c&0x00FFFFFFL) > 0xFFFFL){
+#else
if((c&0x00FFFFFF) > 0xFFFF){
+#endif
(*oconv)(0, 'U');
(*oconv)(0, '0');
(*oconv)(0, '0');
return;
}
-void encode_fallback_perl(int c)
+void encode_fallback_perl(nkf_char c)
{
(*oconv)(0, '\\');
(*oconv)(0, 'x');
return;
}
-void encode_fallback_subchar(int c)
+void encode_fallback_subchar(nkf_char c)
{
c = unicode_subchar;
(*oconv)((c>>8)&0xFF, c&0xFF);
#endif
#ifdef UTF8_OUTPUT_ENABLE
-int e2w_conv(int c2, int c1)
+nkf_char e2w_conv(nkf_char c2, nkf_char c1)
{
+#if 0
extern const unsigned short euc_to_utf8_1byte[];
extern const unsigned short *const euc_to_utf8_2bytes[];
extern const unsigned short *const euc_to_utf8_2bytes_ms[];
extern const unsigned short *const x0212_to_utf8_2bytes[];
+#endif
const unsigned short *p;
if (c2 == X0201) {
p = euc_to_utf8_1byte;
#ifdef X0212_ENABLE
} else if (c2 >> 8 == 0x8f){
+#if defined(INT_IS_SHORT)
+ if(ms_ucs_map_f == UCS_MAP_ASCII&& c2 == 0x8F22L && c1 == 0x43){
+#else
if(ms_ucs_map_f == UCS_MAP_ASCII&& c2 == 0x8F22 && c1 == 0x43){
+#endif
return 0xA6;
}
c2 = (c2&0x7f) - 0x21;
return 0;
}
-void w_oconv(int c2, int c1)
+void w_oconv(nkf_char c2, nkf_char c1)
{
- int c0;
- int val;
+ nkf_char c0;
+ nkf_char val;
if (c2 == EOF) {
(*o_putc)(EOF);
return;
}
}
-void w_oconv16(int c2, int c1)
+void w_oconv16(nkf_char c2, nkf_char c1)
{
if (c2 == EOF) {
(*o_putc)(EOF);
c1 &= 0xff;
#endif
} else if (c2) {
- int val = e2w_conv(c2, c1);
+ nkf_char val = e2w_conv(c2, c1);
c2 = (val >> 8) & 0xff;
c1 = val & 0xff;
}
#endif
-void e_oconv(int c2, int c1)
+void e_oconv(nkf_char c2, nkf_char c1)
{
#ifdef NUMCHAR_OPTION
if (c2 == 0 && (c1 & CLASS_MASK) == CLASS_UTF16){
output_mode = ISO8859_1;
(*o_putc)(c1 | 0x080);
#ifdef X0212_ENABLE
+#if defined(INT_IS_SHORT)
+ } else if (((unsigned short)c2 >> 8) == 0x8f){
+#else
} else if ((c2 & 0xff00) >> 8 == 0x8f){
+#endif
output_mode = JAPANESE_EUC;
#ifdef SHIFTJIS_CP932
if (cp51932_f){
- int s2, s1;
+ nkf_char s2, s1;
if (e2s_conv(c2, c1, &s2, &s1) == 0){
s2e_conv(s2, s1, &c2, &c1);
}
if (c2 == 0) {
output_mode = ASCII;
(*o_putc)(c1);
+#if defined(INT_IS_SHORT)
+ }else if (((unsigned short)c2 >> 8) == 0x8f){
+#else
}else if ((c2 & 0xff00) >> 8 == 0x8f){
+#endif
if (x0212_f){
(*o_putc)(0x8f);
(*o_putc)((c2 & 0x7f) | 0x080);
}
#ifdef X0212_ENABLE
-int x0212_shift(int c)
+nkf_char x0212_shift(nkf_char c)
{
- int ret = c;
+ nkf_char ret = c;
c &= 0x7f;
+#if defined(INT_IS_SHORT)
+ if ((ret & 0xff00L) == 0x8f00L){
+#else
if ((ret & 0xff00) == 0x8f00){
+#endif
if (0x75 <= c && c <= 0x7f){
ret = c + (0x109 - 0x75);
}
}
-int x0212_unshift(int c)
+nkf_char x0212_unshift(nkf_char c)
{
- int ret = c;
+ nkf_char ret = c;
if (0x7f <= c && c <= 0x88){
ret = c + (0x75 - 0x7f);
}else if (0x89 <= c && c <= 0x92){
}
#endif /* X0212_ENABLE */
-int e2s_conv(int c2, int c1, int *p2, int *p1)
+nkf_char e2s_conv(nkf_char c2, nkf_char c1, nkf_char *p2, nkf_char *p1)
{
- int ndx;
+ nkf_char ndx;
+#if defined(INT_IS_SHORT)
+ if ((c2 & 0xff00L) == 0x8f00L){
+#else
if ((c2 & 0xff00) == 0x8f00){
+#endif
ndx = c2 & 0xff;
if (x0213_f){
if((0x21 <= ndx && ndx <= 0x2F)){
}
#ifdef X0212_ENABLE
else if(0x21 <= ndx && ndx <= 0x7e){
- int val = 0;
+ nkf_char val = 0;
const unsigned short *ptr;
+#if 0
extern const unsigned short *const x0212_shiftjis[];
+#endif
ptr = x0212_shiftjis[ndx - 0x21];
if (ptr){
val = ptr[(c1 & 0x7f) - 0x21];
return 0;
}
-void s_oconv(int c2, int c1)
+void s_oconv(nkf_char c2, nkf_char c1)
{
#ifdef NUMCHAR_OPTION
if (c2 == 0 && (c1 & CLASS_MASK) == CLASS_UTF16){
output_mode = ISO8859_1;
(*o_putc)(c1 | 0x080);
#ifdef X0212_ENABLE
+#if defined(INT_IS_SHORT)
+ } else if (((unsigned short)c2 >> 8) == 0x8f){
+#else
} else if ((c2 & 0xff00) >> 8 == 0x8f){
+#endif
output_mode = SHIFT_JIS;
if (e2s_conv(c2, c1, &c2, &c1) == 0){
(*o_putc)(c2);
#ifdef SHIFTJIS_CP932
if (cp932inv_f
&& CP932INV_TABLE_BEGIN <= c2 && c2 <= CP932INV_TABLE_END){
+#if 0
extern const unsigned short cp932inv[2][189];
- int c = cp932inv[c2 - CP932INV_TABLE_BEGIN][c1 - 0x40];
+#endif
+ nkf_char c = cp932inv[c2 - CP932INV_TABLE_BEGIN][c1 - 0x40];
if (c){
c2 = c >> 8;
c1 = c & 0xff;
}
}
-void j_oconv(int c2, int c1)
+void j_oconv(nkf_char c2, nkf_char c1)
{
#ifdef NUMCHAR_OPTION
if (c2 == 0 && (c1 & CLASS_MASK) == CLASS_UTF16){
}
(*o_putc)(EOF);
#ifdef X0212_ENABLE
+#if defined(INT_IS_SHORT)
+ } else if (((unsigned short)c2 >> 8) == 0x8f){
+#else
} else if ((c2 & 0xff00) >> 8 == 0x8f){
+#endif
if(x0213_f){
if(output_mode!=X0213_2){
output_mode = X0213_2;
}
}
-void base64_conv(int c2, int c1)
+void base64_conv(nkf_char c2, nkf_char c1)
{
mime_prechar(c2, c1);
(*o_base64conv)(c2,c1);
}
-static int broken_buf[3];
+static nkf_char broken_buf[3];
static int broken_counter = 0;
static int broken_last = 0;
-int broken_getc(FILE *f)
+nkf_char broken_getc(FILE *f)
{
- int c,c1;
+ nkf_char c,c1;
if (broken_counter>0) {
return broken_buf[--broken_counter];
}
}
-int broken_ungetc(int c, FILE *f)
+nkf_char broken_ungetc(nkf_char c, FILE *f)
{
if (broken_counter<2)
broken_buf[broken_counter++]=c;
return c;
}
-static int prev_cr = 0;
+static nkf_char prev_cr = 0;
-void cr_conv(int c2, int c1)
+void cr_conv(nkf_char c2, nkf_char c1)
{
if (prev_cr) {
prev_cr = 0;
#define char_size(c2,c1) (c2?2:1)
-void fold_conv(int c2, int c1)
+void fold_conv(nkf_char c2, nkf_char c1)
{
- int prev0;
- int fold_state;
+ nkf_char prev0;
+ nkf_char fold_state;
if (c1== '\r' && !fold_preserve_f) {
fold_state=0; /* ignore cr */
}
}
-int z_prev2=0,z_prev1=0;
+nkf_char z_prev2=0,z_prev1=0;
-void z_conv(int c2, int c1)
+void z_conv(nkf_char c2, nkf_char c1)
{
/* if (c2) c1 &= 0x7f; assertion */
c \
)
-void rot_conv(int c2, int c1)
+void rot_conv(nkf_char c2, nkf_char c1)
{
if (c2==0 || c2==X0201 || c2==ISO8859_1) {
c1 = rot13(c1);
(*o_rot_conv)(c2,c1);
}
-void hira_conv(int c2, int c1)
+void hira_conv(nkf_char c2, nkf_char c1)
{
if (hira_f & 1) {
if (c2 == 0x25) {
}
-void iso2022jp_check_conv(int c2, int c1)
+void iso2022jp_check_conv(nkf_char c2, nkf_char c1)
{
- static const int range[RANGE_NUM_MAX][2] = {
+ static const nkf_char range[RANGE_NUM_MAX][2] = {
{0x222f, 0x2239,},
{0x2242, 0x2249,},
{0x2251, 0x225b,},
{0x4f54, 0x4f7e,},
{0x7425, 0x747e},
};
- int i;
- int start, end, c;
+ nkf_char i;
+ nkf_char start, end, c;
if(c2 >= 0x00 && c2 <= 0x20 && c1 >= 0x7f && c1 <= 0xff) {
c2 = GETA1;
/* \e$B3:Ev$9$k%3!<%I$NM%@hEY$r>e$2$k$?$a$NL\0u\e(B */
-int (*mime_priority_func[])(int c2, int c1, int c0) = {
+nkf_char (*mime_priority_func[])(nkf_char c2, nkf_char c1, nkf_char c0) = {
e_iconv, s_iconv, 0, 0, 0, 0,
#if defined(UTF8_INPUT_ENABLE)
w_iconv, w_iconv,
0,
};
-const int mime_encode[] = {
+const nkf_char mime_encode[] = {
JAPANESE_EUC, SHIFT_JIS,ISO8859_1, ISO8859_1, X0208, X0201,
#if defined(UTF8_INPUT_ENABLE)
UTF8, UTF8,
0
};
-const int mime_encode_method[] = {
+const nkf_char mime_encode_method[] = {
'B', 'B','Q', 'B', 'B', 'Q',
#if defined(UTF8_INPUT_ENABLE)
'B', 'Q',
mime_iconv_back = NULL;
}
-int mime_begin_strict(FILE *f)
+nkf_char mime_begin_strict(FILE *f)
{
- int c1 = 0;
+ nkf_char c1 = 0;
int i,j,k;
const unsigned char *p,*q;
- int r[MAXRECOVER]; /* recovery buffer, max mime pattern lenght */
+ nkf_char r[MAXRECOVER]; /* recovery buffer, max mime pattern length */
mime_decode_mode = FALSE;
/* =? has been checked */
return c1;
}
-int mime_getc_buf(FILE *f)
+nkf_char mime_getc_buf(FILE *f)
{
/* we don't keep eof of Fifo, becase it contains ?= as
a terminator. It was checked in mime_integrity. */
(*i_mgetc_buf)(f):Fifo(mime_input++));
}
-int mime_ungetc_buf(int c, FILE *f)
+nkf_char mime_ungetc_buf(nkf_char c, FILE *f)
{
if (mimebuf_f)
(*i_mungetc_buf)(c,f);
return c;
}
-int mime_begin(FILE *f)
+nkf_char mime_begin(FILE *f)
{
- int c1;
+ nkf_char c1;
int i,k;
/* In NONSTRICT mode, only =? is checked. In case of failure, we */
}
#ifdef CHECK_OPTION
-void no_putc(int c)
+void no_putc(nkf_char c)
{
;
}
#ifdef INPUT_OPTION
-int hex_getc(int ch, FILE *f, int (*g)(FILE *f), int (*u)(int c, FILE *f))
+nkf_char hex_getc(nkf_char ch, FILE *f, nkf_char (*g)(FILE *f), nkf_char (*u)(nkf_char c, FILE *f))
{
- int c1, c2, c3;
+ nkf_char c1, c2, c3;
c1 = (*g)(f);
if (c1 != ch){
return c1;
return (hex2bin(c2) << 4) | hex2bin(c3);
}
-int cap_getc(FILE *f)
+nkf_char cap_getc(FILE *f)
{
return hex_getc(':', f, i_cgetc, i_cungetc);
}
-int cap_ungetc(int c, FILE *f)
+nkf_char cap_ungetc(nkf_char c, FILE *f)
{
return (*i_cungetc)(c, f);
}
-int url_getc(FILE *f)
+nkf_char url_getc(FILE *f)
{
return hex_getc('%', f, i_ugetc, i_uungetc);
}
-int url_ungetc(int c, FILE *f)
+nkf_char url_ungetc(nkf_char c, FILE *f)
{
return (*i_uungetc)(c, f);
}
#endif
#ifdef NUMCHAR_OPTION
-int numchar_getc(FILE *f)
+nkf_char numchar_getc(FILE *f)
{
- int (*g)(FILE *) = i_ngetc;
- int (*u)(int c ,FILE *f) = i_nungetc;
+ nkf_char (*g)(FILE *) = i_ngetc;
+ nkf_char (*u)(nkf_char c ,FILE *f) = i_nungetc;
int i = 0, j;
- int buf[8];
+ nkf_char buf[8];
long c = -1;
buf[i] = (*g)(f);
return buf[0];
}
-int numchar_ungetc(int c, FILE *f)
+nkf_char numchar_ungetc(nkf_char c, FILE *f)
{
return (*i_nungetc)(c, f);
}
#ifdef UNICODE_NORMALIZATION
/* Normalization Form C */
-int nfc_getc(FILE *f)
+nkf_char nfc_getc(FILE *f)
{
- int (*g)(FILE *f) = i_nfc_getc;
- int (*u)(int c ,FILE *f) = i_nfc_ungetc;
+ nkf_char (*g)(FILE *f) = i_nfc_getc;
+ nkf_char (*u)(nkf_char c ,FILE *f) = i_nfc_ungetc;
int i=0, j, k=1, lower, upper;
- int buf[9];
- const int *array;
+ nkf_char buf[9];
+ const nkf_nfchar *array;
+#if 0
extern const struct normalization_pair normalization_table[];
+#endif
buf[i] = (*g)(f);
while (k > 0 && ((buf[i] & 0xc0) != 0x80)){
if (k > 0){
array = normalization_table[j].nfc;
for (i=0; i < NORMALIZATION_TABLE_NFC_LENGTH && array[i]; i++)
- buf[i] = array[i];
+ buf[i] = (nkf_char)(array[i]);
i--;
break;
}
return buf[0];
}
-int nfc_ungetc(int c, FILE *f)
+nkf_char nfc_ungetc(nkf_char c, FILE *f)
{
return (*i_nfc_ungetc)(c, f);
}
#endif /* UNICODE_NORMALIZATION */
-int
+nkf_char
mime_getc(FILE *f)
{
- int c1, c2, c3, c4, cc;
- int t1, t2, t3, t4, mode, exit_mode;
- int lwsp_count;
+ nkf_char c1, c2, c3, c4, cc;
+ nkf_char t1, t2, t3, t4, mode, exit_mode;
+ nkf_char lwsp_count;
char *lwsp_buf;
char *lwsp_buf_new;
- int lwsp_size = 128;
+ nkf_char lwsp_size = 128;
if (mime_top != mime_last) { /* Something is in FIFO */
return Fifo(mime_top++);
return Fifo(mime_top++);
}
-int mime_ungetc(int c, FILE *f)
+nkf_char mime_ungetc(nkf_char c, FILE *f)
{
Fifo(--mime_top) = (unsigned char)c;
return c;
}
-int mime_integrity(FILE *f, const unsigned char *p)
+nkf_char mime_integrity(FILE *f, const unsigned char *p)
{
- int c,d;
+ nkf_char c,d;
unsigned int q;
/* In buffered mode, read until =? or NL or buffer full
*/
return 1;
}
-int base64decode(int c)
+nkf_char base64decode(nkf_char c)
{
int i;
if (c > '@') {
static const char basis_64[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-static int b64c;
+static nkf_char b64c;
#define MIMEOUT_BUF_LENGTH (60)
char mimeout_buf[MIMEOUT_BUF_LENGTH+1];
int mimeout_buf_count = 0;
int mimeout_preserve_space = 0;
#define itoh4(c) (c>=10?c+'A'-10:c+'0')
-void open_mime(int mode)
+void open_mime(nkf_char mode)
{
const unsigned char *p;
int i;
}
}
-void mimeout_addchar(int c)
+void mimeout_addchar(nkf_char c)
{
switch(mimeout_mode) {
case 'Q':
}
}
-int mime_lastchar2, mime_lastchar1;
+nkf_char mime_lastchar2, mime_lastchar1;
-void mime_prechar(int c2, int c1)
+void mime_prechar(nkf_char c2, nkf_char c1)
{
if (mimeout_mode){
if (c2){
mime_lastchar1 = c1;
}
-void mime_putc(int c)
+void mime_putc(nkf_char c)
{
int i, j;
- int lastchar;
+ nkf_char lastchar;
if (mimeout_f == FIXED_MIME){
if (mimeout_mode == 'Q'){
}
#endif
-void no_connection(int c2, int c1)
+void no_connection(nkf_char c2, nkf_char c1)
{
no_connection2(c2,c1,0);
}
-int no_connection2(int c2, int c1, int c0)
+nkf_char no_connection2(nkf_char c2, nkf_char c1, nkf_char c0)
{
fprintf(stderr,"nkf internal module connection failure.\n");
exit(1);