public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c/4117: Got a internal error when make php
@ 2001-08-24 8:26 qizhi
0 siblings, 0 replies; 3+ messages in thread
From: qizhi @ 2001-08-24 8:26 UTC (permalink / raw)
To: gcc-gnats
>Number: 4117
>Category: c
>Synopsis: Got a internal error when make php
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-illegal-code
>Submitter-Id: net
>Arrival-Date: Fri Aug 24 08:26:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:
>Release: 3.0.1
>Organization:
>Environment:
System: Linux qizhi.homeip.net 2.2.16-22 #1 Tue Aug 22 16:49:06 EDT 2000 i686 unknown
Architecture: i686
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc-3.0.1/configure --enable-shared --enable-threads
>Description:
When make php-4.0.6 as an Apache module, got segmentation fault.
It seems enabling multi-bite string feature of PHP4 causes the problem.
>How-To-Repeat:
tar xzvf php-4.0.6.tar.gz
cd php-4.0.6
./configure --with-apxs=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-pgsql=/usr/local/pgsql --with-pspell --enable-mbstring --enable-memory-limit --enable-trans-sid
make
... ...
/bin/sh /usr/local/src/temp/php-4.0.6/libtool --silent --mode=compile gcc -E -I. -I/usr/local/src/temp/php-4.0.6/ext/mbstring -I/usr/local/src/temp/php-4.0.6/main -I/usr/local/src/temp/php-4.0.6 -I/usr/local/apache/include -I/usr/local/src/temp/php-4.0.6/Zend -I/usr/local/mysql/include/mysql -I/usr/include/pspell -I/usr/local/src/temp/php-4.0.6/ext/xml/expat/xmltok -I/usr/local/src/temp/php-4.0.6/ext/xml/expat/xmlparse -I/usr/local/src/temp/php-4.0.6/TSRM -DLINUX=22 -DMOD_PERL -DUSE_HSREGEX -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DSUPPORT_UTF8 -DXML_BYTE_ORDER=12 -g -O2 -c mbfilter.c
mbfilter.c:129: Internal error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
make[3]: *** [mbfilter.lo] Error 1
make[3]: Leaving directory `/usr/local/src/temp/php-4.0.6/ext/mbstring'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/usr/local/src/temp/php-4.0.6/ext/mbstring'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/temp/php-4.0.6/ext'
make: *** [all-recursive] Error 1
----preprocessor output for mbfilter.c --- begin ---
# 83 "mbfilter.c"
# 1 "/usr/include/stdlib.h" 1 3
# 25 "/usr/include/stdlib.h" 3
# 1 "/usr/include/features.h" 1 3
# 282 "/usr/include/features.h" 3
# 1 "/usr/include/sys/cdefs.h" 1 3
# 283 "/usr/include/features.h" 2 3
# 310 "/usr/include/features.h" 3
# 1 "/usr/include/gnu/stubs.h" 1 3
# 311 "/usr/include/features.h" 2 3
# 26 "/usr/include/stdlib.h" 2 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 199 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 3
typedef unsigned int size_t;
# 287 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 3
typedef long int wchar_t;
# 34 "/usr/include/stdlib.h" 2 3
# 94 "/usr/include/stdlib.h" 3
typedef struct
{
int quot;
int rem;
} div_t;
typedef struct
{
long int quot;
long int rem;
} ldiv_t;
# 133 "/usr/include/stdlib.h" 3
extern size_t __ctype_get_mb_cur_max (void) ;
extern double atof (__const char *__nptr) __attribute__ ((__pure__));
extern int atoi (__const char *__nptr) __attribute__ ((__pure__));
extern long int atol (__const char *__nptr) __attribute__ ((__pure__));
__extension__ extern long long int atoll (__const char *__nptr)
__attribute__ ((__pure__));
extern double strtod (__const char *__restrict __nptr,
char **__restrict __endptr) ;
# 163 "/usr/include/stdlib.h" 3
extern long int strtol (__const char *__restrict __nptr,
char **__restrict __endptr, int __base) ;
extern unsigned long int strtoul (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
;
__extension__
extern long long int strtoq (__const char *__restrict __nptr,
char **__restrict __endptr, int __base) ;
__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
;
__extension__
extern long long int strtoll (__const char *__restrict __nptr,
char **__restrict __endptr, int __base) ;
__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr,
char **__restrict __endptr, int __base)
;
# 250 "/usr/include/stdlib.h" 3
extern double __strtod_internal (__const char *__restrict __nptr,
char **__restrict __endptr, int __group)
;
extern float __strtof_internal (__const char *__restrict __nptr,
char **__restrict __endptr, int __group)
;
extern long double __strtold_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __group) ;
extern long int __strtol_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, int __group) ;
extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, int __group) ;
__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, int __group) ;
__extension__
extern unsigned long long int __strtoull_internal (__const char *
__restrict __nptr,
char **__restrict __endptr,
int __base, int __group)
;
# 294 "/usr/include/stdlib.h" 3
extern __inline double
strtod (__const char *__restrict __nptr, char **__restrict __endptr)
{
return __strtod_internal (__nptr, __endptr, 0);
}
extern __inline long int
strtol (__const char *__restrict __nptr, char **__restrict __endptr,
int __base)
{
return __strtol_internal (__nptr, __endptr, __base, 0);
}
extern __inline unsigned long int
strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
int __base)
{
return __strtoul_internal (__nptr, __endptr, __base, 0);
}
# 326 "/usr/include/stdlib.h" 3
__extension__ extern __inline long long int
strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
int __base)
{
return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
int __base)
{
return __strtoull_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline long long int
strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
int __base)
{
return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
int __base)
{
return __strtoull_internal (__nptr, __endptr, __base, 0);
}
extern __inline double
atof (__const char *__nptr)
{
return strtod (__nptr, (char **) ((void *)0));
}
extern __inline int
atoi (__const char *__nptr)
{
return (int) strtol (__nptr, (char **) ((void *)0), 10);
}
extern __inline long int
atol (__const char *__nptr)
{
return strtol (__nptr, (char **) ((void *)0), 10);
}
__extension__ extern __inline long long int
atoll (__const char *__nptr)
{
return strtoll (__nptr, (char **) ((void *)0), 10);
}
# 385 "/usr/include/stdlib.h" 3
extern char *l64a (long int __n) ;
extern long int a64l (__const char *__s) __attribute__ ((__pure__));
# 1 "/usr/include/sys/types.h" 1 3
# 26 "/usr/include/sys/types.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/sys/types.h" 2 3
# 1 "/usr/include/bits/types.h" 1 3
# 26 "/usr/include/bits/types.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/bits/types.h" 2 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 30 "/usr/include/bits/types.h" 2 3
typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;
__extension__ typedef unsigned long long int __u_quad_t;
__extension__ typedef long long int __quad_t;
# 49 "/usr/include/bits/types.h" 3
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;
typedef __quad_t *__qaddr_t;
typedef __u_quad_t __dev_t;
typedef __u_int __uid_t;
typedef __u_int __gid_t;
typedef __u_long __ino_t;
typedef __u_int __mode_t;
typedef __u_int __nlink_t;
typedef long int __off_t;
typedef __quad_t __loff_t;
typedef int __pid_t;
typedef int __ssize_t;
typedef __u_long __rlim_t;
typedef __u_quad_t __rlim64_t;
typedef __u_int __id_t;
typedef struct
{
int __val[2];
} __fsid_t;
typedef int __daddr_t;
typedef char *__caddr_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef long int __swblk_t;
typedef long int __clock_t;
typedef int __clockid_t;
typedef int __timer_t;
typedef unsigned long int __fd_mask;
# 109 "/usr/include/bits/types.h" 3
typedef struct
{
__fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];
} __fd_set;
typedef int __key_t;
typedef unsigned short int __ipc_pid_t;
typedef long int __blksize_t;
typedef long int __blkcnt_t;
typedef __quad_t __blkcnt64_t;
typedef __u_long __fsblkcnt_t;
typedef __u_quad_t __fsblkcnt64_t;
typedef __u_long __fsfilcnt_t;
typedef __u_quad_t __fsfilcnt64_t;
typedef __u_quad_t __ino64_t;
typedef __loff_t __off64_t;
typedef long int __t_scalar_t;
typedef unsigned long int __t_uscalar_t;
typedef int __intptr_t;
typedef unsigned int __socklen_t;
# 1 "/usr/include/bits/pthreadtypes.h" 1 3
# 23 "/usr/include/bits/pthreadtypes.h" 3
# 1 "/usr/include/bits/sched.h" 1 3
# 68 "/usr/include/bits/sched.h" 3
struct __sched_param
{
int sched_priority;
};
# 24 "/usr/include/bits/pthreadtypes.h" 2 3
struct _pthread_fastlock
{
long int __status;
int __spinlock;
};
typedef struct _pthread_descr_struct *_pthread_descr;
typedef struct
{
int __detachstate;
int __schedpolicy;
struct __sched_param __schedparam;
int __inheritsched;
int __scope;
size_t __guardsize;
int __stackaddr_set;
void *__stackaddr;
size_t __stacksize;
} pthread_attr_t;
typedef struct
{
struct _pthread_fastlock __c_lock;
_pthread_descr __c_waiting;
} pthread_cond_t;
typedef struct
{
int __dummy;
} pthread_condattr_t;
typedef unsigned int pthread_key_t;
typedef struct
{
int __m_reserved;
int __m_count;
_pthread_descr __m_owner;
int __m_kind;
struct _pthread_fastlock __m_lock;
} pthread_mutex_t;
typedef struct
{
int __mutexkind;
} pthread_mutexattr_t;
typedef int pthread_once_t;
# 140 "/usr/include/bits/pthreadtypes.h" 3
typedef unsigned long int pthread_t;
# 166 "/usr/include/bits/types.h" 2 3
# 31 "/usr/include/sys/types.h" 2 3
typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;
typedef __loff_t loff_t;
typedef __ino64_t ino_t;
# 58 "/usr/include/sys/types.h" 3
typedef __dev_t dev_t;
typedef __gid_t gid_t;
typedef __mode_t mode_t;
typedef __nlink_t nlink_t;
typedef __uid_t uid_t;
typedef __off64_t off_t;
# 96 "/usr/include/sys/types.h" 3
typedef __pid_t pid_t;
typedef __id_t id_t;
typedef __ssize_t ssize_t;
typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;
typedef __key_t key_t;
# 126 "/usr/include/sys/types.h" 3
# 1 "/usr/include/time.h" 1 3
# 68 "/usr/include/time.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 69 "/usr/include/time.h" 2 3
typedef __time_t time_t;
# 1 "/usr/include/bits/types.h" 1 3
# 80 "/usr/include/time.h" 2 3
typedef __clockid_t clockid_t;
# 1 "/usr/include/bits/types.h" 1 3
# 91 "/usr/include/time.h" 2 3
typedef __timer_t timer_t;
# 127 "/usr/include/sys/types.h" 2 3
# 140 "/usr/include/sys/types.h" 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 141 "/usr/include/sys/types.h" 2 3
typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 184 "/usr/include/sys/types.h" 3
typedef int int8_t __attribute__ ((__mode__ (__QI__)));
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef int int64_t __attribute__ ((__mode__ (__DI__)));
typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
typedef int register_t __attribute__ ((__mode__ (__word__)));
# 206 "/usr/include/sys/types.h" 3
# 1 "/usr/include/endian.h" 1 3
# 22 "/usr/include/endian.h" 3
# 1 "/usr/include/features.h" 1 3
# 23 "/usr/include/endian.h" 2 3
# 37 "/usr/include/endian.h" 3
# 1 "/usr/include/bits/endian.h" 1 3
# 38 "/usr/include/endian.h" 2 3
# 207 "/usr/include/sys/types.h" 2 3
# 1 "/usr/include/sys/select.h" 1 3
# 25 "/usr/include/sys/select.h" 3
# 1 "/usr/include/features.h" 1 3
# 26 "/usr/include/sys/select.h" 2 3
# 1 "/usr/include/bits/types.h" 1 3
# 29 "/usr/include/sys/select.h" 2 3
# 1 "/usr/include/bits/select.h" 1 3
# 32 "/usr/include/sys/select.h" 2 3
# 1 "/usr/include/bits/sigset.h" 1 3
# 23 "/usr/include/bits/sigset.h" 3
typedef int __sig_atomic_t;
typedef struct
{
unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
} __sigset_t;
# 35 "/usr/include/sys/select.h" 2 3
# 1 "/usr/include/time.h" 1 3
# 105 "/usr/include/time.h" 3
struct timespec
{
long int tv_sec;
long int tv_nsec;
};
# 39 "/usr/include/sys/select.h" 2 3
struct timeval;
typedef __fd_mask fd_mask;
typedef __fd_set fd_set;
# 74 "/usr/include/sys/select.h" 3
extern int select (int __nfds, __fd_set *__restrict __readfds,
__fd_set *__restrict __writefds,
__fd_set *__restrict __exceptfds,
struct timeval *__restrict __timeout) ;
# 210 "/usr/include/sys/types.h" 2 3
# 1 "/usr/include/sys/sysmacros.h" 1 3
# 213 "/usr/include/sys/types.h" 2 3
# 237 "/usr/include/sys/types.h" 3
typedef __blkcnt64_t blkcnt_t;
typedef __fsblkcnt64_t fsblkcnt_t;
typedef __fsfilcnt64_t fsfilcnt_t;
# 392 "/usr/include/stdlib.h" 2 3
extern int32_t random (void) ;
extern void srandom (unsigned int __seed) ;
extern char *initstate (unsigned int __seed, char *__statebuf,
size_t __statelen) ;
extern char *setstate (char *__statebuf) ;
struct random_data
{
int32_t *fptr;
int32_t *rptr;
int32_t *state;
int rand_type;
int rand_deg;
int rand_sep;
int32_t *end_ptr;
};
extern int random_r (struct random_data *__restrict __buf,
int32_t *__restrict __result) ;
extern int srandom_r (unsigned int __seed, struct random_data *__buf) ;
extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
size_t __statelen,
struct random_data *__restrict __buf) ;
extern int setstate_r (char *__restrict __statebuf,
struct random_data *__restrict __buf) ;
extern int rand (void) ;
extern void srand (unsigned int __seed) ;
extern int rand_r (unsigned int *__seed) ;
extern double drand48 (void) ;
extern double erand48 (unsigned short int __xsubi[3]) ;
extern long int lrand48 (void) ;
extern long int nrand48 (unsigned short int __xsubi[3]) ;
extern long int mrand48 (void) ;
extern long int jrand48 (unsigned short int __xsubi[3]) ;
extern void srand48 (long int __seedval) ;
extern unsigned short int *seed48 (unsigned short int __seed16v[3]) ;
extern void lcong48 (unsigned short int __param[7]) ;
struct drand48_data
{
unsigned short int x[3];
unsigned short int a[3];
unsigned short int c;
unsigned short int old_x[3];
int init;
};
extern int drand48_r (struct drand48_data *__restrict __buffer,
double *__restrict __result) ;
extern int erand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
double *__restrict __result) ;
extern int lrand48_r (struct drand48_data *__restrict __buffer,
long int *__restrict __result) ;
extern int nrand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
long int *__restrict __result) ;
extern int mrand48_r (struct drand48_data *__restrict __buffer,
long int *__restrict __result) ;
extern int jrand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
long int *__restrict __result) ;
extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
;
extern int seed48_r (unsigned short int __seed16v[3],
struct drand48_data *__buffer) ;
extern int lcong48_r (unsigned short int __param[7],
struct drand48_data *__buffer) ;
# 526 "/usr/include/stdlib.h" 3
extern void *malloc (size_t __size) __attribute__ ((__malloc__));
extern void *calloc (size_t __nmemb, size_t __size)
__attribute__ ((__malloc__));
extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__malloc__));
extern void free (void *__ptr) ;
extern void cfree (void *__ptr) ;
# 1 "/usr/include/alloca.h" 1 3
# 22 "/usr/include/alloca.h" 3
# 1 "/usr/include/features.h" 1 3
# 23 "/usr/include/alloca.h" 2 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 26 "/usr/include/alloca.h" 2 3
extern void *alloca (size_t __size) ;
# 546 "/usr/include/stdlib.h" 2 3
extern void *valloc (size_t __size) __attribute__ ((__malloc__));
# 560 "/usr/include/stdlib.h" 3
extern void abort (void) __attribute__ ((__noreturn__));
extern int atexit (void (*__func) (void)) ;
extern int __on_exit (void (*__func) (int __status, void *__arg), void *__arg)
;
extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
;
extern void exit (int __status) __attribute__ ((__noreturn__));
# 588 "/usr/include/stdlib.h" 3
extern char *getenv (__const char *__name) ;
extern char *__secure_getenv (__const char *__name) ;
extern int putenv (char *__string) ;
extern int setenv (__const char *__name, __const char *__value, int __replace)
;
extern void unsetenv (__const char *__name) ;
extern int clearenv (void) ;
# 624 "/usr/include/stdlib.h" 3
extern char *mktemp (char *__template) ;
extern int mkstemp (char *__template) ;
# 640 "/usr/include/stdlib.h" 3
extern char *mkdtemp (char *__template) ;
extern int system (__const char *__command) ;
# 662 "/usr/include/stdlib.h" 3
extern char *realpath (__const char *__restrict __name,
char *__restrict __resolved) ;
typedef int (*__compar_fn_t) (__const void *, __const void *);
# 679 "/usr/include/stdlib.h" 3
extern void *bsearch (__const void *__key, __const void *__base,
size_t __nmemb, size_t __size, __compar_fn_t __compar);
extern void qsort (void *__base, size_t __nmemb, size_t __size,
__compar_fn_t __compar);
extern int abs (int __x) __attribute__ ((__const__));
extern long int labs (long int __x) __attribute__ ((__const__));
# 700 "/usr/include/stdlib.h" 3
extern div_t div (int __numer, int __denom)
__attribute__ ((__const__));
extern ldiv_t ldiv (long int __numer, long int __denom)
__attribute__ ((__const__));
# 718 "/usr/include/stdlib.h" 3
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign) ;
extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign) ;
extern char *gcvt (double __value, int __ndigit, char *__buf) ;
extern char *qecvt (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign) ;
extern char *qfcvt (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf) ;
extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign, char *__restrict __buf,
size_t __len) ;
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign, char *__restrict __buf,
size_t __len) ;
extern int qecvt_r (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign,
char *__restrict __buf, size_t __len) ;
extern int qfcvt_r (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign,
char *__restrict __buf, size_t __len) ;
extern int mblen (__const char *__s, size_t __n) ;
extern int mbtowc (wchar_t *__restrict __pwc,
__const char *__restrict __s, size_t __n) ;
extern int wctomb (char *__s, wchar_t __wchar) ;
extern size_t mbstowcs (wchar_t *__restrict __pwcs,
__const char *__restrict __s, size_t __n) ;
extern size_t wcstombs (char *__restrict __s,
__const wchar_t *__restrict __pwcs, size_t __n)
;
extern int rpmatch (__const char *__response) ;
# 840 "/usr/include/stdlib.h" 3
extern int getloadavg (double __loadavg[], int __nelem) ;
# 84 "mbfilter.c" 2
# 1 "mbfilter.h" 1
# 93 "mbfilter.h"
enum mbfl_no_language {
mbfl_no_language_invalid = -1,
mbfl_no_language_uni,
mbfl_no_language_min,
mbfl_no_language_catalan,
mbfl_no_language_danish,
mbfl_no_language_german,
mbfl_no_language_english,
mbfl_no_language_estonian,
mbfl_no_language_greek,
mbfl_no_language_spanish,
mbfl_no_language_french,
mbfl_no_language_italian,
mbfl_no_language_japanese,
mbfl_no_language_korean,
mbfl_no_language_dutch,
mbfl_no_language_polish,
mbfl_no_language_portuguese,
mbfl_no_language_swedish,
mbfl_no_language_chinese,
mbfl_no_language_max
};
enum mbfl_no_encoding {
mbfl_no_encoding_invalid = -1,
mbfl_no_encoding_pass,
mbfl_no_encoding_auto,
mbfl_no_encoding_wchar,
mbfl_no_encoding_byte2be,
mbfl_no_encoding_byte2le,
mbfl_no_encoding_byte4be,
mbfl_no_encoding_byte4le,
mbfl_no_encoding_base64,
mbfl_no_encoding_qprint,
mbfl_no_encoding_7bit,
mbfl_no_encoding_8bit,
mbfl_no_encoding_charset_min,
mbfl_no_encoding_ucs4,
mbfl_no_encoding_ucs4be,
mbfl_no_encoding_ucs4le,
mbfl_no_encoding_ucs2,
mbfl_no_encoding_ucs2be,
mbfl_no_encoding_ucs2le,
mbfl_no_encoding_utf32,
mbfl_no_encoding_utf32be,
mbfl_no_encoding_utf32le,
mbfl_no_encoding_utf16,
mbfl_no_encoding_utf16be,
mbfl_no_encoding_utf16le,
mbfl_no_encoding_utf8,
mbfl_no_encoding_utf7,
mbfl_no_encoding_utf7imap,
mbfl_no_encoding_ascii,
mbfl_no_encoding_euc_jp,
mbfl_no_encoding_sjis,
mbfl_no_encoding_eucjp_win,
mbfl_no_encoding_sjis_win,
mbfl_no_encoding_sjis_mac,
mbfl_no_encoding_jis,
mbfl_no_encoding_2022jp,
mbfl_no_encoding_8859_1,
mbfl_no_encoding_8859_2,
mbfl_no_encoding_8859_3,
mbfl_no_encoding_8859_4,
mbfl_no_encoding_8859_5,
mbfl_no_encoding_8859_6,
mbfl_no_encoding_8859_7,
mbfl_no_encoding_8859_8,
mbfl_no_encoding_8859_9,
mbfl_no_encoding_8859_10,
mbfl_no_encoding_8859_13,
mbfl_no_encoding_8859_14,
mbfl_no_encoding_8859_15,
mbfl_no_encoding_charset_max
};
typedef struct _mbfl_language {
enum mbfl_no_language no_language;
const char *name;
const char *short_name;
const char *(*aliases)[];
enum mbfl_no_encoding mail_charset;
enum mbfl_no_encoding mail_header_encoding;
enum mbfl_no_encoding mail_body_encoding;
} mbfl_language;
typedef struct _mbfl_encoding {
enum mbfl_no_encoding no_encoding;
const char *name;
const char *mime_name;
const char *(*aliases)[];
const unsigned char *mblen_table;
unsigned int flag;
} mbfl_encoding;
# 242 "mbfilter.h"
typedef struct _mbfl_string {
enum mbfl_no_language no_language;
enum mbfl_no_encoding no_encoding;
unsigned char *val;
unsigned int len;
} mbfl_string;
void mbfl_string_init(mbfl_string *string);
void mbfl_string_init_set(mbfl_string *string, enum mbfl_no_language no_language, enum mbfl_no_encoding no_encoding);
void mbfl_string_clear(mbfl_string *string);
mbfl_language * mbfl_name2language(const char *name);
mbfl_language * mbfl_no2language(enum mbfl_no_language no_language);
enum mbfl_no_language mbfl_name2no_language(const char *name);
const char * mbfl_no_language2name(enum mbfl_no_language no_language);
mbfl_encoding * mbfl_name2encoding(const char *name);
mbfl_encoding * mbfl_no2encoding(enum mbfl_no_encoding no_encoding);
enum mbfl_no_encoding mbfl_name2no_encoding(const char *name);
const char * mbfl_no_encoding2name(enum mbfl_no_encoding no_encoding);
const char * mbfl_no2preferred_mime_name(enum mbfl_no_encoding no_encoding);
int mbfl_is_support_encoding(const char *name);
typedef struct _mbfl_memory_device {
unsigned char *buffer;
int length;
int pos;
int allocsz;
} mbfl_memory_device;
typedef struct _mbfl_wchar_device {
unsigned int *buffer;
int length;
int pos;
int allocsz;
} mbfl_wchar_device;
void mbfl_memory_device_init(mbfl_memory_device *device, int initsz, int allocsz);
void mbfl_memory_device_realloc(mbfl_memory_device *device, int initsz, int allocsz);
void mbfl_memory_device_clear(mbfl_memory_device *device);
void mbfl_memory_device_reset(mbfl_memory_device *device);
mbfl_string * mbfl_memory_device_result(mbfl_memory_device *device, mbfl_string *result);
int mbfl_memory_device_output(int c, void *data);
int mbfl_memory_device_output2(int c, void *data);
int mbfl_memory_device_output4(int c, void *data);
int mbfl_memory_device_strcat(mbfl_memory_device *device, const char *psrc);
int mbfl_memory_device_strncat(mbfl_memory_device *device, const char *psrc, int len);
int mbfl_memory_device_devcat(mbfl_memory_device *dest, mbfl_memory_device *src);
void mbfl_wchar_device_init(mbfl_wchar_device *device);
int mbfl_wchar_device_output(int c, void *data);
# 316 "mbfilter.h"
typedef struct _mbfl_convert_filter mbfl_convert_filter;
struct _mbfl_convert_filter {
void (*filter_ctor)(mbfl_convert_filter *filter);
void (*filter_dtor)(mbfl_convert_filter *filter);
int (*filter_function)(int c, mbfl_convert_filter *filter);
int (*filter_flush)(mbfl_convert_filter *filter);
int (*output_function)(int c, void *data);
int (*flush_function)(void *data);
void *data;
int status;
int cache;
mbfl_encoding *from;
mbfl_encoding *to;
int illegal_mode;
int illegal_substchar;
};
struct mbfl_convert_vtbl {
enum mbfl_no_encoding from;
enum mbfl_no_encoding to;
void (*filter_ctor)(mbfl_convert_filter *filter);
void (*filter_dtor)(mbfl_convert_filter *filter);
int (*filter_function)(int c, mbfl_convert_filter *filter);
int (*filter_flush)(mbfl_convert_filter *filter);
};
mbfl_convert_filter *
mbfl_convert_filter_new(
enum mbfl_no_encoding from,
enum mbfl_no_encoding to,
int (*output_function)(int, void *),
int (*flush_function)(void *),
void *data);
void mbfl_convert_filter_delete(mbfl_convert_filter *filter);
int mbfl_convert_filter_feed(int c, mbfl_convert_filter *filter);
int mbfl_convert_filter_flush(mbfl_convert_filter *filter);
void mbfl_convert_filter_reset(mbfl_convert_filter *filter, enum mbfl_no_encoding from, enum mbfl_no_encoding to);
void mbfl_convert_filter_copy(mbfl_convert_filter *src, mbfl_convert_filter *dist);
int mbfl_filt_conv_illegal_output(int c, mbfl_convert_filter *filter);
typedef struct _mbfl_identify_filter mbfl_identify_filter;
struct _mbfl_identify_filter {
void (*filter_ctor)(mbfl_identify_filter *filter);
void (*filter_dtor)(mbfl_identify_filter *filter);
int (*filter_function)(int c, mbfl_identify_filter *filter);
int status;
int flag;
int score;
mbfl_encoding *encoding;
};
struct mbfl_identify_vtbl {
enum mbfl_no_encoding encoding;
void (*filter_ctor)(mbfl_identify_filter *filter);
void (*filter_dtor)(mbfl_identify_filter *filter);
int (*filter_function)(int c, mbfl_identify_filter *filter);
};
mbfl_identify_filter * mbfl_identify_filter_new(enum mbfl_no_encoding encoding);
void mbfl_identify_filter_delete(mbfl_identify_filter *filter);
typedef struct _mbfl_buffer_converter mbfl_buffer_converter;
struct _mbfl_buffer_converter {
mbfl_convert_filter *filter1;
mbfl_convert_filter *filter2;
mbfl_memory_device device;
mbfl_encoding *from;
mbfl_encoding *to;
};
mbfl_buffer_converter * mbfl_buffer_converter_new(enum mbfl_no_encoding from, enum mbfl_no_encoding to, int buf_initsz);
void mbfl_buffer_converter_delete(mbfl_buffer_converter *convd);
void mbfl_buffer_converter_reset(mbfl_buffer_converter *convd);
int mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode);
int mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar);
int mbfl_buffer_converter_strncat(mbfl_buffer_converter *convd, const unsigned char *p, int n);
int mbfl_buffer_converter_feed(mbfl_buffer_converter *convd, mbfl_string *string);
int mbfl_buffer_converter_flush(mbfl_buffer_converter *convd);
mbfl_string * mbfl_buffer_converter_getbuffer(mbfl_buffer_converter *convd, mbfl_string *result);
mbfl_string * mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result);
mbfl_string * mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *string, mbfl_string *result);
typedef struct _mbfl_encoding_detector mbfl_encoding_detector;
struct _mbfl_encoding_detector {
mbfl_identify_filter **filter_list;
int filter_list_size;
};
mbfl_encoding_detector * mbfl_encoding_detector_new(enum mbfl_no_encoding *elist, int eliztsz);
void mbfl_encoding_detector_delete(mbfl_encoding_detector *identd);
int mbfl_encoding_detector_feed(mbfl_encoding_detector *identd, mbfl_string *string);
enum mbfl_no_encoding mbfl_encoding_detector_judge(mbfl_encoding_detector *identd);
mbfl_string *
mbfl_convert_encoding(mbfl_string *string, mbfl_string *result, enum mbfl_no_encoding toenc);
mbfl_encoding *
mbfl_identify_encoding(mbfl_string *string, enum mbfl_no_encoding *elist, int eliztsz);
const char *
mbfl_identify_encoding_name(mbfl_string *string, enum mbfl_no_encoding *elist, int eliztsz);
enum mbfl_no_encoding
mbfl_identify_encoding_no(mbfl_string *string, enum mbfl_no_encoding *elist, int eliztsz);
int
mbfl_strlen(mbfl_string *string);
int
mbfl_strpos(mbfl_string *haystack, mbfl_string *needle, int offset, int reverse);
mbfl_string *
mbfl_substr(mbfl_string *string, mbfl_string *result, int from, int length);
mbfl_string *
mbfl_strcut(mbfl_string *string, mbfl_string *result, int from, int length);
int
mbfl_strwidth(mbfl_string *string);
mbfl_string *
mbfl_strimwidth(mbfl_string *string, mbfl_string *marker, mbfl_string *result, int from, int width);
struct mime_header_encoder_data;
struct mime_header_encoder_data *
mime_header_encoder_new(
enum mbfl_no_encoding incode,
enum mbfl_no_encoding outcode,
enum mbfl_no_encoding encoding);
void
mime_header_encoder_delete(struct mime_header_encoder_data *pe);
int
mime_header_encoder_feed(int c, struct mime_header_encoder_data *pe);
mbfl_string *
mime_header_encoder_result(struct mime_header_encoder_data *pe, mbfl_string *result);
mbfl_string *
mbfl_mime_header_encode(
mbfl_string *string, mbfl_string *result,
enum mbfl_no_encoding outcode,
enum mbfl_no_encoding encoding,
const char *linefeed,
int indent);
struct mime_header_decoder_data;
struct mime_header_decoder_data *
mime_header_decoder_new(enum mbfl_no_encoding outcode);
void
mime_header_decoder_delete(struct mime_header_decoder_data *pd);
int
mime_header_decoder_feed(int c, struct mime_header_decoder_data *pd);
mbfl_string *
mime_header_decoder_result(struct mime_header_decoder_data *pd, mbfl_string *result);
mbfl_string *
mbfl_mime_header_decode(
mbfl_string *string,
mbfl_string *result,
enum mbfl_no_encoding outcode);
mbfl_string *
mbfl_html_numeric_entity(mbfl_string *string, mbfl_string *result, int *convmap, int mapsize, int type);
mbfl_string *
mbfl_ja_jp_hantozen(mbfl_string *string, mbfl_string *result, int mode);
# 85 "mbfilter.c" 2
# 1 "mbfilter_ja.h" 1
# 85 "mbfilter_ja.h"
int mbfl_filt_conv_eucjp_wchar(int c, mbfl_convert_filter *filter);
int mbfl_filt_conv_wchar_eucjp(int c, mbfl_convert_filter *filter);
int mbfl_filt_conv_eucjpwin_wchar(int c, mbfl_convert_filter *filter);
int mbfl_filt_conv_wchar_eucjpwin(int c, mbfl_convert_filter *filter);
int mbfl_filt_conv_sjis_wchar(int c, mbfl_convert_filter *filter);
int mbfl_filt_conv_wchar_sjis(int c, mbfl_convert_filter *filter);
int mbfl_filt_conv_sjiswin_wchar(int c, mbfl_convert_filter *filter);
int mbfl_filt_conv_wchar_sjiswin(int c, mbfl_convert_filter *filter);
int mbfl_filt_conv_jis_wchar(int c, mbfl_convert_filter *filter);
int mbfl_filt_conv_wchar_jis(int c, mbfl_convert_filter *filter);
int mbfl_filt_conv_wchar_2022jp(int c, mbfl_convert_filter *filter);
int mbfl_filt_conv_any_jis_flush(mbfl_convert_filter *filter);
# 86 "mbfilter.c" 2
# 1 "/usr/local/src/temp/php-4.0.6/Zend/zend.h" 1
# 34 "/usr/local/src/temp/php-4.0.6/Zend/zend.h"
# 1 "/usr/include/stdio.h" 1 3
# 27 "/usr/include/stdio.h" 3
# 1 "/usr/include/features.h" 1 3
# 28 "/usr/include/stdio.h" 2 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 34 "/usr/include/stdio.h" 2 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stdarg.h" 1 3
# 43 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 39 "/usr/include/stdio.h" 2 3
# 1 "/usr/include/bits/types.h" 1 3
# 41 "/usr/include/stdio.h" 2 3
typedef struct _IO_FILE FILE;
# 57 "/usr/include/stdio.h" 3
# 1 "/usr/include/libio.h" 1 3
# 30 "/usr/include/libio.h" 3
# 1 "/usr/include/_G_config.h" 1 3
# 9 "/usr/include/_G_config.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 10 "/usr/include/_G_config.h" 2 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 312 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 3
typedef unsigned int wint_t;
# 15 "/usr/include/_G_config.h" 2 3
# 24 "/usr/include/_G_config.h" 3
# 1 "/usr/include/wchar.h" 1 3
# 45 "/usr/include/wchar.h" 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 46 "/usr/include/wchar.h" 2 3
# 62 "/usr/include/wchar.h" 3
typedef struct
{
int __count;
union
{
wint_t __wch;
char __wchb[4];
} __value;
} __mbstate_t;
# 25 "/usr/include/_G_config.h" 2 3
typedef struct
{
__off_t __pos;
__mbstate_t __state;
} _G_fpos_t;
typedef struct
{
__off64_t __pos;
__mbstate_t __state;
} _G_fpos64_t;
# 44 "/usr/include/_G_config.h" 3
# 1 "/usr/include/gconv.h" 1 3
# 26 "/usr/include/gconv.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/gconv.h" 2 3
# 1 "/usr/include/wchar.h" 1 3
# 45 "/usr/include/wchar.h" 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 46 "/usr/include/wchar.h" 2 3
# 29 "/usr/include/gconv.h" 2 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 31 "/usr/include/gconv.h" 2 3
enum
{
__GCONV_OK = 0,
__GCONV_NOCONV,
__GCONV_NODB,
__GCONV_NOMEM,
__GCONV_EMPTY_INPUT,
__GCONV_FULL_OUTPUT,
__GCONV_ILLEGAL_INPUT,
__GCONV_INCOMPLETE_INPUT,
__GCONV_ILLEGAL_DESCRIPTOR,
__GCONV_INTERNAL_ERROR
};
enum
{
__GCONV_IS_LAST = 0x0001,
__GCONV_IGNORE_ERRORS = 0x0002
};
struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
struct __gconv_trans_data;
typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
__const unsigned char **, __const unsigned char *,
unsigned char **, size_t *, int, int);
typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);
typedef int (*__gconv_trans_fct) (struct __gconv_step *,
struct __gconv_step_data *, void *,
__const unsigned char *,
__const unsigned char **,
__const unsigned char *, unsigned char **,
size_t *);
typedef int (*__gconv_trans_context_fct) (struct __gconv_trans_data *,
__const unsigned char *,
__const unsigned char *,
unsigned char *, unsigned char *);
typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
size_t *);
typedef int (*__gconv_trans_init_fct) (void **, const char *);
typedef void (*__gconv_trans_end_fct) (void *);
struct __gconv_trans_data
{
__gconv_trans_fct __trans_fct;
__gconv_trans_context_fct __trans_context_fct;
__gconv_trans_end_fct __trans_end_fct;
void *__data;
struct __gconv_trans_data *__next;
};
struct __gconv_step
{
struct __gconv_loaded_object *__shlib_handle;
__const char *__modname;
int __counter;
__const char *__from_name;
__const char *__to_name;
__gconv_fct __fct;
__gconv_init_fct __init_fct;
__gconv_end_fct __end_fct;
int __min_needed_from;
int __max_needed_from;
int __min_needed_to;
int __max_needed_to;
int __stateful;
void *__data;
};
struct __gconv_step_data
{
unsigned char *__outbuf;
unsigned char *__outbufend;
int __flags;
int __invocation_counter;
int __internal_use;
__mbstate_t *__statep;
__mbstate_t __state;
struct __gconv_trans_data *__trans;
};
typedef struct __gconv_info
{
size_t __nsteps;
struct __gconv_step *__steps;
__extension__ struct __gconv_step_data __data[0];
} *__gconv_t;
# 45 "/usr/include/_G_config.h" 2 3
typedef union
{
struct __gconv_info __cd;
struct
{
struct __gconv_info __cd;
struct __gconv_step_data __data;
} __combined;
} _G_iconv_t;
typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
# 31 "/usr/include/libio.h" 2 3
# 51 "/usr/include/libio.h" 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stdarg.h" 1 3
# 52 "/usr/include/libio.h" 2 3
# 157 "/usr/include/libio.h" 3
struct _IO_jump_t; struct _IO_FILE;
# 167 "/usr/include/libio.h" 3
typedef void _IO_lock_t;
struct _IO_marker {
struct _IO_marker *_next;
struct _IO_FILE *_sbuf;
int _pos;
# 190 "/usr/include/libio.h" 3
};
enum __codecvt_result
{
__codecvt_ok,
__codecvt_partial,
__codecvt_error,
__codecvt_noconv
};
# 262 "/usr/include/libio.h" 3
struct _IO_FILE {
int _flags;
char* _IO_read_ptr;
char* _IO_read_end;
char* _IO_read_base;
char* _IO_write_base;
char* _IO_write_ptr;
char* _IO_write_end;
char* _IO_buf_base;
char* _IO_buf_end;
char *_IO_save_base;
char *_IO_backup_base;
char *_IO_save_end;
struct _IO_marker *_markers;
struct _IO_FILE *_chain;
int _fileno;
int _blksize;
__off_t _old_offset;
unsigned short _cur_column;
signed char _vtable_offset;
char _shortbuf[1];
_IO_lock_t *_lock;
# 306 "/usr/include/libio.h" 3
__off64_t _offset;
void *__pad1;
void *__pad2;
int _mode;
char _unused2[15 * sizeof (int) - 2 * sizeof (void *)];
};
typedef struct _IO_FILE _IO_FILE;
struct _IO_FILE_plus;
extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 345 "/usr/include/libio.h" 3
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
size_t __n);
typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
typedef int __io_close_fn (void *__cookie);
# 397 "/usr/include/libio.h" 3
extern int __underflow (_IO_FILE *) ;
extern int __uflow (_IO_FILE *) ;
extern int __overflow (_IO_FILE *, int) ;
extern wint_t __wunderflow (_IO_FILE *) ;
extern wint_t __wuflow (_IO_FILE *) ;
extern wint_t __woverflow (_IO_FILE *, wint_t) ;
# 427 "/usr/include/libio.h" 3
extern int _IO_getc (_IO_FILE *__fp) ;
extern int _IO_putc (int __c, _IO_FILE *__fp) ;
extern int _IO_feof (_IO_FILE *__fp) ;
extern int _IO_ferror (_IO_FILE *__fp) ;
extern int _IO_peekc_locked (_IO_FILE *__fp) ;
extern void _IO_flockfile (_IO_FILE *) ;
extern void _IO_funlockfile (_IO_FILE *) ;
extern int _IO_ftrylockfile (_IO_FILE *) ;
# 453 "/usr/include/libio.h" 3
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
__gnuc_va_list, int *__restrict) ;
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
__gnuc_va_list) ;
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) ;
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) ;
extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) ;
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) ;
extern void _IO_free_backup_area (_IO_FILE *) ;
# 58 "/usr/include/stdio.h" 2 3
typedef _G_fpos64_t fpos_t;
# 110 "/usr/include/stdio.h" 3
# 1 "/usr/include/bits/stdio_lim.h" 1 3
# 111 "/usr/include/stdio.h" 2 3
extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;
extern int remove (__const char *__filename) ;
extern int rename (__const char *__old, __const char *__new) ;
extern FILE *tmpfile (void) __asm__ ("" "tmpfile64");
# 142 "/usr/include/stdio.h" 3
extern char *tmpnam (char *__s) ;
extern char *tmpnam_r (char *__s) ;
# 159 "/usr/include/stdio.h" 3
extern char *tempnam (__const char *__dir, __const char *__pfx)
__attribute__ ((__malloc__));
extern int fclose (FILE *__stream) ;
extern int fflush (FILE *__stream) ;
extern int fflush_unlocked (FILE *__stream) ;
# 190 "/usr/include/stdio.h" 3
extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) __asm__ ("" "fopen64");
extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64");
# 212 "/usr/include/stdio.h" 3
extern FILE *fdopen (int __fd, __const char *__modes) ;
# 235 "/usr/include/stdio.h" 3
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ;
extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
int __modes, size_t __n) ;
extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
size_t __size) ;
extern void setlinebuf (FILE *__stream) ;
extern int fprintf (FILE *__restrict __stream,
__const char *__restrict __format, ...) ;
extern int printf (__const char *__restrict __format, ...) ;
extern int sprintf (char *__restrict __s,
__const char *__restrict __format, ...) ;
extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
__gnuc_va_list __arg) ;
extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg)
;
extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
__gnuc_va_list __arg) ;
extern int snprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, ...)
__attribute__ ((__format__ (__printf__, 3, 4)));
extern int __vsnprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, __gnuc_va_list __arg)
__attribute__ ((__format__ (__printf__, 3, 0)));
extern int vsnprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, __gnuc_va_list __arg)
__attribute__ ((__format__ (__printf__, 3, 0)));
# 309 "/usr/include/stdio.h" 3
extern int fscanf (FILE *__restrict __stream,
__const char *__restrict __format, ...) ;
extern int scanf (__const char *__restrict __format, ...) ;
extern int sscanf (__const char *__restrict __s,
__const char *__restrict __format, ...) ;
# 335 "/usr/include/stdio.h" 3
extern int fgetc (FILE *__stream) ;
extern int getc (FILE *__stream) ;
extern int getchar (void) ;
extern int getc_unlocked (FILE *__stream) ;
extern int getchar_unlocked (void) ;
extern int fgetc_unlocked (FILE *__stream) ;
extern int fputc (int __c, FILE *__stream) ;
extern int putc (int __c, FILE *__stream) ;
extern int putchar (int __c) ;
extern int fputc_unlocked (int __c, FILE *__stream) ;
extern int putc_unlocked (int __c, FILE *__stream) ;
extern int putchar_unlocked (int __c) ;
extern int getw (FILE *__stream) ;
extern int putw (int __w, FILE *__stream) ;
extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
;
# 401 "/usr/include/stdio.h" 3
extern char *gets (char *__s) ;
# 425 "/usr/include/stdio.h" 3
extern int fputs (__const char *__restrict __s, FILE *__restrict __stream)
;
# 435 "/usr/include/stdio.h" 3
extern int puts (__const char *__s) ;
extern int ungetc (int __c, FILE *__stream) ;
extern size_t fread (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __s) ;
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream) ;
extern int fseek (FILE *__stream, long int __off, int __whence) ;
extern long int ftell (FILE *__stream) ;
extern void rewind (FILE *__stream) ;
# 502 "/usr/include/stdio.h" 3
extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64");
extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64");
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64");
extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __asm__ ("" "fsetpos64");
# 531 "/usr/include/stdio.h" 3
extern void clearerr (FILE *__stream) ;
extern int feof (FILE *__stream) ;
extern int ferror (FILE *__stream) ;
extern void clearerr_unlocked (FILE *__stream) ;
extern int feof_unlocked (FILE *__stream) ;
extern int ferror_unlocked (FILE *__stream) ;
extern void perror (__const char *__s) ;
extern int sys_nerr;
extern __const char *__const sys_errlist[];
# 562 "/usr/include/stdio.h" 3
extern int fileno (FILE *__stream) ;
extern int fileno_unlocked (FILE *__stream) ;
extern FILE *popen (__const char *__command, __const char *__modes) ;
extern int pclose (FILE *__stream) ;
extern char *ctermid (char *__s) ;
# 609 "/usr/include/stdio.h" 3
extern void flockfile (FILE *__stream) ;
extern int ftrylockfile (FILE *__stream) ;
extern void funlockfile (FILE *__stream) ;
# 630 "/usr/include/stdio.h" 3
# 1 "/usr/include/bits/stdio.h" 1 3
# 32 "/usr/include/bits/stdio.h" 3
extern __inline int
vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
{
return vfprintf (stdout, __fmt, __arg);
}
extern __inline int
getchar (void)
{
return _IO_getc (stdin);
}
extern __inline int
getc_unlocked (FILE *__fp)
{
return ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}
extern __inline int
getchar_unlocked (void)
{
return ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
}
extern __inline int
putchar (int __c)
{
return _IO_putc (__c, stdout);
}
extern __inline int
fputc_unlocked (int __c, FILE *__stream)
{
return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}
extern __inline int
putc_unlocked (int __c, FILE *__stream)
{
return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}
extern __inline int
putchar_unlocked (int __c)
{
return (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}
# 110 "/usr/include/bits/stdio.h" 3
extern __inline int
feof_unlocked (FILE *__stream)
{
return (((__stream)->_flags & 0x10) != 0);
}
extern __inline int
ferror_unlocked (FILE *__stream)
{
return (((__stream)->_flags & 0x20) != 0);
}
# 631 "/usr/include/stdio.h" 2 3
# 35 "/usr/local/src/temp/php-4.0.6/Zend/zend.h" 2
# 44 "/usr/local/src/temp/php-4.0.6/Zend/zend.h"
# 1 "/usr/local/src/temp/php-4.0.6/Zend/zend_config.h" 1
# 1 "/usr/local/src/temp/php-4.0.6/main/php_config.h" 1
# 1919 "/usr/local/src/temp/php-4.0.6/main/php_config.h"
# 1 "/usr/include/stdlib.h" 1 3
# 1920 "/usr/local/src/temp/php-4.0.6/main/php_config.h" 2
# 1 "/usr/include/sys/types.h" 1 3
# 1924 "/usr/local/src/temp/php-4.0.6/main/php_config.h" 2
# 1 "/usr/include/string.h" 1 3
# 26 "/usr/include/string.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/string.h" 2 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 34 "/usr/include/string.h" 2 3
extern void *memcpy (void *__restrict __dest,
__const void *__restrict __src, size_t __n) ;
extern void *memmove (void *__dest, __const void *__src, size_t __n)
;
extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
int __c, size_t __n)
;
extern void *memset (void *__s, int __c, size_t __n) ;
extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
__attribute__ ((__pure__));
extern void *memchr (__const void *__s, int __c, size_t __n)
__attribute__ ((__pure__));
# 77 "/usr/include/string.h" 3
extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
;
extern char *strncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n) ;
extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
;
extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
size_t __n) ;
extern int strcmp (__const char *__s1, __const char *__s2)
__attribute__ ((__pure__));
extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__pure__));
extern int strcoll (__const char *__s1, __const char *__s2)
__attribute__ ((__pure__));
extern size_t strxfrm (char *__restrict __dest,
__const char *__restrict __src, size_t __n) ;
# 120 "/usr/include/string.h" 3
extern char *strdup (__const char *__s) __attribute__ ((__malloc__));
# 155 "/usr/include/string.h" 3
extern char *strchr (__const char *__s, int __c) __attribute__ ((__pure__));
extern char *strrchr (__const char *__s, int __c) __attribute__ ((__pure__));
# 167 "/usr/include/string.h" 3
extern size_t strcspn (__const char *__s, __const char *__reject)
__attribute__ ((__pure__));
extern size_t strspn (__const char *__s, __const char *__accept)
__attribute__ ((__pure__));
extern char *strpbrk (__const char *__s, __const char *__accept)
__attribute__ ((__pure__));
extern char *strstr (__const char *__haystack, __const char *__needle)
__attribute__ ((__pure__));
# 189 "/usr/include/string.h" 3
extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
;
extern char *__strtok_r (char *__restrict __s,
__const char *__restrict __delim,
char **__restrict __save_ptr) ;
extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
char **__restrict __save_ptr) ;
# 220 "/usr/include/string.h" 3
extern size_t strlen (__const char *__s) __attribute__ ((__pure__));
# 231 "/usr/include/string.h" 3
extern char *strerror (int __errnum) ;
extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen) ;
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) ;
extern void __bzero (void *__s, size_t __n) ;
extern void bcopy (__const void *__src, void *__dest, size_t __n) ;
extern void bzero (void *__s, size_t __n) ;
extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
__attribute__ ((__pure__));
extern char *index (__const char *__s, int __c) __attribute__ ((__pure__));
extern char *rindex (__const char *__s, int __c) __attribute__ ((__pure__));
extern int __ffs (int __i) __attribute__ ((const));
extern int ffs (int __i) __attribute__ ((const));
# 276 "/usr/include/string.h" 3
extern int __strcasecmp (__const char *__s1, __const char *__s2)
__attribute__ ((__pure__));
extern int strcasecmp (__const char *__s1, __const char *__s2)
__attribute__ ((__pure__));
extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__pure__));
# 300 "/usr/include/string.h" 3
extern char *strsep (char **__restrict __stringp,
__const char *__restrict __delim) ;
# 362 "/usr/include/string.h" 3
# 1 "/usr/include/bits/string.h" 1 3
# 363 "/usr/include/string.h" 2 3
# 1 "/usr/include/bits/string2.h" 1 3
# 52 "/usr/include/bits/string2.h" 3
# 1 "/usr/include/endian.h" 1 3
# 53 "/usr/include/bits/string2.h" 2 3
# 1 "/usr/include/bits/types.h" 1 3
# 54 "/usr/include/bits/string2.h" 2 3
# 371 "/usr/include/bits/string2.h" 3
extern void *__rawmemchr (const void *__s, int __c);
# 395 "/usr/include/bits/string2.h" 3
extern __inline char *__strcpy_small (char *, __uint16_t, __uint16_t,
__uint32_t, __uint32_t, size_t);
extern __inline char *
__strcpy_small (char *__dest,
__uint16_t __src0_2, __uint16_t __src4_2,
__uint32_t __src0_4, __uint32_t __src4_4,
size_t __srclen)
{
union {
__uint32_t __ui;
__uint16_t __usi;
unsigned char __uc;
} *__u = (void *) __dest;
switch ((unsigned int) __srclen)
{
case 1:
__u->__uc = '\0';
break;
case 2:
__u->__usi = __src0_2;
break;
case 3:
__u->__usi = __src0_2;
__u = __extension__ ((void *) __u + 2);
__u->__uc = '\0';
break;
case 4:
__u->__ui = __src0_4;
break;
case 5:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__uc = '\0';
break;
case 6:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__usi = __src4_2;
break;
case 7:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__usi = __src4_2;
__u = __extension__ ((void *) __u + 2);
__u->__uc = '\0';
break;
case 8:
__u->__ui = __src0_4;
__u = __extension__ ((void *) __u + 4);
__u->__ui = __src4_4;
break;
}
return __dest;
}
# 872 "/usr/include/bits/string2.h" 3
extern __inline size_t __strcspn_c1 (__const char *__s, char __reject);
extern __inline size_t
__strcspn_c1 (__const char *__s, char __reject)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject)
++__result;
return __result;
}
extern __inline size_t __strcspn_c2 (__const char *__s, char __reject1,
char __reject2);
extern __inline size_t
__strcspn_c2 (__const char *__s, char __reject1, char __reject2)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject1
&& __s[__result] != __reject2)
++__result;
return __result;
}
extern __inline size_t __strcspn_c3 (__const char *__s, char __reject1,
char __reject2, char __reject3);
extern __inline size_t
__strcspn_c3 (__const char *__s, char __reject1, char __reject2,
char __reject3)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject1
&& __s[__result] != __reject2 && __s[__result] != __reject3)
++__result;
return __result;
}
# 927 "/usr/include/bits/string2.h" 3
extern __inline size_t __strspn_c1 (__const char *__s, char __accept);
extern __inline size_t
__strspn_c1 (__const char *__s, char __accept)
{
register size_t __result = 0;
while (__s[__result] == __accept)
++__result;
return __result;
}
extern __inline size_t __strspn_c2 (__const char *__s, char __accept1,
char __accept2);
extern __inline size_t
__strspn_c2 (__const char *__s, char __accept1, char __accept2)
{
register size_t __result = 0;
while (__s[__result] == __accept1 || __s[__result] == __accept2)
++__result;
return __result;
}
extern __inline size_t __strspn_c3 (__const char *__s, char __accept1,
char __accept2, char __accept3);
extern __inline size_t
__strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3)
{
register size_t __result = 0;
while (__s[__result] == __accept1 || __s[__result] == __accept2
|| __s[__result] == __accept3)
++__result;
return __result;
}
# 982 "/usr/include/bits/string2.h" 3
extern __inline char *__strpbrk_c2 (__const char *__s, char __accept1,
char __accept2);
extern __inline char *
__strpbrk_c2 (__const char *__s, char __accept1, char __accept2)
{
while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
++__s;
return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
extern __inline char *__strpbrk_c3 (__const char *__s, char __accept1,
char __accept2, char __accept3);
extern __inline char *
__strpbrk_c3 (__const char *__s, char __accept1, char __accept2,
char __accept3)
{
while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
&& *__s != __accept3)
++__s;
return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
# 1043 "/usr/include/bits/string2.h" 3
extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
char *__result;
if (__s == ((void *)0))
__s = *__nextp;
while (*__s == __sep)
++__s;
if (*__s == '\0')
__result = ((void *)0);
else
{
__result = __s;
while (*__s != '\0' && *__s != __sep)
++__s;
if (*__s == '\0')
*__nextp = __s;
else
{
*__s = '\0';
*__nextp = __s + 1;
}
}
return __result;
}
# 1093 "/usr/include/bits/string2.h" 3
extern __inline char *__strsep_1c (char **__s, char __reject);
extern __inline char *
__strsep_1c (char **__s, char __reject)
{
register char *__retval = *__s;
if (__retval == ((void *)0))
return *__s = ((void *)0);
if (*__retval == __reject)
*(*__s)++ = '\0';
else
if ((*__s = (__extension__ (__builtin_constant_p (__reject) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : strchr (__retval, __reject)))) != ((void *)0))
*(*__s)++ = '\0';
else
*__s = ((void *)0);
return __retval;
}
extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
register char *__retval = *__s;
if (__retval == ((void *)0))
return *__s = ((void *)0);
if (*__retval == __reject1 || *__retval == __reject2)
*(*__s)++ = '\0';
else
{
register char *__cp = __retval;
while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2)
++__cp;
if (*__cp != '\0')
{
*__s = __cp;
*(*__s)++ = '\0';
}
else
*__s = ((void *)0);
}
return __retval;
}
extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
char __reject3);
extern __inline char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
register char *__retval = *__s;
if (__retval == ((void *)0))
return *__s = ((void *)0);
if (*__retval == __reject1 || *__retval == __reject2
|| *__retval == __reject3)
*(*__s)++ = '\0';
else
{
register char *__cp = __retval;
while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2
&& *__cp != __reject3)
++__cp;
if (*__cp != '\0')
{
*__s = __cp;
*(*__s)++ = '\0';
}
else
*__s = ((void *)0);
}
return __retval;
}
extern __inline char *__strsep_g (char **__s, __const char *__reject);
extern __inline char *
__strsep_g (char **__s, __const char *__reject)
{
register char *__retval = *__s;
if (__retval == ((void *)0))
return ((void *)0);
if ((*__s = __extension__ ({ char __a0, __a1, __a2; (__builtin_constant_p (__reject) && ((size_t)(const void *)((__reject) + 1) - (size_t)(const void *)(__reject) == 1) ? ((__a0 = ((__const char *) (__reject))[0], __a0 == '\0') ? ((void *)0) : ((__a1 = ((__const char *) (__reject))[1], __a1 == '\0') ? (__extension__ (__builtin_constant_p (__a0) && (__a0) == '\0' ? (char *) __rawmemchr (__retval, __a0) : strchr (__retval, __a0))) : ((__a2 = ((__const char *) (__reject))[2], __a2 == '\0') ? __strpbrk_c2 (__retval, __a0, __a1) : (((__const char *) (__reject))[3] == '\0' ? __strpbrk_c3 (__retval, __a0, __a1, __a2) : strpbrk (__retval, __reject))))) : strpbrk (__retval, __reject)); })) != ((void *)0))
*(*__s)++ = '\0';
return __retval;
}
# 1186 "/usr/include/bits/string2.h" 3
# 1 "/usr/include/stdlib.h" 1 3
# 1187 "/usr/include/bits/string2.h" 2 3
extern char *__strdup (__const char *__string) __attribute__ ((__malloc__));
# 1210 "/usr/include/bits/string2.h" 3
extern char *__strndup (__const char *__string, size_t __n)
__attribute__ ((__malloc__));
# 366 "/usr/include/string.h" 2 3
# 1932 "/usr/local/src/temp/php-4.0.6/main/php_config.h" 2
# 1942 "/usr/local/src/temp/php-4.0.6/main/php_config.h"
# 1 "/usr/include/math.h" 1 3
# 27 "/usr/include/math.h" 3
# 1 "/usr/include/features.h" 1 3
# 28 "/usr/include/math.h" 2 3
# 1 "/usr/include/bits/huge_val.h" 1 3
# 25 "/usr/include/bits/huge_val.h" 3
# 1 "/usr/include/features.h" 1 3
# 26 "/usr/include/bits/huge_val.h" 2 3
# 34 "/usr/include/math.h" 2 3
# 1 "/usr/include/bits/mathdef.h" 1 3
# 41 "/usr/include/math.h" 2 3
# 63 "/usr/include/math.h" 3
# 1 "/usr/include/bits/mathcalls.h" 1 3
# 54 "/usr/include/bits/mathcalls.h" 3
extern double acos (double __x) ; extern double __acos (double __x) ;
extern double asin (double __x) ; extern double __asin (double __x) ;
extern double atan (double __x) ; extern double __atan (double __x) ;
extern double atan2 (double __y, double __x) ; extern double __atan2 (double __y, double __x) ;
extern double cos (double __x) ; extern double __cos (double __x) ;
extern double sin (double __x) ; extern double __sin (double __x) ;
extern double tan (double __x) ; extern double __tan (double __x) ;
# 78 "/usr/include/bits/mathcalls.h" 3
extern double cosh (double __x) ; extern double __cosh (double __x) ;
extern double sinh (double __x) ; extern double __sinh (double __x) ;
extern double tanh (double __x) ; extern double __tanh (double __x) ;
extern double acosh (double __x) ; extern double __acosh (double __x) ;
extern double asinh (double __x) ; extern double __asinh (double __x) ;
extern double atanh (double __x) ; extern double __atanh (double __x) ;
extern double exp (double __x) ; extern double __exp (double __x) ;
# 106 "/usr/include/bits/mathcalls.h" 3
extern double frexp (double __x, int *__exponent) ; extern double __frexp (double __x, int *__exponent) ;
extern double ldexp (double __x, int __exponent) ; extern double __ldexp (double __x, int __exponent) ;
extern double log (double __x) ; extern double __log (double __x) ;
extern double log10 (double __x) ; extern double __log10 (double __x) ;
extern double modf (double __x, double *__iptr) ; extern double __modf (double __x, double *__iptr) ;
extern double expm1 (double __x) ; extern double __expm1 (double __x) ;
extern double log1p (double __x) ; extern double __log1p (double __x) ;
extern double logb (double __x) ; extern double __logb (double __x) ;
# 143 "/usr/include/bits/mathcalls.h" 3
extern double pow (double __x, double __y) ; extern double __pow (double __x, double __y) ;
extern double sqrt (double __x) ; extern double __sqrt (double __x) ;
extern double hypot (double __x, double __y) ; extern double __hypot (double __x, double __y) ;
extern double cbrt (double __x) ; extern double __cbrt (double __x) ;
extern double ceil (double __x) ; extern double __ceil (double __x) ;
extern double fabs (double __x) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__const__));
extern double floor (double __x) ; extern double __floor (double __x) ;
extern double fmod (double __x, double __y) ; extern double __fmod (double __x, double __y) ;
extern int __isinf (double __value) __attribute__ ((__const__));
extern int __finite (double __value) __attribute__ ((__const__));
extern int isinf (double __value) __attribute__ ((__const__));
extern int finite (double __value) __attribute__ ((__const__));
extern double infnan (int __error) __attribute__ ((__const__)); extern double __infnan (int __error) __attribute__ ((__const__));
extern double drem (double __x, double __y) ; extern double __drem (double __x, double __y) ;
extern double significand (double __x) ; extern double __significand (double __x) ;
extern double copysign (double __x, double __y) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__const__));
# 217 "/usr/include/bits/mathcalls.h" 3
extern int __isnan (double __value) __attribute__ ((__const__));
extern int isnan (double __value) __attribute__ ((__const__));
extern double j0 (double) ; extern double __j0 (double) ;
extern double j1 (double) ; extern double __j1 (double) ;
extern double jn (int, double) ; extern double __jn (int, double) ;
extern double y0 (double) ; extern double __y0 (double) ;
extern double y1 (double) ; extern double __y1 (double) ;
extern double yn (int, double) ; extern double __yn (int, double) ;
extern double erf (double) ; extern double __erf (double) ;
extern double erfc (double) ; extern double __erfc (double) ;
extern double lgamma (double) ; extern double __lgamma (double) ;
# 246 "/usr/include/bits/mathcalls.h" 3
extern double gamma (double) ; extern double __gamma (double) ;
extern double lgamma_r (double, int *__signgamp) ; extern double __lgamma_r (double, int *__signgamp) ;
extern double rint (double __x) ; extern double __rint (double __x) ;
extern double nextafter (double __x, double __y) __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) __attribute__ ((__const__));
extern double remainder (double __x, double __y) ; extern double __remainder (double __x, double __y) ;
extern double scalb (double __x, double __n) ; extern double __scalb (double __x, double __n) ;
extern double scalbn (double __x, int __n) ; extern double __scalbn (double __x, int __n) ;
extern int ilogb (double __x) ; extern int __ilogb (double __x) ;
# 64 "/usr/include/math.h" 2 3
# 82 "/usr/include/math.h" 3
# 1 "/usr/include/bits/mathcalls.h" 1 3
# 54 "/usr/include/bits/mathcalls.h" 3
extern float acosf (float __x) ; extern float __acosf (float __x) ;
extern float asinf (float __x) ; extern float __asinf (float __x) ;
extern float atanf (float __x) ; extern float __atanf (float __x) ;
extern float atan2f (float __y, float __x) ; extern float __atan2f (float __y, float __x) ;
extern float cosf (float __x) ; extern float __cosf (float __x) ;
extern float sinf (float __x) ; extern float __sinf (float __x) ;
extern float tanf (float __x) ; extern float __tanf (float __x) ;
# 78 "/usr/include/bits/mathcalls.h" 3
extern float coshf (float __x) ; extern float __coshf (float __x) ;
extern float sinhf (float __x) ; extern float __sinhf (float __x) ;
extern float tanhf (float __x) ; extern float __tanhf (float __x) ;
extern float acoshf (float __x) ; extern float __acoshf (float __x) ;
extern float asinhf (float __x) ; extern float __asinhf (float __x) ;
extern float atanhf (float __x) ; extern float __atanhf (float __x) ;
extern float expf (float __x) ; extern float __expf (float __x) ;
# 106 "/usr/include/bits/mathcalls.h" 3
extern float frexpf (float __x, int *__exponent) ; extern float __frexpf (float __x, int *__exponent) ;
extern float ldexpf (float __x, int __exponent) ; extern float __ldexpf (float __x, int __exponent) ;
extern float logf (float __x) ; extern float __logf (float __x) ;
extern float log10f (float __x) ; extern float __log10f (float __x) ;
extern float modff (float __x, float *__iptr) ; extern float __modff (float __x, float *__iptr) ;
extern float expm1f (float __x) ; extern float __expm1f (float __x) ;
extern float log1pf (float __x) ; extern float __log1pf (float __x) ;
extern float logbf (float __x) ; extern float __logbf (float __x) ;
# 143 "/usr/include/bits/mathcalls.h" 3
extern float powf (float __x, float __y) ; extern float __powf (float __x, float __y) ;
extern float sqrtf (float __x) ; extern float __sqrtf (float __x) ;
extern float hypotf (float __x, float __y) ; extern float __hypotf (float __x, float __y) ;
extern float cbrtf (float __x) ; extern float __cbrtf (float __x) ;
extern float ceilf (float __x) ; extern float __ceilf (float __x) ;
extern float fabsf (float __x) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__const__));
extern float floorf (float __x) ; extern float __floorf (float __x) ;
extern float fmodf (float __x, float __y) ; extern float __fmodf (float __x, float __y) ;
extern int __isinff (float __value) __attribute__ ((__const__));
extern int __finitef (float __value) __attribute__ ((__const__));
extern int isinff (float __value) __attribute__ ((__const__));
extern int finitef (float __value) __attribute__ ((__const__));
extern float infnanf (int __error) __attribute__ ((__const__)); extern float __infnanf (int __error) __attribute__ ((__const__));
extern float dremf (float __x, float __y) ; extern float __dremf (float __x, float __y) ;
extern float significandf (float __x) ; extern float __significandf (float __x) ;
extern float copysignf (float __x, float __y) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__const__));
# 217 "/usr/include/bits/mathcalls.h" 3
extern int __isnanf (float __value) __attribute__ ((__const__));
extern int isnanf (float __value) __attribute__ ((__const__));
extern float j0f (float) ; extern float __j0f (float) ;
extern float j1f (float) ; extern float __j1f (float) ;
extern float jnf (int, float) ; extern float __jnf (int, float) ;
extern float y0f (float) ; extern float __y0f (float) ;
extern float y1f (float) ; extern float __y1f (float) ;
extern float ynf (int, float) ; extern float __ynf (int, float) ;
extern float erff (float) ; extern float __erff (float) ;
extern float erfcf (float) ; extern float __erfcf (float) ;
extern float lgammaf (float) ; extern float __lgammaf (float) ;
# 246 "/usr/include/bits/mathcalls.h" 3
extern float gammaf (float) ; extern float __gammaf (float) ;
extern float lgammaf_r (float, int *__signgamp) ; extern float __lgammaf_r (float, int *__signgamp) ;
extern float rintf (float __x) ; extern float __rintf (float __x) ;
extern float nextafterf (float __x, float __y) __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__const__));
extern float remainderf (float __x, float __y) ; extern float __remainderf (float __x, float __y) ;
extern float scalbf (float __x, float __n) ; extern float __scalbf (float __x, float __n) ;
extern float scalbnf (float __x, int __n) ; extern float __scalbnf (float __x, int __n) ;
extern int ilogbf (float __x) ; extern int __ilogbf (float __x) ;
# 83 "/usr/include/math.h" 2 3
# 99 "/usr/include/math.h" 3
# 1 "/usr/include/bits/mathcalls.h" 1 3
# 54 "/usr/include/bits/mathcalls.h" 3
extern long double acosl (long double __x) ; extern long double __acosl (long double __x) ;
extern long double asinl (long double __x) ; extern long double __asinl (long double __x) ;
extern long double atanl (long double __x) ; extern long double __atanl (long double __x) ;
extern long double atan2l (long double __y, long double __x) ; extern long double __atan2l (long double __y, long double __x) ;
extern long double cosl (long double __x) ; extern long double __cosl (long double __x) ;
extern long double sinl (long double __x) ; extern long double __sinl (long double __x) ;
extern long double tanl (long double __x) ; extern long double __tanl (long double __x) ;
# 78 "/usr/include/bits/mathcalls.h" 3
extern long double coshl (long double __x) ; extern long double __coshl (long double __x) ;
extern long double sinhl (long double __x) ; extern long double __sinhl (long double __x) ;
extern long double tanhl (long double __x) ; extern long double __tanhl (long double __x) ;
extern long double acoshl (long double __x) ; extern long double __acoshl (long double __x) ;
extern long double asinhl (long double __x) ; extern long double __asinhl (long double __x) ;
extern long double atanhl (long double __x) ; extern long double __atanhl (long double __x) ;
extern long double expl (long double __x) ; extern long double __expl (long double __x) ;
# 106 "/usr/include/bits/mathcalls.h" 3
extern long double frexpl (long double __x, int *__exponent) ; extern long double __frexpl (long double __x, int *__exponent) ;
extern long double ldexpl (long double __x, int __exponent) ; extern long double __ldexpl (long double __x, int __exponent) ;
extern long double logl (long double __x) ; extern long double __logl (long double __x) ;
extern long double log10l (long double __x) ; extern long double __log10l (long double __x) ;
extern long double modfl (long double __x, long double *__iptr) ; extern long double __modfl (long double __x, long double *__iptr) ;
extern long double expm1l (long double __x) ; extern long double __expm1l (long double __x) ;
extern long double log1pl (long double __x) ; extern long double __log1pl (long double __x) ;
extern long double logbl (long double __x) ; extern long double __logbl (long double __x) ;
# 143 "/usr/include/bits/mathcalls.h" 3
extern long double powl (long double __x, long double __y) ; extern long double __powl (long double __x, long double __y) ;
extern long double sqrtl (long double __x) ; extern long double __sqrtl (long double __x) ;
extern long double hypotl (long double __x, long double __y) ; extern long double __hypotl (long double __x, long double __y) ;
extern long double cbrtl (long double __x) ; extern long double __cbrtl (long double __x) ;
extern long double ceill (long double __x) ; extern long double __ceill (long double __x) ;
extern long double fabsl (long double __x) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__const__));
extern long double floorl (long double __x) ; extern long double __floorl (long double __x) ;
extern long double fmodl (long double __x, long double __y) ; extern long double __fmodl (long double __x, long double __y) ;
extern int __isinfl (long double __value) __attribute__ ((__const__));
extern int __finitel (long double __value) __attribute__ ((__const__));
extern int isinfl (long double __value) __attribute__ ((__const__));
extern int finitel (long double __value) __attribute__ ((__const__));
extern long double infnanl (int __error) __attribute__ ((__const__)); extern long double __infnanl (int __error) __attribute__ ((__const__));
extern long double dreml (long double __x, long double __y) ; extern long double __dreml (long double __x, long double __y) ;
extern long double significandl (long double __x) ; extern long double __significandl (long double __x) ;
extern long double copysignl (long double __x, long double __y) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__const__));
# 217 "/usr/include/bits/mathcalls.h" 3
extern int __isnanl (long double __value) __attribute__ ((__const__));
extern int isnanl (long double __value) __attribute__ ((__const__));
extern long double j0l (long double) ; extern long double __j0l (long double) ;
extern long double j1l (long double) ; extern long double __j1l (long double) ;
extern long double jnl (int, long double) ; extern long double __jnl (int, long double) ;
extern long double y0l (long double) ; extern long double __y0l (long double) ;
extern long double y1l (long double) ; extern long double __y1l (long double) ;
extern long double ynl (int, long double) ; extern long double __ynl (int, long double) ;
extern long double erfl (long double) ; extern long double __erfl (long double) ;
extern long double erfcl (long double) ; extern long double __erfcl (long double) ;
extern long double lgammal (long double) ; extern long double __lgammal (long double) ;
# 246 "/usr/include/bits/mathcalls.h" 3
extern long double gammal (long double) ; extern long double __gammal (long double) ;
extern long double lgammal_r (long double, int *__signgamp) ; extern long double __lgammal_r (long double, int *__signgamp) ;
extern long double rintl (long double __x) ; extern long double __rintl (long double __x) ;
extern long double nextafterl (long double __x, long double __y) __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__const__));
extern long double remainderl (long double __x, long double __y) ; extern long double __remainderl (long double __x, long double __y) ;
extern long double scalbl (long double __x, long double __n) ; extern long double __scalbl (long double __x, long double __n) ;
extern long double scalbnl (long double __x, int __n) ; extern long double __scalbnl (long double __x, int __n) ;
extern int ilogbl (long double __x) ; extern int __ilogbl (long double __x) ;
# 100 "/usr/include/math.h" 2 3
# 113 "/usr/include/math.h" 3
extern int signgam;
# 236 "/usr/include/math.h" 3
typedef enum
{
_IEEE_ = -1,
_SVID_,
_XOPEN_,
_POSIX_,
_ISOC_
} _LIB_VERSION_TYPE;
extern _LIB_VERSION_TYPE _LIB_VERSION;
# 261 "/usr/include/math.h" 3
struct exception
{
int type;
char *name;
double arg1;
double arg2;
double retval;
};
extern int matherr (struct exception *__exc);
# 289 "/usr/include/math.h" 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/float.h" 1 3
# 290 "/usr/include/math.h" 2 3
# 348 "/usr/include/math.h" 3
# 1 "/usr/include/bits/mathinline.h" 1 3
# 281 "/usr/include/bits/mathinline.h" 3
extern __inline double __sgn (double) ; extern __inline double __sgn (double __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); } extern __inline float __sgnf (float) ; extern __inline float __sgnf (float __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); } extern __inline long double __sgnl (long double) ; extern __inline long double __sgnl (long double __x) { return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0); }
# 466 "/usr/include/bits/mathinline.h" 3
extern __inline double atan2 (double __y, double __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; } extern __inline float atan2f (float __y, float __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; } extern __inline long double atan2l (long double __y, long double __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; }
extern __inline long double __atan2l (long double __y, long double __x) { register long double __value; __asm __volatile__ ("fpatan" : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); return __value; }
extern __inline double fmod (double __x, double __y) { register long double __value; __asm __volatile__ ("1: fprem\n\t" "fnstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); return __value; } extern __inline float fmodf (float __x, float __y) { register long double __value; __asm __volatile__ ("1: fprem\n\t" "fnstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); return __value; } extern __inline long double fmodl (long double __x, long double __y) { register long double __value; __asm __volatile__ ("1: fprem\n\t" "fnstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); return __value; }
# 481 "/usr/include/bits/mathinline.h" 3
extern __inline double sqrt (double __x) { register double __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; } extern __inline float sqrtf (float __x) { register float __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; } extern __inline long double sqrtl (long double __x) { register long double __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; }
extern __inline long double __sqrtl (long double __x) { register long double __result; __asm __volatile__ ("fsqrt" : "=t" (__result) : "0" (__x)); return __result; }
extern __inline double fabs (double __x) { return __builtin_fabs (__x); }
extern __inline float fabsf (float __x) { return __builtin_fabsf (__x); }
extern __inline long double fabsl (long double __x) { return __builtin_fabsl (__x); }
extern __inline long double __fabsl (long double __x) { return __builtin_fabsl (__x); }
# 507 "/usr/include/bits/mathinline.h" 3
extern __inline double atan (double __x) { register double __result; __asm __volatile__ ("fld1; fpatan" : "=t" (__result) : "0" (__x) : "st(1)"); return __result; } extern __inline float atanf (float __x) { register float __result; __asm __volatile__ ("fld1; fpatan" : "=t" (__result) : "0" (__x) : "st(1)"); return __result; } extern __inline long double atanl (long double __x) { register long double __result; __asm __volatile__ ("fld1; fpatan" : "=t" (__result) : "0" (__x) : "st(1)"); return __result; }
extern __inline long double __sgn1l (long double) ; extern __inline long double __sgn1l (long double __x) { __extension__ union { long double __xld; unsigned int __xi[3]; } __n = { __xld: __x }; __n.__xi[2] = (__n.__xi[2] & 0x8000) | 0x3fff; __n.__xi[1] = 0x80000000; __n.__xi[0] = 0; return __n.__xld; }
# 533 "/usr/include/bits/mathinline.h" 3
extern __inline double floor (double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline float floorf (float __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline long double floorl (long double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0400; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; }
# 544 "/usr/include/bits/mathinline.h" 3
extern __inline double ceil (double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline float ceilf (float __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; } extern __inline long double ceill (long double __x) { register long double __value; __volatile unsigned short int __cw; __volatile unsigned short int __cwtmp; __asm __volatile ("fnstcw %0" : "=m" (__cw)); __cwtmp = (__cw & 0xf3ff) | 0x0800; __asm __volatile ("fldcw %0" : : "m" (__cwtmp)); __asm __volatile ("frndint" : "=t" (__value) : "0" (__x)); __asm __volatile ("fldcw %0" : : "m" (__cw)); return __value; }
# 562 "/usr/include/bits/mathinline.h" 3
extern __inline double
ldexp (double __x, int __y)
{
register long double __value; __asm __volatile__ ("fscale" : "=t" (__value) : "0" (__x), "u" ((long double) __y)); return __value;
}
# 580 "/usr/include/bits/mathinline.h" 3
extern __inline double log1p (double __x) { register long double __value; if (__fabsl (__x) >= 1.0 - 0.5 * 1.41421356237309504880L) __value = logl (1.0 + __x); else __asm __volatile__ ("fldln2\n\t" "fxch\n\t" "fyl2xp1" : "=t" (__value) : "0" (__x) : "st(1)"); return __value; } extern __inline float log1pf (float __x) { register long double __value; if (__fabsl (__x) >= 1.0 - 0.5 * 1.41421356237309504880L) __value = logl (1.0 + __x); else __asm __volatile__ ("fldln2\n\t" "fxch\n\t" "fyl2xp1" : "=t" (__value) : "0" (__x) : "st(1)"); return __value; } extern __inline long double log1pl (long double __x) { register long double __value; if (__fabsl (__x) >= 1.0 - 0.5 * 1.41421356237309504880L) __value = logl (1.0 + __x); else __asm __volatile__ ("fldln2\n\t" "fxch\n\t" "fyl2xp1" : "=t" (__value) : "0" (__x) : "st(1)"); return __value; }
# 594 "/usr/include/bits/mathinline.h" 3
extern __inline double asinh (double __x) { register long double __y = __fabsl (__x); return (log1pl (__y * __y / (__sqrtl (__y * __y + 1.0) + 1.0) + __y) * __sgn1l (__x)); } extern __inline float asinhf (float __x) { register long double __y = __fabsl (__x); return (log1pl (__y * __y / (__sqrtl (__y * __y + 1.0) + 1.0) + __y) * __sgn1l (__x)); } extern __inline long double asinhl (long double __x) { register long double __y = __fabsl (__x); return (log1pl (__y * __y / (__sqrtl (__y * __y + 1.0) + 1.0) + __y) * __sgn1l (__x)); }
extern __inline double acosh (double __x) { return logl (__x + __sqrtl (__x - 1.0) * __sqrtl (__x + 1.0)); } extern __inline float acoshf (float __x) { return logl (__x + __sqrtl (__x - 1.0) * __sqrtl (__x + 1.0)); } extern __inline long double acoshl (long double __x) { return logl (__x + __sqrtl (__x - 1.0) * __sqrtl (__x + 1.0)); }
extern __inline double atanh (double __x) { register long double __y = __fabsl (__x); return -0.5 * log1pl (-(__y + __y) / (1.0 + __y)) * __sgn1l (__x); } extern __inline float atanhf (float __x) { register long double __y = __fabsl (__x); return -0.5 * log1pl (-(__y + __y) / (1.0 + __y)) * __sgn1l (__x); } extern __inline long double atanhl (long double __x) { register long double __y = __fabsl (__x); return -0.5 * log1pl (-(__y + __y) / (1.0 + __y)) * __sgn1l (__x); }
extern __inline double hypot (double __x, double __y) { return __sqrtl (__x * __x + __y * __y); } extern __inline float hypotf (float __x, float __y) { return __sqrtl (__x * __x + __y * __y); } extern __inline long double hypotl (long double __x, long double __y) { return __sqrtl (__x * __x + __y * __y); }
extern __inline double logb (double __x) { register long double __value; register long double __junk; __asm __volatile__ ("fxtract\n\t" : "=t" (__junk), "=u" (__value) : "0" (__x)); return __value; } extern __inline float logbf (float __x) { register long double __value; register long double __junk; __asm __volatile__ ("fxtract\n\t" : "=t" (__junk), "=u" (__value) : "0" (__x)); return __value; } extern __inline long double logbl (long double __x) { register long double __value; register long double __junk; __asm __volatile__ ("fxtract\n\t" : "=t" (__junk), "=u" (__value) : "0" (__x)); return __value; }
# 693 "/usr/include/bits/mathinline.h" 3
extern __inline double drem (double __x, double __y) { register double __value; register int __clobbered; __asm __volatile__ ("1: fprem1\n\t" "fstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); return __value; } extern __inline float dremf (float __x, float __y) { register double __value; register int __clobbered; __asm __volatile__ ("1: fprem1\n\t" "fstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); return __value; } extern __inline long double dreml (long double __x, long double __y) { register double __value; register int __clobbered; __asm __volatile__ ("1: fprem1\n\t" "fstsw %%ax\n\t" "sahf\n\t" "jp 1b" : "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); return __value; }
# 706 "/usr/include/bits/mathinline.h" 3
extern __inline int
__finite (double __x)
{
return (__extension__
(((((union { double __d; int __i[2]; }) {__d: __x}).__i[1]
| 0x800fffffu) + 1) >> 31));
}
# 349 "/usr/include/math.h" 2 3
# 1943 "/usr/local/src/temp/php-4.0.6/main/php_config.h" 2
# 2 "/usr/local/src/temp/php-4.0.6/Zend/zend_config.h" 2
# 45 "/usr/local/src/temp/php-4.0.6/Zend/zend.h" 2
# 55 "/usr/local/src/temp/php-4.0.6/Zend/zend.h"
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stdarg.h" 1 3
# 110 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stdarg.h" 3
typedef __gnuc_va_list va_list;
# 56 "/usr/local/src/temp/php-4.0.6/Zend/zend.h" 2
# 1 "/usr/include/dlfcn.h" 1 3
# 23 "/usr/include/dlfcn.h" 3
# 1 "/usr/include/features.h" 1 3
# 24 "/usr/include/dlfcn.h" 2 3
# 1 "/usr/include/bits/dlfcn.h" 1 3
# 27 "/usr/include/dlfcn.h" 2 3
# 45 "/usr/include/dlfcn.h" 3
extern void *dlopen (__const char *__file, int __mode) ;
extern int dlclose (void *__handle) ;
extern void *dlsym (void *__restrict __handle,
__const char *__restrict __name) ;
# 67 "/usr/include/dlfcn.h" 3
extern char *dlerror (void) ;
# 60 "/usr/local/src/temp/php-4.0.6/Zend/zend.h" 2
# 89 "/usr/local/src/temp/php-4.0.6/Zend/zend.h"
# 1 "/usr/include/alloca.h" 1 3
# 90 "/usr/local/src/temp/php-4.0.6/Zend/zend.h" 2
# 134 "/usr/local/src/temp/php-4.0.6/Zend/zend.h"
# 1 "/usr/local/src/temp/php-4.0.6/Zend/zend_errors.h" 1
# 135 "/usr/local/src/temp/php-4.0.6/Zend/zend.h" 2
# 1 "/usr/local/src/temp/php-4.0.6/Zend/zend_alloc.h" 1
# 24 "/usr/local/src/temp/php-4.0.6/Zend/zend_alloc.h"
# 1 "/usr/include/stdio.h" 1 3
# 25 "/usr/local/src/temp/php-4.0.6/Zend/zend_alloc.h" 2
# 1 "/usr/local/src/temp/php-4.0.6/Zend/zend_globals_macros.h" 1
# 24 "/usr/local/src/temp/php-4.0.6/Zend/zend_globals_macros.h"
typedef struct _zend_compiler_globals zend_compiler_globals;
typedef struct _zend_executor_globals zend_executor_globals;
typedef struct _zend_alloc_globals zend_alloc_globals;
# 46 "/usr/local/src/temp/php-4.0.6/Zend/zend_globals_macros.h"
extern struct _zend_compiler_globals compiler_globals;
int zendparse(void);
# 66 "/usr/local/src/temp/php-4.0.6/Zend/zend_globals_macros.h"
extern zend_executor_globals executor_globals;
# 85 "/usr/local/src/temp/php-4.0.6/Zend/zend_globals_macros.h"
extern zend_alloc_globals alloc_globals;
# 31 "/usr/local/src/temp/php-4.0.6/Zend/zend_alloc.h" 2
typedef struct _zend_mem_header {
# 49 "/usr/local/src/temp/php-4.0.6/Zend/zend_alloc.h"
struct _zend_mem_header *pNext;
struct _zend_mem_header *pLast;
unsigned int size:30;
unsigned int persistent:1;
unsigned int cached:1;
} zend_mem_header;
typedef union _align_test {
void *ptr;
double dbl;
long lng;
} align_test;
# 77 "/usr/local/src/temp/php-4.0.6/Zend/zend_alloc.h"
char *zend_strndup(const char *s, unsigned int length);
void *_emalloc(size_t size );
void _efree(void *ptr );
void *_ecalloc(size_t nmemb, size_t size );
void *_erealloc(void *ptr, size_t size, int allow_failure );
char *_estrdup(const char *s );
char *_estrndup(const char *s, unsigned int length );
int _persist_alloc(void *ptr );
# 118 "/usr/local/src/temp/php-4.0.6/Zend/zend_alloc.h"
int zend_set_memory_limit(unsigned int memory_limit);
void start_memory_manager(void);
void shutdown_memory_manager(int silent, int clean_cache);
# 136 "/usr/local/src/temp/php-4.0.6/Zend/zend.h" 2
typedef unsigned char zend_bool;
typedef unsigned char zend_uchar;
typedef unsigned int zend_uint;
typedef unsigned long zend_ulong;
typedef unsigned short zend_ushort;
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/limits.h" 1 3
# 11 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/limits.h" 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/syslimits.h" 1 3
# 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/limits.h" 1 3
# 125 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/limits.h" 3
# 1 "/usr/include/limits.h" 1 3
# 26 "/usr/include/limits.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/limits.h" 2 3
# 1 "/usr/include/bits/posix1_lim.h" 1 3
# 126 "/usr/include/bits/posix1_lim.h" 3
# 1 "/usr/include/bits/local_lim.h" 1 3
# 36 "/usr/include/bits/local_lim.h" 3
# 1 "/usr/include/linux/limits.h" 1 3
# 37 "/usr/include/bits/local_lim.h" 2 3
# 127 "/usr/include/bits/posix1_lim.h" 2 3
# 31 "/usr/include/limits.h" 2 3
# 1 "/usr/include/bits/posix2_lim.h" 1 3
# 35 "/usr/include/limits.h" 2 3
# 126 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/limits.h" 2 3
# 8 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/syslimits.h" 2 3
# 12 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/limits.h" 2 3
# 145 "/usr/local/src/temp/php-4.0.6/Zend/zend.h" 2
# 161 "/usr/local/src/temp/php-4.0.6/Zend/zend.h"
# 1 "/usr/local/src/temp/php-4.0.6/Zend/zend_hash.h" 1
# 23 "/usr/local/src/temp/php-4.0.6/Zend/zend_hash.h"
# 1 "/usr/include/sys/types.h" 1 3
# 24 "/usr/local/src/temp/php-4.0.6/Zend/zend_hash.h" 2
# 36 "/usr/local/src/temp/php-4.0.6/Zend/zend_hash.h"
typedef int (*compare_func_t)(const void *, const void *);
typedef void (*sort_func_t)(void *, size_t, register size_t, compare_func_t);
typedef void (*dtor_func_t)(void *pDest);
typedef int (*apply_func_t)(void *pDest);
typedef int (*apply_func_arg_t)(void *pDest, void *argument);
typedef ulong (*hash_func_t)(char *arKey, uint nKeyLength);
typedef void (*copy_ctor_func_t)(void *pElement);
struct _hashtable;
typedef struct bucket {
ulong h;
uint nKeyLength;
void *pData;
void *pDataPtr;
struct bucket *pListNext;
struct bucket *pListLast;
struct bucket *pNext;
struct bucket *pLast;
char arKey[1];
} Bucket;
typedef struct _hashtable {
uint nTableSize;
uint nHashSizeIndex;
uint nNumOfElements;
ulong nNextFreeElement;
hash_func_t pHashFunction;
Bucket *pInternalPointer;
Bucket *pListHead;
Bucket *pListTail;
Bucket **arBuckets;
dtor_func_t pDestructor;
zend_bool persistent;
unsigned char nApplyCount;
zend_bool bApplyProtection;
} HashTable;
typedef Bucket* HashPosition;
int zend_hash_init(HashTable *ht, uint nSize, hash_func_t pHashFunction, dtor_func_t pDestructor, int persistent);
int zend_hash_init_ex(HashTable *ht, uint nSize, hash_func_t pHashFunction, dtor_func_t pDestructor, int persistent, zend_bool bApplyProtection);
void zend_hash_destroy(HashTable *ht);
void zend_hash_clean(HashTable *ht);
int zend_hash_add_or_update(HashTable *ht, char *arKey, uint nKeyLength, void *pData, uint nDataSize, void **pDest,int flag);
int zend_hash_quick_add_or_update(HashTable *ht, char *arKey, uint nKeyLength, ulong h, void *pData, uint nDataSize, void **pDest,int flag);
int zend_hash_index_update_or_next_insert(HashTable *ht, ulong h, void *pData, uint nDataSize, void **pDest, int flag);
typedef struct _zend_hash_key {
char *arKey;
uint nKeyLength;
ulong h;
} zend_hash_key;
typedef int (*apply_func_args_t)(void *pDest, int num_args, va_list args, zend_hash_key *hash_key);
void zend_hash_graceful_destroy(HashTable *ht);
void zend_hash_apply(HashTable *ht, apply_func_t apply_func);
void zend_hash_apply_with_argument(HashTable *ht, apply_func_arg_t apply_func, void *);
void zend_hash_apply_with_arguments(HashTable *ht, int (*)(void *element, int num_args, va_list args, zend_hash_key *hash_key), int, ...);
int zend_hash_del_key_or_index(HashTable *ht, char *arKey, uint nKeyLength, ulong h, int flag);
ulong zend_get_hash_value(HashTable *ht, char *arKey, uint nKeyLength);
int zend_hash_find(HashTable *ht, char *arKey, uint nKeyLength, void **pData);
int zend_hash_quick_find(HashTable *ht, char *arKey, uint nKeyLength, ulong h, void **pData);
int zend_hash_index_find(HashTable *ht, ulong h, void **pData);
int zend_hash_exists(HashTable *ht, char *arKey, uint nKeyLength);
int zend_hash_index_exists(HashTable *ht, ulong h);
ulong zend_hash_next_free_element(HashTable *ht);
int zend_hash_move_forward_ex(HashTable *ht, HashPosition *pos);
int zend_hash_move_backwards_ex(HashTable *ht, HashPosition *pos);
int zend_hash_get_current_key_ex(HashTable *ht, char **str_index, ulong *str_length, ulong *num_index, zend_bool duplicate, HashPosition *pos);
int zend_hash_get_current_key_type_ex(HashTable *ht, HashPosition *pos);
int zend_hash_get_current_data_ex(HashTable *ht, void **pData, HashPosition *pos);
void zend_hash_internal_pointer_reset_ex(HashTable *ht, HashPosition *pos);
void zend_hash_internal_pointer_end_ex(HashTable *ht, HashPosition *pos);
# 171 "/usr/local/src/temp/php-4.0.6/Zend/zend_hash.h"
void zend_hash_copy(HashTable *target, HashTable *source, copy_ctor_func_t pCopyConstructor, void *tmp, uint size);
void zend_hash_merge(HashTable *target, HashTable *source, copy_ctor_func_t pCopyConstructor, void *tmp, uint size, int overwrite);
void zend_hash_merge_ex(HashTable *target, HashTable *source, copy_ctor_func_t pCopyConstructor, uint size, zend_bool (*pReplaceOrig)(void *orig, void *p_new));
int zend_hash_sort(HashTable *ht, sort_func_t sort_func, compare_func_t compare_func, int renumber);
int zend_hash_compare(HashTable *ht1, HashTable *ht2, compare_func_t compar, zend_bool ordered);
int zend_hash_minmax(HashTable *ht, int (*compar)(const void *, const void *), int flag, void **pData);
int zend_hash_num_elements(HashTable *ht);
int zend_hash_rehash(HashTable *ht);
ulong hashpjw(char *arKey, uint nKeyLength);
# 162 "/usr/local/src/temp/php-4.0.6/Zend/zend.h" 2
# 1 "/usr/local/src/temp/php-4.0.6/Zend/zend_llist.h" 1
# 24 "/usr/local/src/temp/php-4.0.6/Zend/zend_llist.h"
# 1 "/usr/include/stdlib.h" 1 3
# 25 "/usr/local/src/temp/php-4.0.6/Zend/zend_llist.h" 2
typedef struct _zend_llist_element {
struct _zend_llist_element *next;
struct _zend_llist_element *prev;
char data[1];
} zend_llist_element;
typedef void (*llist_dtor_func_t)(void *);
typedef int (*llist_compare_func_t)(const zend_llist_element *, const zend_llist_element *);
typedef void (*llist_apply_with_arg_func_t)(void *data, void *arg);
typedef void (*llist_apply_with_args_func_t)(void *data, int num_args, va_list args);
typedef void (*llist_apply_func_t)(void *);
typedef struct _zend_llist {
zend_llist_element *head;
zend_llist_element *tail;
size_t size;
llist_dtor_func_t dtor;
unsigned char persistent;
zend_llist_element *traverse_ptr;
} zend_llist;
typedef zend_llist_element* zend_llist_position;
void zend_llist_init(zend_llist *l, size_t size, llist_dtor_func_t dtor, unsigned char persistent);
void zend_llist_add_element(zend_llist *l, void *element);
void zend_llist_prepend_element(zend_llist *l, void *element);
void zend_llist_del_element(zend_llist *l, void *element, int (*compare)(void *element1, void *element2));
void zend_llist_destroy(zend_llist *l);
void zend_llist_clean(zend_llist *l);
void zend_llist_remove_tail(zend_llist *l);
void zend_llist_copy(zend_llist *dst, zend_llist *src);
void zend_llist_apply(zend_llist *l, llist_apply_func_t);
void zend_llist_apply_with_del(zend_llist *l, int (*func)(void *data));
void zend_llist_apply_with_argument(zend_llist *l, llist_apply_with_arg_func_t, void *arg);
void zend_llist_apply_with_arguments(zend_llist *l, llist_apply_with_args_func_t func, int num_args, ...);
int zend_llist_count(zend_llist *l);
void zend_llist_sort(zend_llist *l, llist_compare_func_t comp_func);
void *zend_llist_get_first_ex(zend_llist *l, zend_llist_position *pos);
void *zend_llist_get_last_ex(zend_llist *l, zend_llist_position *pos);
void *zend_llist_get_next_ex(zend_llist *l, zend_llist_position *pos);
void *zend_llist_get_prev_ex(zend_llist *l, zend_llist_position *pos);
# 163 "/usr/local/src/temp/php-4.0.6/Zend/zend.h" 2
typedef struct _zval_struct zval;
typedef struct _zend_class_entry zend_class_entry;
typedef union _zvalue_value {
long lval;
double dval;
struct {
char *val;
int len;
} str;
HashTable *ht;
struct {
zend_class_entry *ce;
HashTable *properties;
} obj;
} zvalue_value;
struct _zval_struct {
zvalue_value value;
zend_uchar type;
zend_uchar is_ref;
zend_ushort refcount;
};
typedef struct _zend_function_entry {
char *fname;
void (*handler)(int ht, zval *return_value, zval *this_ptr, int return_value_used );
unsigned char *func_arg_types;
} zend_function_entry;
typedef struct _zend_property_reference {
int type;
zval *object;
zend_llist *elements_list;
} zend_property_reference;
typedef struct _zend_overloaded_element {
int type;
zval element;
} zend_overloaded_element;
struct _zend_class_entry {
char type;
char *name;
uint name_length;
struct _zend_class_entry *parent;
int *refcount;
zend_bool constants_updated;
HashTable function_table;
HashTable default_properties;
zend_function_entry *builtin_functions;
void (*handle_function_call)(int ht, zval *return_value, zval *this_ptr, int return_value_used , zend_property_reference *property_reference);
zval (*handle_property_get)(zend_property_reference *property_reference);
int (*handle_property_set)(zend_property_reference *property_reference, zval *value);
};
typedef struct _zend_utility_functions {
void (*error_function)(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args);
int (*printf_function)(const char *format, ...);
int (*write_function)(const char *str, uint str_length);
FILE *(*fopen_function)(const char *filename, char **opened_path);
void (*message_handler)(long message, void *data);
void (*block_interruptions)(void);
void (*unblock_interruptions)(void);
int (*get_configuration_directive)(char *name, uint name_length, zval *contents);
void (*ticks_function)(int ticks);
} zend_utility_functions;
typedef struct _zend_utility_values {
char *import_use_extension;
uint import_use_extension_length;
} zend_utility_values;
typedef int (*zend_write_func_t)(const char *str, uint str_length);
# 300 "/usr/local/src/temp/php-4.0.6/Zend/zend.h"
int zend_startup(zend_utility_functions *utility_functions, char **extensions, int start_builtin_functions);
void zend_shutdown(void);
void zend_set_utility_values(zend_utility_values *utility_values);
void zend_bailout(void);
char *get_zend_version(void);
void zend_make_printable_zval(zval *expr, zval *expr_copy, int *use_copy);
int zend_print_zval(zval *expr, int indent);
int zend_print_zval_ex(zend_write_func_t write_func, zval *expr, int indent);
void zend_print_zval_r(zval *expr, int indent);
void zend_print_zval_r_ex(zend_write_func_t write_func, zval *expr, int indent);
void zend_output_debug_string(zend_bool trigger_break, char *format, ...);
extern char *empty_string;
void free_estring(char **str_p);
# 344 "/usr/local/src/temp/php-4.0.6/Zend/zend.h"
extern int (*zend_printf)(const char *format, ...);
extern zend_write_func_t zend_write;
extern FILE *(*zend_fopen)(const char *filename, char **opened_path);
extern void (*zend_block_interruptions)(void);
extern void (*zend_unblock_interruptions)(void);
extern void (*zend_ticks_function)(int ticks);
extern void (*zend_error_cb)(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args);
void zend_error(int type, const char *format, ...);
void zenderror(char *error);
extern zend_class_entry zend_standard_class_def;
extern zend_utility_values zend_uv;
extern zval zval_used_for_init;
# 370 "/usr/local/src/temp/php-4.0.6/Zend/zend.h"
void zend_message_dispatcher(long message, void *data);
int zend_get_configuration_directive(char *name, uint name_length, zval *contents);
# 87 "mbfilter.c" 2
# 98 "mbfilter.c"
extern const unsigned short iso8859_2_ucs_table[];
extern const unsigned short iso8859_3_ucs_table[];
extern const unsigned short iso8859_4_ucs_table[];
extern const unsigned short iso8859_5_ucs_table[];
extern const unsigned short iso8859_6_ucs_table[];
extern const unsigned short iso8859_7_ucs_table[];
extern const unsigned short iso8859_8_ucs_table[];
extern const unsigned short iso8859_9_ucs_table[];
extern const unsigned short iso8859_10_ucs_table[];
extern const unsigned short iso8859_13_ucs_table[];
extern const unsigned short iso8859_14_ucs_table[];
extern const unsigned short iso8859_15_ucs_table[];
# 119 "mbfilter.c"
extern const unsigned char mbfl_charprop_table[];
static const char *mbfl_language_uni_aliases[] = {"universal", "none", ((void *)0)};
static mbfl_language mbfl_language_uni = {
mbfl_no_language_uni,
"uni",
"uni",
&mbfl_language_uni_aliases,
mbfl_no_encoding_utf8,
mbfl_no_encoding_base64,
mbfl_no_encoding_base64
};
static mbfl_language mbfl_language_japanese = {
mbfl_no_language_japanese,
"Japanese",
"ja",
((void *)0),
mbfl_no_encoding_2022jp,
mbfl_no_encoding_base64,
mbfl_no_encoding_7bit
};
static mbfl_language mbfl_language_english = {
mbfl_no_language_english,
"English",
"en",
((void *)0),
mbfl_no_encoding_8859_1,
mbfl_no_encoding_qprint,
mbfl_no_encoding_8bit
};
static mbfl_language *mbfl_language_ptr_table[] = {
&mbfl_language_uni,
&mbfl_language_japanese,
&mbfl_language_english,
((void *)0)
};
static const unsigned char mblen_table_utf8[] = {
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, 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, 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, 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, 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, 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, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 1, 1
};
static const unsigned char mblen_table_eucjp[] = {
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, 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, 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, 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, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
};
static const unsigned char mblen_table_sjis[] = {
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, 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, 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, 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, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
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, 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, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
};
static const char *mbfl_encoding_pass_aliases[] = {"none", ((void *)0)};
static mbfl_encoding mbfl_encoding_pass = {
mbfl_no_encoding_pass,
"pass",
((void *)0),
&mbfl_encoding_pass_aliases,
((void *)0),
0
};
static const char *mbfl_encoding_auto_aliases[] = {"unknown", ((void *)0)};
static mbfl_encoding mbfl_encoding_auto = {
mbfl_no_encoding_auto,
"auto",
((void *)0),
&mbfl_encoding_auto_aliases,
((void *)0),
0
};
static mbfl_encoding mbfl_encoding_wchar = {
mbfl_no_encoding_wchar,
"wchar",
((void *)0),
((void *)0),
((void *)0),
0x00000100
};
static mbfl_encoding mbfl_encoding_byte2be = {
mbfl_no_encoding_byte2be,
"byte2be",
((void *)0),
((void *)0),
((void *)0),
0x00000001
};
static mbfl_encoding mbfl_encoding_byte2le = {
mbfl_no_encoding_byte2le,
"byte2le",
((void *)0),
((void *)0),
((void *)0),
0x00000001
};
static mbfl_encoding mbfl_encoding_byte4be = {
mbfl_no_encoding_byte4be,
"byte4be",
((void *)0),
((void *)0),
((void *)0),
0x00000001
};
static mbfl_encoding mbfl_encoding_byte4le = {
mbfl_no_encoding_byte4le,
"byte4le",
((void *)0),
((void *)0),
((void *)0),
0x00000001
};
static mbfl_encoding mbfl_encoding_base64 = {
mbfl_no_encoding_base64,
"BASE64",
"BASE64",
((void *)0),
((void *)0),
0x00000001
};
static const char *mbfl_encoding_qprint_aliases[] = {"qprint", ((void *)0)};
static mbfl_encoding mbfl_encoding_qprint = {
mbfl_no_encoding_qprint,
"Quoted-Printable",
"Quoted-Printable",
&mbfl_encoding_qprint_aliases,
((void *)0),
0x00000001
};
static mbfl_encoding mbfl_encoding_7bit = {
mbfl_no_encoding_7bit,
"7bit",
"7bit",
((void *)0),
((void *)0),
0x00000001
};
static mbfl_encoding mbfl_encoding_8bit = {
mbfl_no_encoding_8bit,
"8bit",
"8bit",
((void *)0),
((void *)0),
0x00000001
};
static const char *mbfl_encoding_ucs2_aliases[] = {"ISO-10646-UCS-2", "UCS2" , "UNICODE", ((void *)0)};
static mbfl_encoding mbfl_encoding_ucs2 = {
mbfl_no_encoding_ucs2,
"UCS-2",
"UCS-2",
&mbfl_encoding_ucs2_aliases,
((void *)0),
0x00000010
};
static mbfl_encoding mbfl_encoding_ucs2be = {
mbfl_no_encoding_ucs2be,
"UCS-2BE",
"UCS-2BE",
((void *)0),
((void *)0),
0x00000010
};
static mbfl_encoding mbfl_encoding_ucs2le = {
mbfl_no_encoding_ucs2le,
"UCS-2LE",
"UCS-2LE",
((void *)0),
((void *)0),
0x00000020
};
static const char *mbfl_encoding_ucs4_aliases[] = {"ISO-10646-UCS-4", "UCS4", ((void *)0)};
static mbfl_encoding mbfl_encoding_ucs4 = {
mbfl_no_encoding_ucs4,
"UCS-4",
"UCS-4",
&mbfl_encoding_ucs4_aliases,
((void *)0),
0x00000100
};
static mbfl_encoding mbfl_encoding_ucs4be = {
mbfl_no_encoding_ucs4be,
"UCS-4BE",
"UCS-4BE",
((void *)0),
((void *)0),
0x00000100
};
static mbfl_encoding mbfl_encoding_ucs4le = {
mbfl_no_encoding_ucs4le,
"UCS-4LE",
"UCS-4LE",
((void *)0),
((void *)0),
0x00000200
};
static const char *mbfl_encoding_utf32_aliases[] = {"utf32", ((void *)0)};
static mbfl_encoding mbfl_encoding_utf32 = {
mbfl_no_encoding_utf32,
"UTF-32",
"UTF-32",
&mbfl_encoding_utf32_aliases,
((void *)0),
0x00000100
};
static mbfl_encoding mbfl_encoding_utf32be = {
mbfl_no_encoding_utf32be,
"UTF-32BE",
"UTF-32BE",
((void *)0),
((void *)0),
0x00000100
};
static mbfl_encoding mbfl_encoding_utf32le = {
mbfl_no_encoding_utf32le,
"UTF-32LE",
"UTF-32LE",
((void *)0),
((void *)0),
0x00000200
};
static const char *mbfl_encoding_utf16_aliases[] = {"utf16", ((void *)0)};
static mbfl_encoding mbfl_encoding_utf16 = {
mbfl_no_encoding_utf16,
"UTF-16",
"UTF-16",
&mbfl_encoding_utf16_aliases,
((void *)0),
0x00000040
};
static mbfl_encoding mbfl_encoding_utf16be = {
mbfl_no_encoding_utf16be,
"UTF-16BE",
"UTF-16BE",
((void *)0),
((void *)0),
0x00000040
};
static mbfl_encoding mbfl_encoding_utf16le = {
mbfl_no_encoding_utf16le,
"UTF-16LE",
"UTF-16LE",
((void *)0),
((void *)0),
0x00000080
};
static const char *mbfl_encoding_utf8_aliases[] = {"utf8", ((void *)0)};
static mbfl_encoding mbfl_encoding_utf8 = {
mbfl_no_encoding_utf8,
"UTF-8",
"UTF-8",
&mbfl_encoding_utf8_aliases,
mblen_table_utf8,
0x00000002
};
static const char *mbfl_encoding_utf7_aliases[] = {"utf7", ((void *)0)};
static mbfl_encoding mbfl_encoding_utf7 = {
mbfl_no_encoding_utf7,
"UTF-7",
"UTF-7",
&mbfl_encoding_utf7_aliases,
((void *)0),
0x00000002 | 0x00001000
};
static mbfl_encoding mbfl_encoding_utf7imap = {
mbfl_no_encoding_utf7imap,
"UTF7-IMAP",
((void *)0),
((void *)0),
((void *)0),
0x00000002 | 0x00001000
};
static mbfl_encoding mbfl_encoding_ascii = {
mbfl_no_encoding_ascii,
"ASCII",
"US-ASCII",
((void *)0),
((void *)0),
0x00000001
};
static const char *mbfl_encoding_euc_jp_aliases[] = {"EUC", "EUC_JP", "eucJP", "x-euc-jp", ((void *)0)};
static mbfl_encoding mbfl_encoding_euc_jp = {
mbfl_no_encoding_euc_jp,
"EUC-JP",
"EUC-JP",
&mbfl_encoding_euc_jp_aliases,
mblen_table_eucjp,
0x00000002
};
static const char *mbfl_encoding_sjis_aliases[] = {"x-sjis", "SHIFT-JIS", ((void *)0)};
static mbfl_encoding mbfl_encoding_sjis = {
mbfl_no_encoding_sjis,
"SJIS",
"Shift_JIS",
&mbfl_encoding_sjis_aliases,
mblen_table_sjis,
0x00000002
};
static const char *mbfl_encoding_eucjp_win_aliases[] = {"eucJP-open", ((void *)0)};
static mbfl_encoding mbfl_encoding_eucjp_win = {
mbfl_no_encoding_eucjp_win,
"eucJP-win",
"EUC-JP",
&mbfl_encoding_eucjp_win_aliases,
mblen_table_eucjp,
0x00000002
};
static const char *mbfl_encoding_sjis_win_aliases[] = {"SJIS-open", "MS_Kanji", "Windows-31J", ((void *)0)};
static mbfl_encoding mbfl_encoding_sjis_win = {
mbfl_no_encoding_sjis_win,
"SJIS-win",
"Shift_JIS",
&mbfl_encoding_sjis_win_aliases,
mblen_table_sjis,
0x00000002
};
static mbfl_encoding mbfl_encoding_jis = {
mbfl_no_encoding_jis,
"JIS",
"ISO-2022-JP",
((void *)0),
((void *)0),
0x00000002 | 0x00001000
};
static mbfl_encoding mbfl_encoding_2022jp = {
mbfl_no_encoding_2022jp,
"ISO-2022-JP",
"ISO-2022-JP",
((void *)0),
((void *)0),
0x00000002 | 0x00001000
};
static const char *mbfl_encoding_8859_1_aliases[] = {"ISO_8859-1", "latin1", ((void *)0)};
static mbfl_encoding mbfl_encoding_8859_1 = {
mbfl_no_encoding_8859_1,
"ISO-8859-1",
"ISO-8859-1",
&mbfl_encoding_8859_1_aliases,
((void *)0),
0x00000001
};
static const char *mbfl_encoding_8859_2_aliases[] = {"ISO_8859-2", "latin2", ((void *)0)};
static mbfl_encoding mbfl_encoding_8859_2 = {
mbfl_no_encoding_8859_2,
"ISO-8859-2",
"ISO-8859-2",
&mbfl_encoding_8859_2_aliases,
((void *)0),
0x00000001
};
static const char *mbfl_encoding_8859_3_aliases[] = {"ISO_8859-3", "latin3", ((void *)0)};
static mbfl_encoding mbfl_encoding_8859_3 = {
mbfl_no_encoding_8859_3,
"ISO-8859-3",
"ISO-8859-3",
&mbfl_encoding_8859_3_aliases,
((void *)0),
0x00000001
};
static const char *mbfl_encoding_8859_4_aliases[] = {"ISO_8859-4", "latin4", ((void *)0)};
static mbfl_encoding mbfl_encoding_8859_4 = {
mbfl_no_encoding_8859_4,
"ISO-8859-4",
"ISO-8859-4",
&mbfl_encoding_8859_4_aliases,
((void *)0),
0x00000001
};
static const char *mbfl_encoding_8859_5_aliases[] = {"ISO_8859-5", "cyrillic", ((void *)0)};
static mbfl_encoding mbfl_encoding_8859_5 = {
mbfl_no_encoding_8859_5,
"ISO-8859-5",
"ISO-8859-5",
&mbfl_encoding_8859_5_aliases,
((void *)0),
0x00000001
};
static const char *mbfl_encoding_8859_6_aliases[] = {"ISO_8859-6", "arabic", ((void *)0)};
static mbfl_encoding mbfl_encoding_8859_6 = {
mbfl_no_encoding_8859_6,
"ISO-8859-6",
"ISO-8859-6",
&mbfl_encoding_8859_6_aliases,
((void *)0),
0x00000001
};
static const char *mbfl_encoding_8859_7_aliases[] = {"ISO_8859-7", "greek", ((void *)0)};
static mbfl_encoding mbfl_encoding_8859_7 = {
mbfl_no_encoding_8859_7,
"ISO-8859-7",
"ISO-8859-7",
&mbfl_encoding_8859_7_aliases,
((void *)0),
0x00000001
};
static const char *mbfl_encoding_8859_8_aliases[] = {"ISO_8859-8", "hebrew", ((void *)0)};
static mbfl_encoding mbfl_encoding_8859_8 = {
mbfl_no_encoding_8859_8,
"ISO-8859-8",
"ISO-8859-8",
&mbfl_encoding_8859_8_aliases,
((void *)0),
0x00000001
};
static const char *mbfl_encoding_8859_9_aliases[] = {"ISO_8859-9", "latin5", ((void *)0)};
static mbfl_encoding mbfl_encoding_8859_9 = {
mbfl_no_encoding_8859_9,
"ISO-8859-9",
"ISO-8859-9",
&mbfl_encoding_8859_9_aliases,
((void *)0),
0x00000001
};
static const char *mbfl_encoding_8859_10_aliases[] = {"ISO_8859-10", "latin6", ((void *)0)};
static mbfl_encoding mbfl_encoding_8859_10 = {
mbfl_no_encoding_8859_10,
"ISO-8859-10",
"ISO-8859-10",
&mbfl_encoding_8859_10_aliases,
((void *)0),
0x00000001
};
static const char *mbfl_encoding_8859_13_aliases[] = {"ISO_8859-13", ((void *)0)};
static mbfl_encoding mbfl_encoding_8859_13 = {
mbfl_no_encoding_8859_13,
"ISO-8859-13",
"ISO-8859-13",
&mbfl_encoding_8859_13_aliases,
((void *)0),
0x00000001
};
static const char *mbfl_encoding_8859_14_aliases[] = {"ISO_8859-14", "latin8", ((void *)0)};
static mbfl_encoding mbfl_encoding_8859_14 = {
mbfl_no_encoding_8859_14,
"ISO-8859-14",
"ISO-8859-14",
&mbfl_encoding_8859_14_aliases,
((void *)0),
0x00000001
};
static const char *mbfl_encoding_8859_15_aliases[] = {"ISO_8859-15", ((void *)0)};
static mbfl_encoding mbfl_encoding_8859_15 = {
mbfl_no_encoding_8859_15,
"ISO-8859-15",
"ISO-8859-15",
&mbfl_encoding_8859_15_aliases,
((void *)0),
0x00000001
};
static mbfl_encoding *mbfl_encoding_ptr_list[] = {
&mbfl_encoding_pass,
&mbfl_encoding_auto,
&mbfl_encoding_wchar,
&mbfl_encoding_byte2be,
&mbfl_encoding_byte2le,
&mbfl_encoding_byte4be,
&mbfl_encoding_byte4le,
&mbfl_encoding_base64,
&mbfl_encoding_qprint,
&mbfl_encoding_7bit,
&mbfl_encoding_8bit,
&mbfl_encoding_ucs4,
&mbfl_encoding_ucs4be,
&mbfl_encoding_ucs4le,
&mbfl_encoding_ucs2,
&mbfl_encoding_ucs2be,
&mbfl_encoding_ucs2le,
&mbfl_encoding_utf32,
&mbfl_encoding_utf32be,
&mbfl_encoding_utf32le,
&mbfl_encoding_utf16,
&mbfl_encoding_utf16be,
&mbfl_encoding_utf16le,
&mbfl_encoding_utf8,
&mbfl_encoding_utf7,
&mbfl_encoding_utf7imap,
&mbfl_encoding_ascii,
&mbfl_encoding_euc_jp,
&mbfl_encoding_sjis,
&mbfl_encoding_eucjp_win,
&mbfl_encoding_sjis_win,
&mbfl_encoding_jis,
&mbfl_encoding_2022jp,
&mbfl_encoding_8859_1,
&mbfl_encoding_8859_2,
&mbfl_encoding_8859_3,
&mbfl_encoding_8859_4,
&mbfl_encoding_8859_5,
&mbfl_encoding_8859_6,
&mbfl_encoding_8859_7,
&mbfl_encoding_8859_8,
&mbfl_encoding_8859_9,
&mbfl_encoding_8859_10,
&mbfl_encoding_8859_13,
&mbfl_encoding_8859_14,
&mbfl_encoding_8859_15,
((void *)0)
};
static void mbfl_filt_conv_common_ctor(mbfl_convert_filter *filter);
static int mbfl_filt_conv_common_flush(mbfl_convert_filter *filter);
static void mbfl_filt_conv_common_dtor(mbfl_convert_filter *filter);
static int mbfl_filt_conv_pass(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_byte2be(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_byte2be_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_byte2le(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_byte2le_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_byte4be(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_byte4be_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_byte4le(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_byte4le_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_any_7bit(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_base64enc(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_base64enc_flush(mbfl_convert_filter *filter);
static int mbfl_filt_conv_base64dec(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_base64dec_flush(mbfl_convert_filter *filter);
static int mbfl_filt_conv_qprintenc(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_qprintenc_flush(mbfl_convert_filter *filter);
static int mbfl_filt_conv_qprintdec(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_qprintdec_flush(mbfl_convert_filter *filter);
static int mbfl_filt_conv_ucs4_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_ucs4be(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_ucs4le(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_ucs2_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_ucs2be(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_ucs2le(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_utf16_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_utf16be_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_utf16be(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_utf16le_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_utf16le(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_utf8_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_utf8(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_utf7_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_utf7(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_utf7_flush(mbfl_convert_filter *filter);
static int mbfl_filt_conv_utf7imap_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_utf7imap(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_utf7imap_flush(mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_ascii(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_8859_1(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_8859_2_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_8859_2(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_8859_3_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_8859_3(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_8859_4_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_8859_4(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_8859_5_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_8859_5(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_8859_6_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_8859_6(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_8859_7_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_8859_7(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_8859_8_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_8859_8(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_8859_9_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_8859_9(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_8859_10_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_8859_10(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_8859_13_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_8859_13(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_8859_14_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_8859_14(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_8859_15_wchar(int c, mbfl_convert_filter *filter);
static int mbfl_filt_conv_wchar_8859_15(int c, mbfl_convert_filter *filter);
static void mbfl_filt_ident_common_ctor(mbfl_identify_filter *filter);
static void mbfl_filt_ident_common_dtor(mbfl_identify_filter *filter);
static void mbfl_filt_ident_false_ctor(mbfl_identify_filter *filter);
static int mbfl_filt_ident_utf8(int c, mbfl_identify_filter *filter);
static int mbfl_filt_ident_utf7(int c, mbfl_identify_filter *filter);
static int mbfl_filt_ident_ascii(int c, mbfl_identify_filter *filter);
static int mbfl_filt_ident_eucjp(int c, mbfl_identify_filter *filter);
static int mbfl_filt_ident_sjis(int c, mbfl_identify_filter *filter);
static int mbfl_filt_ident_sjiswin(int c, mbfl_identify_filter *filter);
static int mbfl_filt_ident_jis(int c, mbfl_identify_filter *filter);
static int mbfl_filt_ident_2022jp(int c, mbfl_identify_filter *filter);
static int mbfl_filt_ident_false(int c, mbfl_identify_filter *filter);
static int mbfl_filt_ident_true(int c, mbfl_identify_filter *filter);
static struct mbfl_convert_vtbl vtbl_pass = {
mbfl_no_encoding_pass,
mbfl_no_encoding_pass,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_pass,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_byte2be_wchar = {
mbfl_no_encoding_byte2be,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_byte2be_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_byte2be = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_byte2be,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_byte2be,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_byte2le_wchar = {
mbfl_no_encoding_byte2le,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_byte2le_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_byte2le = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_byte2le,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_byte2le,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_byte4be_wchar = {
mbfl_no_encoding_byte4be,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_byte4be_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_byte4be = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_byte4be,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_byte4be,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_byte4le_wchar = {
mbfl_no_encoding_byte4le,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_byte4le_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_byte4le = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_byte4le,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_byte4le,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_8bit_b64 = {
mbfl_no_encoding_8bit,
mbfl_no_encoding_base64,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_base64enc,
mbfl_filt_conv_base64enc_flush };
static struct mbfl_convert_vtbl vtbl_b64_8bit = {
mbfl_no_encoding_base64,
mbfl_no_encoding_8bit,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_base64dec,
mbfl_filt_conv_base64dec_flush };
static struct mbfl_convert_vtbl vtbl_8bit_qprint = {
mbfl_no_encoding_8bit,
mbfl_no_encoding_qprint,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_qprintenc,
mbfl_filt_conv_qprintenc_flush };
static struct mbfl_convert_vtbl vtbl_qprint_8bit = {
mbfl_no_encoding_qprint,
mbfl_no_encoding_8bit,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_qprintdec,
mbfl_filt_conv_qprintdec_flush };
static struct mbfl_convert_vtbl vtbl_8bit_7bit = {
mbfl_no_encoding_8bit,
mbfl_no_encoding_7bit,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_any_7bit,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_7bit_8bit = {
mbfl_no_encoding_7bit,
mbfl_no_encoding_8bit,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_pass,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_ucs4_wchar = {
mbfl_no_encoding_ucs4,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_ucs4_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_ucs4 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_ucs4,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_ucs4be,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_ucs4be_wchar = {
mbfl_no_encoding_ucs4be,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_byte4be_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_ucs4be = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_ucs4be,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_ucs4be,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_ucs4le_wchar = {
mbfl_no_encoding_ucs4le,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_byte4le_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_ucs4le = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_ucs4le,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_ucs4le,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_ucs2_wchar = {
mbfl_no_encoding_ucs2,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_ucs2_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_ucs2 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_ucs2,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_ucs2be,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_ucs2be_wchar = {
mbfl_no_encoding_ucs2be,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_byte2be_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_ucs2be = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_ucs2be,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_ucs2be,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_ucs2le_wchar = {
mbfl_no_encoding_ucs2le,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_byte2le_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_ucs2le = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_ucs2le,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_ucs2le,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_utf32_wchar = {
mbfl_no_encoding_utf32,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_ucs4_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_utf32 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_utf32,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_ucs4be,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_utf32be_wchar = {
mbfl_no_encoding_utf32be,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_byte4be_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_utf32be = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_utf32be,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_ucs4be,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_utf32le_wchar = {
mbfl_no_encoding_utf32le,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_byte4le_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_utf32le = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_utf32le,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_ucs4le,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_utf16_wchar = {
mbfl_no_encoding_utf16,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_utf16_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_utf16 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_utf16,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_utf16be,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_utf16be_wchar = {
mbfl_no_encoding_utf16be,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_utf16be_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_utf16be = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_utf16be,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_utf16be,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_utf16le_wchar = {
mbfl_no_encoding_utf16le,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_utf16le_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_utf16le = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_utf16le,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_utf16le,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_utf8_wchar = {
mbfl_no_encoding_utf8,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_utf8_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_utf8 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_utf8,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_utf8,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_utf7_wchar = {
mbfl_no_encoding_utf7,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_utf7_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_utf7 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_utf7,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_utf7,
mbfl_filt_conv_wchar_utf7_flush };
static struct mbfl_convert_vtbl vtbl_utf7imap_wchar = {
mbfl_no_encoding_utf7imap,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_utf7imap_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_utf7imap = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_utf7imap,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_utf7imap,
mbfl_filt_conv_wchar_utf7imap_flush };
static struct mbfl_convert_vtbl vtbl_ascii_wchar = {
mbfl_no_encoding_ascii,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_pass,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_ascii = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_ascii,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_ascii,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_eucjp_wchar = {
mbfl_no_encoding_euc_jp,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_eucjp_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_eucjp = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_euc_jp,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_eucjp,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_sjis_wchar = {
mbfl_no_encoding_sjis,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_sjis_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_sjis = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_sjis,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_sjis,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_jis_wchar = {
mbfl_no_encoding_jis,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_jis_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_jis = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_jis,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_jis,
mbfl_filt_conv_any_jis_flush };
static struct mbfl_convert_vtbl vtbl_2022jp_wchar = {
mbfl_no_encoding_2022jp,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_jis_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_2022jp = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_2022jp,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_2022jp,
mbfl_filt_conv_any_jis_flush };
static struct mbfl_convert_vtbl vtbl_eucjpwin_wchar = {
mbfl_no_encoding_eucjp_win,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_eucjpwin_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_eucjpwin = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_eucjp_win,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_eucjpwin,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_sjiswin_wchar = {
mbfl_no_encoding_sjis_win,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_sjiswin_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_sjiswin = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_sjis_win,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_sjiswin,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_8859_1_wchar = {
mbfl_no_encoding_8859_1,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_pass,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_8859_1 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_8859_1,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_8859_1,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_8859_2_wchar = {
mbfl_no_encoding_8859_2,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_8859_2_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_8859_2 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_8859_2,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_8859_2,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_8859_3_wchar = {
mbfl_no_encoding_8859_3,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_8859_3_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_8859_3 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_8859_3,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_8859_3,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_8859_4_wchar = {
mbfl_no_encoding_8859_4,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_8859_4_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_8859_4 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_8859_4,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_8859_4,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_8859_5_wchar = {
mbfl_no_encoding_8859_5,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_8859_5_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_8859_5 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_8859_5,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_8859_5,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_8859_6_wchar = {
mbfl_no_encoding_8859_6,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_8859_6_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_8859_6 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_8859_6,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_8859_6,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_8859_7_wchar = {
mbfl_no_encoding_8859_7,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_8859_7_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_8859_7 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_8859_7,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_8859_7,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_8859_8_wchar = {
mbfl_no_encoding_8859_8,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_8859_8_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_8859_8 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_8859_8,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_8859_8,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_8859_9_wchar = {
mbfl_no_encoding_8859_9,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_8859_9_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_8859_9 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_8859_9,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_8859_9,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_8859_10_wchar = {
mbfl_no_encoding_8859_10,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_8859_10_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_8859_10 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_8859_10,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_8859_10,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_8859_13_wchar = {
mbfl_no_encoding_8859_13,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_8859_13_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_8859_13 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_8859_13,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_8859_13,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_8859_14_wchar = {
mbfl_no_encoding_8859_14,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_8859_14_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_8859_14 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_8859_14,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_8859_14,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_8859_15_wchar = {
mbfl_no_encoding_8859_15,
mbfl_no_encoding_wchar,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_8859_15_wchar,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl vtbl_wchar_8859_15 = {
mbfl_no_encoding_wchar,
mbfl_no_encoding_8859_15,
mbfl_filt_conv_common_ctor,
mbfl_filt_conv_common_dtor,
mbfl_filt_conv_wchar_8859_15,
mbfl_filt_conv_common_flush };
static struct mbfl_convert_vtbl *mbfl_convert_filter_list[] = {
&vtbl_utf8_wchar,
&vtbl_wchar_utf8,
&vtbl_eucjp_wchar,
&vtbl_wchar_eucjp,
&vtbl_sjis_wchar,
&vtbl_wchar_sjis,
&vtbl_jis_wchar,
&vtbl_wchar_jis,
&vtbl_2022jp_wchar,
&vtbl_wchar_2022jp,
&vtbl_eucjpwin_wchar,
&vtbl_wchar_eucjpwin,
&vtbl_sjiswin_wchar,
&vtbl_wchar_sjiswin,
&vtbl_ascii_wchar,
&vtbl_wchar_ascii,
&vtbl_8859_1_wchar,
&vtbl_wchar_8859_1,
&vtbl_8859_2_wchar,
&vtbl_wchar_8859_2,
&vtbl_8859_3_wchar,
&vtbl_wchar_8859_3,
&vtbl_8859_4_wchar,
&vtbl_wchar_8859_4,
&vtbl_8859_5_wchar,
&vtbl_wchar_8859_5,
&vtbl_8859_6_wchar,
&vtbl_wchar_8859_6,
&vtbl_8859_7_wchar,
&vtbl_wchar_8859_7,
&vtbl_8859_8_wchar,
&vtbl_wchar_8859_8,
&vtbl_8859_9_wchar,
&vtbl_wchar_8859_9,
&vtbl_8859_10_wchar,
&vtbl_wchar_8859_10,
&vtbl_8859_13_wchar,
&vtbl_wchar_8859_13,
&vtbl_8859_14_wchar,
&vtbl_wchar_8859_14,
&vtbl_8859_15_wchar,
&vtbl_wchar_8859_15,
&vtbl_8bit_b64,
&vtbl_b64_8bit,
&vtbl_8bit_qprint,
&vtbl_qprint_8bit,
&vtbl_8bit_7bit,
&vtbl_7bit_8bit,
&vtbl_utf7_wchar,
&vtbl_wchar_utf7,
&vtbl_utf7imap_wchar,
&vtbl_wchar_utf7imap,
&vtbl_utf16_wchar,
&vtbl_wchar_utf16,
&vtbl_utf16be_wchar,
&vtbl_wchar_utf16be,
&vtbl_utf16le_wchar,
&vtbl_wchar_utf16le,
&vtbl_utf32_wchar,
&vtbl_wchar_utf32,
&vtbl_utf32be_wchar,
&vtbl_wchar_utf32be,
&vtbl_utf32le_wchar,
&vtbl_wchar_utf32le,
&vtbl_ucs4_wchar,
&vtbl_wchar_ucs4,
&vtbl_ucs4be_wchar,
&vtbl_wchar_ucs4be,
&vtbl_ucs4le_wchar,
&vtbl_wchar_ucs4le,
&vtbl_ucs2_wchar,
&vtbl_wchar_ucs2,
&vtbl_ucs2be_wchar,
&vtbl_wchar_ucs2be,
&vtbl_ucs2le_wchar,
&vtbl_wchar_ucs2le,
&vtbl_byte4be_wchar,
&vtbl_wchar_byte4be,
&vtbl_byte4le_wchar,
&vtbl_wchar_byte4le,
&vtbl_byte2be_wchar,
&vtbl_wchar_byte2be,
&vtbl_byte2le_wchar,
&vtbl_wchar_byte2le,
&vtbl_pass,
((void *)0)
};
static struct mbfl_identify_vtbl vtbl_identify_ascii = {
mbfl_no_encoding_ascii,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_ascii };
static struct mbfl_identify_vtbl vtbl_identify_utf8 = {
mbfl_no_encoding_utf8,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_utf8 };
static struct mbfl_identify_vtbl vtbl_identify_utf7 = {
mbfl_no_encoding_utf7,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_utf7 };
static struct mbfl_identify_vtbl vtbl_identify_eucjp = {
mbfl_no_encoding_euc_jp,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_eucjp };
static struct mbfl_identify_vtbl vtbl_identify_eucjpwin = {
mbfl_no_encoding_eucjp_win,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_eucjp };
static struct mbfl_identify_vtbl vtbl_identify_sjis = {
mbfl_no_encoding_sjis,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_sjis };
static struct mbfl_identify_vtbl vtbl_identify_sjiswin = {
mbfl_no_encoding_sjis_win,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_sjiswin };
static struct mbfl_identify_vtbl vtbl_identify_jis = {
mbfl_no_encoding_jis,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_jis };
static struct mbfl_identify_vtbl vtbl_identify_2022jp = {
mbfl_no_encoding_2022jp,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_2022jp };
static struct mbfl_identify_vtbl vtbl_identify_8859_1 = {
mbfl_no_encoding_8859_1,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_true };
static struct mbfl_identify_vtbl vtbl_identify_8859_2 = {
mbfl_no_encoding_8859_2,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_true };
static struct mbfl_identify_vtbl vtbl_identify_8859_3 = {
mbfl_no_encoding_8859_3,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_true };
static struct mbfl_identify_vtbl vtbl_identify_8859_4 = {
mbfl_no_encoding_8859_4,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_true };
static struct mbfl_identify_vtbl vtbl_identify_8859_5 = {
mbfl_no_encoding_8859_5,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_true };
static struct mbfl_identify_vtbl vtbl_identify_8859_6 = {
mbfl_no_encoding_8859_6,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_true };
static struct mbfl_identify_vtbl vtbl_identify_8859_7 = {
mbfl_no_encoding_8859_7,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_true };
static struct mbfl_identify_vtbl vtbl_identify_8859_8 = {
mbfl_no_encoding_8859_8,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_true };
static struct mbfl_identify_vtbl vtbl_identify_8859_9 = {
mbfl_no_encoding_8859_9,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_true };
static struct mbfl_identify_vtbl vtbl_identify_8859_10 = {
mbfl_no_encoding_8859_10,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_true };
static struct mbfl_identify_vtbl vtbl_identify_8859_13 = {
mbfl_no_encoding_8859_13,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_true };
static struct mbfl_identify_vtbl vtbl_identify_8859_14 = {
mbfl_no_encoding_8859_14,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_true };
static struct mbfl_identify_vtbl vtbl_identify_8859_15 = {
mbfl_no_encoding_8859_15,
mbfl_filt_ident_common_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_true };
static struct mbfl_identify_vtbl vtbl_identify_false = {
mbfl_no_encoding_pass,
mbfl_filt_ident_false_ctor,
mbfl_filt_ident_common_dtor,
mbfl_filt_ident_false };
static struct mbfl_identify_vtbl *mbfl_identify_filter_list[] = {
&vtbl_identify_utf8,
&vtbl_identify_utf7,
&vtbl_identify_ascii,
&vtbl_identify_eucjp,
&vtbl_identify_sjis,
&vtbl_identify_eucjpwin,
&vtbl_identify_sjiswin,
&vtbl_identify_jis,
&vtbl_identify_2022jp,
&vtbl_identify_8859_1,
&vtbl_identify_8859_2,
&vtbl_identify_8859_3,
&vtbl_identify_8859_4,
&vtbl_identify_8859_5,
&vtbl_identify_8859_6,
&vtbl_identify_8859_7,
&vtbl_identify_8859_8,
&vtbl_identify_8859_9,
&vtbl_identify_8859_10,
&vtbl_identify_8859_13,
&vtbl_identify_8859_14,
&vtbl_identify_8859_15,
&vtbl_identify_false,
((void *)0)
};
mbfl_language *
mbfl_name2language(const char *name)
{
mbfl_language *language;
int i, j;
if (name == ((void *)0)) {
return ((void *)0);
}
i = 0;
while ((language = mbfl_language_ptr_table[i++]) != ((void *)0)){
if (strcasecmp(language->name, name) == 0) {
return language;
}
}
i = 0;
while ((language = mbfl_language_ptr_table[i++]) != ((void *)0)){
if (strcasecmp(language->short_name, name) == 0) {
return language;
}
}
i = 0;
while ((language = mbfl_language_ptr_table[i++]) != ((void *)0)) {
if (language->aliases != ((void *)0)) {
j = 0;
while ((*language->aliases)[j] != ((void *)0)) {
if (strcasecmp((*language->aliases)[j], name) == 0) {
return language;
}
j++;
}
}
}
return ((void *)0);
}
mbfl_language *
mbfl_no2language(enum mbfl_no_language no_language)
{
mbfl_language *language;
int i;
i = 0;
while ((language = mbfl_language_ptr_table[i++]) != ((void *)0)){
if (language->no_language == no_language) {
return language;
}
}
return ((void *)0);
}
enum mbfl_no_language
mbfl_name2no_language(const char *name)
{
mbfl_language *language;
language = mbfl_name2language(name);
if (language == ((void *)0)) {
return mbfl_no_language_invalid;
} else {
return language->no_language;
}
}
const char *
mbfl_no_language2name(enum mbfl_no_language no_language)
{
mbfl_language *language;
language = mbfl_no2language(no_language);
if (language == ((void *)0)) {
return "";
} else {
return language->name;
}
}
mbfl_encoding *
mbfl_name2encoding(const char *name)
{
mbfl_encoding *encoding;
int i, j;
if (name == ((void *)0)) {
return ((void *)0);
}
i = 0;
while ((encoding = mbfl_encoding_ptr_list[i++]) != ((void *)0)){
if (strcasecmp(encoding->name, name) == 0) {
return encoding;
}
}
i = 0;
while ((encoding = mbfl_encoding_ptr_list[i++]) != ((void *)0)) {
if (encoding->mime_name != ((void *)0)) {
if (strcasecmp(encoding->mime_name, name) == 0) {
return encoding;
}
}
}
i = 0;
while ((encoding = mbfl_encoding_ptr_list[i++]) != ((void *)0)) {
if (encoding->aliases != ((void *)0)) {
j = 0;
while ((*encoding->aliases)[j] != ((void *)0)) {
if (strcasecmp((*encoding->aliases)[j], name) == 0) {
return encoding;
}
j++;
}
}
}
return ((void *)0);
}
mbfl_encoding *
mbfl_no2encoding(enum mbfl_no_encoding no_encoding)
{
mbfl_encoding *encoding;
int i;
i = 0;
while ((encoding = mbfl_encoding_ptr_list[i++]) != ((void *)0)){
if (encoding->no_encoding == no_encoding) {
return encoding;
}
}
return ((void *)0);
}
enum mbfl_no_encoding
mbfl_name2no_encoding(const char *name)
{
mbfl_encoding *encoding;
encoding = mbfl_name2encoding(name);
if (encoding == ((void *)0)) {
return mbfl_no_encoding_invalid;
} else {
return encoding->no_encoding;
}
}
const char *
mbfl_no_encoding2name(enum mbfl_no_encoding no_encoding)
{
mbfl_encoding *encoding;
encoding = mbfl_no2encoding(no_encoding);
if (encoding == ((void *)0)) {
return "";
} else {
return encoding->name;
}
}
const char *
mbfl_no2preferred_mime_name(enum mbfl_no_encoding no_encoding)
{
mbfl_encoding *encoding;
encoding = mbfl_no2encoding(no_encoding);
if (encoding != ((void *)0) && encoding->mime_name != ((void *)0) && encoding->mime_name[0] != '\0') {
return encoding->mime_name;
} else {
return ((void *)0);
}
}
int
mbfl_is_support_encoding(const char *name)
{
mbfl_encoding *encoding;
encoding = mbfl_name2encoding(name);
if (encoding == ((void *)0)) {
return 0;
} else {
return 1;
}
}
void
mbfl_memory_device_init(mbfl_memory_device *device, int initsz, int allocsz)
{
if (device) {
device->length = 0;
device->buffer = (unsigned char *)0;
if (initsz > 0) {
device->buffer = (unsigned char *)_emalloc((initsz*sizeof(unsigned char)) );
if (device->buffer != ((void *)0)) {
device->length = initsz;
}
}
device->pos= 0;
if (allocsz > 64) {
device->allocsz = allocsz;
} else {
device->allocsz = 64;
}
}
}
void
mbfl_memory_device_realloc(mbfl_memory_device *device, int initsz, int allocsz)
{
unsigned char *tmp;
if (device) {
if (initsz > device->length) {
tmp = (unsigned char *)_erealloc(((void *)device->buffer), (initsz*sizeof(unsigned char)),0 );
if (tmp != ((void *)0)) {
device->buffer = tmp;
device->length = initsz;
}
}
if (allocsz > 64) {
device->allocsz = allocsz;
} else {
device->allocsz = 64;
}
}
}
void
mbfl_memory_device_clear(mbfl_memory_device *device)
{
if (device) {
if (device->buffer) {
_efree((device->buffer) );
}
device->buffer = (unsigned char *)0;
device->length = 0;
device->pos = 0;
}
}
void
mbfl_memory_device_reset(mbfl_memory_device *device)
{
if (device) {
device->pos = 0;
}
}
void
mbfl_memory_device_unput(mbfl_memory_device *device)
{
if (device->pos > 0) {
device->pos--;
}
}
mbfl_string *
mbfl_memory_device_result(mbfl_memory_device *device, mbfl_string *result)
{
if (device && result) {
result->len = device->pos;
mbfl_memory_device_output4('\0', device);
result->val = device->buffer;
device->buffer = (unsigned char *)0;
device->length = 0;
device->pos= 0;
if (result->val == ((void *)0)) {
result->len = 0;
result = ((void *)0);
}
} else {
result = ((void *)0);
}
return result;
}
int
mbfl_memory_device_output(int c, void *data)
{
mbfl_memory_device *device = (mbfl_memory_device *)data;
if (device->pos >= device->length) {
int newlen;
unsigned char *tmp;
newlen = device->length + device->allocsz;
tmp = (unsigned char *)_erealloc(((void *)device->buffer), (newlen*sizeof(unsigned char)),0 );
if (tmp == ((void *)0)) {
return -1;
}
device->length = newlen;
device->buffer = tmp;
}
device->buffer[device->pos++] = (unsigned char)c;
return c;
}
int
mbfl_memory_device_output2(int c, void *data)
{
mbfl_memory_device *device = (mbfl_memory_device *)data;
if ((device->pos + 2) >= device->length) {
int newlen;
unsigned char *tmp;
newlen = device->length + device->allocsz;
tmp = (unsigned char *)_erealloc(((void *)device->buffer), (newlen*sizeof(unsigned char)),0 );
if (tmp == ((void *)0)) {
return -1;
}
device->length = newlen;
device->buffer = tmp;
}
device->buffer[device->pos++] = (unsigned char)((c >> 8) & 0xff);
device->buffer[device->pos++] = (unsigned char)(c & 0xff);
return c;
}
int
mbfl_memory_device_output4(int c, void* data)
{
mbfl_memory_device *device = (mbfl_memory_device *)data;
if ((device->pos + 4) >= device->length) {
int newlen;
unsigned char *tmp;
newlen = device->length + device->allocsz;
tmp = (unsigned char *)_erealloc(((void *)device->buffer), (newlen*sizeof(unsigned char)),0 );
if (tmp == ((void *)0)) {
return -1;
}
device->length = newlen;
device->buffer = tmp;
}
device->buffer[device->pos++] = (unsigned char)((c >> 24) & 0xff);
device->buffer[device->pos++] = (unsigned char)((c >> 16) & 0xff);
device->buffer[device->pos++] = (unsigned char)((c >> 8) & 0xff);
device->buffer[device->pos++] = (unsigned char)(c & 0xff);
return c;
}
int
mbfl_memory_device_strcat(mbfl_memory_device *device, const char *psrc)
{
int len;
unsigned char *w;
const unsigned char *p;
len = 0;
p = psrc;
while (*p) {
p++;
len++;
}
if ((device->pos + len) >= device->length) {
int newlen = device->length + (len + 64)*sizeof(unsigned char);
unsigned char *tmp = (unsigned char *)_erealloc(((void *)device->buffer), (newlen*sizeof(unsigned char)),0 );
if (tmp == ((void *)0)) {
return -1;
}
device->length = newlen;
device->buffer = tmp;
}
p = psrc;
w = &device->buffer[device->pos];
device->pos += len;
while (len > 0) {
*w++ = *p++;
len--;
}
return len;
}
int
mbfl_memory_device_strncat(mbfl_memory_device *device, const char *psrc, int len)
{
unsigned char *w;
if ((device->pos + len) >= device->length) {
int newlen = device->length + len + 64;
unsigned char *tmp = (unsigned char *)_erealloc(((void *)device->buffer), (newlen*sizeof(unsigned char)),0 );
if (tmp == ((void *)0)) {
return -1;
}
device->length = newlen;
device->buffer = tmp;
}
w = &device->buffer[device->pos];
device->pos += len;
while (len > 0) {
*w++ = *psrc++;
len--;
}
return len;
}
int
mbfl_memory_device_devcat(mbfl_memory_device *dest, mbfl_memory_device *src)
{
int n;
unsigned char *p, *w;
if ((dest->pos + src->pos) >= dest->length) {
int newlen = dest->length + src->pos + 64;
unsigned char *tmp = (unsigned char *)_erealloc(((void *)dest->buffer), (newlen*sizeof(unsigned char)),0 );
if (tmp == ((void *)0)) {
return -1;
}
dest->length = newlen;
dest->buffer = tmp;
}
p = src->buffer;
w = &dest->buffer[dest->pos];
n = src->pos;
dest->pos += n;
while (n > 0) {
*w++ = *p++;
n--;
}
return n;
}
void
mbfl_wchar_device_init(mbfl_wchar_device *device)
{
if (device) {
device->buffer = (unsigned int *)0;
device->length = 0;
device->pos= 0;
device->allocsz = 64;
}
}
void
mbfl_wchar_device_clear(mbfl_wchar_device *device)
{
if (device) {
if (device->buffer) {
_efree((device->buffer) );
}
device->buffer = (unsigned int*)0;
device->length = 0;
device->pos = 0;
}
}
int
mbfl_wchar_device_output(int c, void *data)
{
mbfl_wchar_device *device = (mbfl_wchar_device *)data;
if (device->pos >= device->length) {
int newlen;
unsigned int *tmp;
newlen = device->length + device->allocsz;
tmp = (unsigned int *)_erealloc(((void *)device->buffer), (newlen*sizeof(int)),0 );
if (tmp == ((void *)0)) {
return -1;
}
device->length = newlen;
device->buffer = tmp;
}
device->buffer[device->pos++] = c;
return c;
}
void
mbfl_string_init(mbfl_string *string)
{
if (string) {
string->no_language = mbfl_no_language_uni;
string->no_encoding = mbfl_no_encoding_pass;
string->val = (unsigned char*)0;
string->len = 0;
}
}
void
mbfl_string_init_set(mbfl_string *string, enum mbfl_no_language no_language, enum mbfl_no_encoding no_encoding)
{
if (string) {
string->no_language = no_language;
string->no_encoding = no_encoding;
string->val = (unsigned char*)0;
string->len = 0;
}
}
void
mbfl_string_clear(mbfl_string *string)
{
if (string) {
if (string->val != (unsigned char*)0) {
_efree((string->val) );
}
string->val = (unsigned char*)0;
string->len = 0;
}
}
# 2322 "mbfilter.c"
static void
mbfl_filt_conv_common_ctor(mbfl_convert_filter *filter)
{
filter->status = 0;
filter->cache = 0;
}
static int
mbfl_filt_conv_common_flush(mbfl_convert_filter *filter)
{
filter->status = 0;
filter->cache = 0;
return 0;
}
static void
mbfl_filt_conv_common_dtor(mbfl_convert_filter *filter)
{
filter->status = 0;
filter->cache = 0;
}
static int
mbfl_filt_conv_pass(int c, mbfl_convert_filter *filter)
{
return (*filter->output_function)(c, filter->data);
}
static int
mbfl_filt_conv_any_7bit(int c, mbfl_convert_filter *filter)
{
if (c >= 0 && c < 0x80) {
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
}
return c;
}
static int
mbfl_filt_conv_byte2be_wchar(int c, mbfl_convert_filter *filter)
{
int n;
if (filter->status == 0) {
filter->status = 1;
n = (c & 0xff) << 8;
filter->cache = n;
} else {
filter->status = 0;
n = (c & 0xff) | filter->cache;
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
}
return c;
}
static int
mbfl_filt_conv_wchar_byte2be(int c, mbfl_convert_filter *filter)
{
do { if (((*filter->output_function)((c >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(c & 0xff, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_byte2le_wchar(int c, mbfl_convert_filter *filter)
{
int n;
if (filter->status == 0) {
filter->status = 1;
n = c & 0xff;
filter->cache = n;
} else {
filter->status = 0;
n = ((c & 0xff) << 8) | filter->cache;
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
}
return c;
}
static int
mbfl_filt_conv_wchar_byte2le(int c, mbfl_convert_filter *filter)
{
do { if (((*filter->output_function)(c & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_byte4be_wchar(int c, mbfl_convert_filter *filter)
{
int n;
if (filter->status == 0) {
filter->status = 1;
n = (c & 0xff) << 24;
filter->cache = n;
} else if (filter->status == 1) {
filter->status = 2;
n = (c & 0xff) << 16;
filter->cache |= n;
} else if (filter->status == 2) {
filter->status = 3;
n = (c & 0xff) << 8;
filter->cache |= n;
} else {
filter->status = 0;
n = (c & 0xff) | filter->cache;
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
}
return c;
}
static int
mbfl_filt_conv_wchar_byte4be(int c, mbfl_convert_filter *filter)
{
do { if (((*filter->output_function)((c >> 24) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c >> 16) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(c & 0xff, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_byte4le_wchar(int c, mbfl_convert_filter *filter)
{
int n;
if (filter->status == 0) {
filter->status = 1;
n = (c & 0xff);
filter->cache = n;
} else if (filter->status == 1) {
filter->status = 2;
n = (c & 0xff) << 8;
filter->cache |= n;
} else if (filter->status == 2) {
filter->status = 3;
n = (c & 0xff) << 16;
filter->cache |= n;
} else {
filter->status = 0;
n = ((c & 0xff) << 24) | filter->cache;
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
}
return c;
}
static int
mbfl_filt_conv_wchar_byte4le(int c, mbfl_convert_filter *filter)
{
do { if (((*filter->output_function)(c & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c >> 16) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c >> 24) & 0xff, filter->data)) < 0) return (-1); } while (0);
return c;
}
static const unsigned char mbfl_base64_table[] =
{
0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,
0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,
0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,
0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2b,0x2f,0x00
};
static int
mbfl_filt_conv_base64enc(int c, mbfl_convert_filter *filter)
{
int n;
n = (filter->status & 0xff);
if (n == 0) {
filter->status++;
filter->cache = (c & 0xff) << 16;
} else if (n == 1) {
filter->status++;
filter->cache |= (c & 0xff) << 8;
} else {
filter->status &= ~0xff;
if ((filter->status & 0x1000000) == 0) {
n = (filter->status & 0xff00) >> 8;
if (n > 72) {
do { if (((*filter->output_function)(0x0d, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x0a, filter->data)) < 0) return (-1); } while (0);
filter->status &= ~0xff00;
}
filter->status += 0x400;
}
n = filter->cache | (c & 0xff);
do { if (((*filter->output_function)(mbfl_base64_table[(n >> 18) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[(n >> 12) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[(n >> 6) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[n & 0x3f], filter->data)) < 0) return (-1); } while (0);
}
return c;
}
static int
mbfl_filt_conv_base64enc_flush(mbfl_convert_filter *filter)
{
int status, cache, len;
status = filter->status & 0xff;
cache = filter->cache;
len = (filter->status & 0xff00) >> 8;
filter->status &= ~0xffff;
filter->cache = 0;
if (status >= 1) {
if ((filter->status & 0x1000000) == 0) {
if (len > 72){
do { if (((*filter->output_function)(0x0d, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x0a, filter->data)) < 0) return (-1); } while (0);
}
}
do { if (((*filter->output_function)(mbfl_base64_table[(cache >> 18) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[(cache >> 12) & 0x3f], filter->data)) < 0) return (-1); } while (0);
if (status == 1) {
do { if (((*filter->output_function)(0x3d, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x3d, filter->data)) < 0) return (-1); } while (0);
} else {
do { if (((*filter->output_function)(mbfl_base64_table[(cache >> 6) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x3d, filter->data)) < 0) return (-1); } while (0);
}
}
return 0;
}
static int
mbfl_filt_conv_base64dec(int c, mbfl_convert_filter *filter)
{
int n;
if (c == 0x0d || c == 0x0a || c == 0x20 || c == 0x09 || c == 0x3d) {
return c;
}
n = 0;
if (c >= 0x41 && c <= 0x5a) {
n = c - 65;
} else if (c >= 0x61 && c <= 0x7a) {
n = c - 71;
} else if (c >= 0x30 && c <= 0x39) {
n = c + 4;
} else if (c == 0x2b) {
n = 62;
} else if (c == 0x2f) {
n = 63;
}
n &= 0x3f;
switch (filter->status) {
case 0:
filter->status = 1;
filter->cache = n << 18;
break;
case 1:
filter->status = 2;
filter->cache |= n << 12;
break;
case 2:
filter->status = 3;
filter->cache |= n << 6;
break;
default:
filter->status = 0;
n |= filter->cache;
do { if (((*filter->output_function)((n >> 16) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((n >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(n & 0xff, filter->data)) < 0) return (-1); } while (0);
break;
}
return c;
}
static int
mbfl_filt_conv_base64dec_flush(mbfl_convert_filter *filter)
{
int status, cache;
status = filter->status;
cache = filter->cache;
filter->status = 0;
filter->cache = 0;
if (status >= 2) {
do { if (((*filter->output_function)((cache >> 16) & 0xff, filter->data)) < 0) return (-1); } while (0);
if (status >= 3) {
do { if (((*filter->output_function)((cache >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
}
}
return 0;
}
static int
mbfl_filt_conv_qprintenc(int c, mbfl_convert_filter *filter)
{
int s, n;
switch (filter->status & 0xff) {
case 0:
filter->cache = c;
filter->status++;
break;
default:
s = filter->cache;
filter->cache = c;
n = (filter->status & 0xff00) >> 8;
if (s == 0) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
filter->status &= ~0xff00;
break;
}
if ((filter->status & 0x1000000) == 0) {
if (s == 0x0a || (s == 0x0d && c != 0x0a)) {
do { if (((*filter->output_function)(0x0d, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x0a, filter->data)) < 0) return (-1); } while (0);
filter->status &= ~0xff00;
break;
} else if (s == 0x0d) {
break;
}
}
if ((filter->status & 0x1000000) == 0 && n >= 72) {
do { if (((*filter->output_function)(0x3d, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x0d, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x0a, filter->data)) < 0) return (-1); } while (0);
filter->status &= ~0xff00;
}
if (s <= 0 || s >= 0x80 || s == 0x3d
|| ((filter->status & 0x1000000) != 0 &&
(mbfl_charprop_table[s] & 0x10) != 0)) {
do { if (((*filter->output_function)(0x3d, filter->data)) < 0) return (-1); } while (0);
n = (s >> 4) & 0xf;
if (n < 10) {
n += 48;
} else {
n += 55;
}
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
n = s & 0xf;
if (n < 10) {
n += 48;
} else {
n += 55;
}
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
if ((filter->status & 0x1000000) == 0) {
filter->status += 0x300;
}
} else {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
if ((filter->status & 0x1000000) == 0) {
filter->status += 0x100;
}
}
break;
}
return c;
}
static int
mbfl_filt_conv_qprintenc_flush(mbfl_convert_filter *filter)
{
(*filter->filter_function)('\0', filter);
filter->status &= ~0xffff;
filter->cache = 0;
return 0;
}
static int
mbfl_filt_conv_qprintdec(int c, mbfl_convert_filter *filter)
{
int n;
switch (filter->status) {
case 1:
if ((c >= 0x30 && c <= 0x39) || (c >= 0x41 && c <= 0x46)) {
filter->cache = c;
filter->status = 2;
} else if (c == 0x0d) {
filter->status = 3;
} else if (c == 0x0a) {
filter->status = 0;
} else {
do { if (((*filter->output_function)(0x3d, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
filter->status = 0;
}
break;
case 2:
n = filter->cache;
if (n >= 0x30 && n <= 0x39) {
n -= 48;
} else {
n -= 55;
}
n <<= 4;
if (c >= 0x30 && c <= 0x39) {
n += (c - 48);
} else if (c >= 0x41 && c <= 0x46) {
n += (c - 55);
} else {
do { if (((*filter->output_function)(0x3d, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(filter->cache, filter->data)) < 0) return (-1); } while (0);
n = c;
}
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
filter->status = 0;
break;
case 3:
if (c != 0x0a) {
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
}
filter->status = 0;
break;
default:
if (c == 0x3d) {
filter->status = 1;
} else {
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
}
break;
}
return c;
}
static int
mbfl_filt_conv_qprintdec_flush(mbfl_convert_filter *filter)
{
int status, cache;
status = filter->status;
cache = filter->cache;
filter->status = 0;
filter->cache = 0;
if (status == 1) {
do { if (((*filter->output_function)(0x3d, filter->data)) < 0) return (-1); } while (0);
} else if (status == 2) {
do { if (((*filter->output_function)(0x3d, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(cache, filter->data)) < 0) return (-1); } while (0);
}
return 0;
}
static int
mbfl_filt_conv_ucs4_wchar(int c, mbfl_convert_filter *filter)
{
int n, endian;
endian = filter->status & 0xff00;
switch (filter->status & 0xff) {
case 0:
if (endian) {
n = c & 0xff;
} else {
n = (c & 0xff) << 24;
}
filter->cache = n;
filter->status++;
break;
case 1:
if (endian) {
n = (c & 0xff) << 8;
} else {
n = (c & 0xff) << 16;
}
filter->cache |= n;
filter->status++;
break;
case 2:
if (endian) {
n = (c & 0xff) << 16;
} else {
n = (c & 0xff) << 8;
}
filter->cache |= n;
filter->status++;
break;
default:
if (endian) {
n = (c & 0xff) << 24;
} else {
n = c & 0xff;
}
n |= filter->cache;
if ((n & 0xffff) == 0 && ((n >> 16) & 0xffff) == 0xfffe) {
if (endian) {
filter->status = 0;
} else {
filter->status = 0x100;
}
do { if (((*filter->output_function)(0xfeff, filter->data)) < 0) return (-1); } while (0);
} else {
filter->status &= ~0xff;
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
}
break;
}
return c;
}
static int
mbfl_filt_conv_wchar_ucs4be(int c, mbfl_convert_filter *filter)
{
if (c >= 0 && c < 0x70000000) {
do { if (((*filter->output_function)((c >> 24) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c >> 16) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(c & 0xff, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_wchar_ucs4le(int c, mbfl_convert_filter *filter)
{
if (c >= 0 && c < 0x70000000) {
do { if (((*filter->output_function)(c & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c >> 16) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c >> 24) & 0xff, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_ucs2_wchar(int c, mbfl_convert_filter *filter)
{
int n, endian;
endian = filter->status & 0xff00;
switch (filter->status & 0xff) {
case 0:
if (endian) {
n = c & 0xff;
} else {
n = (c & 0xff) << 8;
}
filter->cache = n;
filter->status++;
break;
default:
if (endian) {
n = (c & 0xff) << 8;
} else {
n = c & 0xff;
}
n |= filter->cache;
if (n == 0xfffe) {
if (endian) {
filter->status = 0;
} else {
filter->status = 0x100;
}
do { if (((*filter->output_function)(0xfeff, filter->data)) < 0) return (-1); } while (0);
} else {
filter->status &= ~0xff;
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
}
break;
}
return c;
}
static int
mbfl_filt_conv_wchar_ucs2be(int c, mbfl_convert_filter *filter)
{
if (c >= 0 && c < 0x00010000) {
do { if (((*filter->output_function)((c >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(c & 0xff, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_wchar_ucs2le(int c, mbfl_convert_filter *filter)
{
if (c >= 0 && c < 0x00010000) {
do { if (((*filter->output_function)(c & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_utf16_wchar(int c, mbfl_convert_filter *filter)
{
int n, endian;
endian = filter->status & 0xff00;
switch (filter->status & 0xff) {
case 0:
if (endian) {
n = c & 0xff;
} else {
n = (c & 0xff) << 8;
}
filter->cache |= n;
filter->status++;
break;
default:
if (endian) {
n = (c & 0xff) << 8;
} else {
n = c & 0xff;
}
n |= filter->cache & 0xffff;
filter->status &= ~0xff;
if (n == 0xfffe) {
if (endian) {
filter->status = 0;
} else {
filter->status = 0x100;
}
do { if (((*filter->output_function)(0xfeff, filter->data)) < 0) return (-1); } while (0);
} else if (n >= 0xd800 && n < 0xdc00) {
filter->cache = ((n & 0x3ff) << 16) + 0x400000;
} else if (n >= 0xdc00 && n < 0xe000) {
n &= 0x3ff;
n |= (filter->cache & 0xfff0000) >> 6;
filter->cache = 0;
if (n >= 0x00010000 && n < 0x00200000) {
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
} else {
n &= 0xffffff;
n |= 0x78000000;
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
}
} else {
filter->cache = 0;
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
}
break;
}
return c;
}
static int
mbfl_filt_conv_utf16be_wchar(int c, mbfl_convert_filter *filter)
{
int n;
switch (filter->status) {
case 0:
filter->status = 1;
n = (c & 0xff) << 8;
filter->cache |= n;
break;
default:
filter->status = 0;
n = (filter->cache & 0xff00) | (c & 0xff);
if (n >= 0xd800 && n < 0xdc00) {
filter->cache = ((n & 0x3ff) << 16) + 0x400000;
} else if (n >= 0xdc00 && n < 0xe000) {
n &= 0x3ff;
n |= (filter->cache & 0xfff0000) >> 6;
filter->cache = 0;
if (n >= 0x00010000 && n < 0x00200000) {
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
} else {
n &= 0xffffff;
n |= 0x78000000;
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
}
} else {
filter->cache = 0;
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
}
break;
}
return c;
}
static int
mbfl_filt_conv_wchar_utf16be(int c, mbfl_convert_filter *filter)
{
int n;
if (c >= 0 && c < 0x00010000) {
do { if (((*filter->output_function)((c >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(c & 0xff, filter->data)) < 0) return (-1); } while (0);
} else if (c >= 0x00010000 && c < 0x00200000) {
n = ((c >> 10) - 0x40) | 0xd800;
do { if (((*filter->output_function)((n >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(n & 0xff, filter->data)) < 0) return (-1); } while (0);
n = (c & 0x3ff) | 0xdc00;
do { if (((*filter->output_function)((n >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(n & 0xff, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_utf16le_wchar(int c, mbfl_convert_filter *filter)
{
int n;
switch (filter->status) {
case 0:
filter->status = 1;
n = c & 0xff;
filter->cache |= n;
break;
default:
filter->status = 0;
n = (filter->cache & 0xff) | ((c & 0xff) << 8);
if (n >= 0xd800 && n < 0xdc00) {
filter->cache = ((n & 0x3ff) << 16) + 0x400000;
} else if (n >= 0xdc00 && n < 0xe000) {
n &= 0x3ff;
n |= (filter->cache & 0xfff0000) >> 6;
filter->cache = 0;
if (n >= 0x00010000 && n < 0x00200000) {
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
} else {
n &= 0xffffff;
n |= 0x78000000;
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
}
} else {
filter->cache = 0;
do { if (((*filter->output_function)(n, filter->data)) < 0) return (-1); } while (0);
}
break;
}
return c;
}
static int
mbfl_filt_conv_wchar_utf16le(int c, mbfl_convert_filter *filter)
{
int n;
if (c >= 0 && c < 0x00010000) {
do { if (((*filter->output_function)(c & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
} else if (c >= 0x00010000 && c < 0x00200000) {
n = ((c >> 10) - 0x40) | 0xd800;
do { if (((*filter->output_function)(n & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((n >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
n = (c & 0x3ff) | 0xdc00;
do { if (((*filter->output_function)(n & 0xff, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((n >> 8) & 0xff, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_utf8_wchar(int c, mbfl_convert_filter *filter)
{
int s;
if (c < 0x80) {
if (c >= 0) {
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
}
filter->status = 0;
} else if (c < 0xc0) {
switch (filter->status & 0xff) {
case 0x10:
case 0x21:
case 0x32:
case 0x43:
case 0x54:
filter->status = 0;
s = filter->cache | (c & 0x3f);
if (s >= 0x80) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
break;
case 0x20:
case 0x31:
case 0x42:
case 0x53:
filter->cache |= ((c & 0x3f) << 6);
filter->status++;
break;
case 0x30:
case 0x41:
case 0x52:
filter->cache |= ((c & 0x3f) << 12);
filter->status++;
break;
case 0x40:
case 0x51:
filter->cache |= ((c & 0x3f) << 18);
filter->status++;
break;
case 0x50:
filter->cache |= ((c & 0x3f) << 24);
filter->status++;
break;
default:
filter->status = 0;
break;
}
} else if (c < 0xe0) {
filter->status = 0x10;
filter->cache = (c & 0x1f) << 6;
} else if (c < 0xf0) {
filter->status = 0x20;
filter->cache = (c & 0xf) << 12;
} else if (c < 0xf8) {
filter->status = 0x30;
filter->cache = (c & 0x7) << 18;
} else if (c < 0xfc) {
filter->status = 0x40;
filter->cache = (c & 0x3) << 24;
} else if (c < 0xfe) {
filter->status = 0x50;
filter->cache = (c & 0x1) << 30;
} else {
filter->status = 0;
filter->cache = 0;
}
return c;
}
static int
mbfl_filt_conv_wchar_utf8(int c, mbfl_convert_filter *filter)
{
if (c >= 0 && c < 0x70000000) {
if (c < 0x80) {
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
} else if (c < 0x800) {
do { if (((*filter->output_function)(((c >> 6) & 0x1f) | 0xc0, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
} else if (c < 0x10000) {
do { if (((*filter->output_function)(((c >> 12) & 0x0f) | 0xe0, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(((c >> 6) & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
} else if (c < 0x200000) {
do { if (((*filter->output_function)(((c >> 18) & 0x07) | 0xf0, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(((c >> 12) & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(((c >> 6) & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
} else if (c < 0x4000000) {
do { if (((*filter->output_function)(((c >> 24) & 0x03) | 0xf8, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(((c >> 18) & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(((c >> 12) & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(((c >> 6) & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
} else {
do { if (((*filter->output_function)(((c >> 30) & 0x01) | 0xfc, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(((c >> 24) & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(((c >> 18) & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(((c >> 12) & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(((c >> 6) & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)((c & 0x3f) | 0x80, filter->data)) < 0) return (-1); } while (0);
}
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_utf7_wchar(int c, mbfl_convert_filter *filter)
{
int s, n;
n = -1;
if (filter->status != 0) {
if (c >= 0x41 && c <= 0x5a) {
n = c - 65;
} else if (c >= 0x61 && c <= 0x7a) {
n = c - 71;
} else if (c >= 0x30 && c <= 0x39) {
n = c + 4;
} else if (c == 0x2b) {
n = 62;
} else if (c == 0x2f) {
n = 63;
}
if (n < 0 || n > 63) {
if (c == 0x2d) {
if (filter->status == 1) {
do { if (((*filter->output_function)(0x2b, filter->data)) < 0) return (-1); } while (0);
}
} else if (c >= 0 && c < 0x80) {
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
} else {
s = c & 0xffffff;
s |= 0x78000000;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
filter->cache = 0;
filter->status = 0;
return c;
}
}
switch (filter->status) {
case 0:
if (c == 0x2b) {
filter->status = 1;
} else if (c >= 0 && c < 0x80) {
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
} else {
s = c & 0xffffff;
s |= 0x78000000;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
break;
case 1:
case 2:
filter->cache |= n << 10;
filter->status = 3;
break;
case 3:
filter->cache |= n << 4;
filter->status = 4;
break;
case 4:
s = ((n >> 2) & 0xf) | (filter->cache & 0xffff);
n = (n & 0x3) << 14;
filter->status = 5;
if (s >= 0xd800 && s < 0xdc00) {
s = (((s & 0x3ff) << 16) + 0x400000) | n;
filter->cache = s;
} else if (s >= 0xdc00 && s < 0xe000) {
s &= 0x3ff;
s |= (filter->cache & 0xfff0000) >> 6;
filter->cache = n;
if (s >= 0x00010000 && s < 0x00200000) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
s &= 0xffffff;
s |= 0x78000000;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
} else {
filter->cache = n;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
break;
case 5:
filter->cache |= n << 8;
filter->status = 6;
break;
case 6:
filter->cache |= n << 2;
filter->status = 7;
break;
case 7:
s = ((n >> 4) & 0x3) | (filter->cache & 0xffff);
n = (n & 0xf) << 12;
filter->status = 8;
if (s >= 0xd800 && s < 0xdc00) {
s = (((s & 0x3ff) << 16) + 0x400000) | n;
filter->cache = s;
} else if (s >= 0xdc00 && s < 0xe000) {
s &= 0x3ff;
s |= (filter->cache & 0xfff0000) >> 6;
filter->cache = n;
if (s >= 0x00010000 && s < 0x00200000) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
s &= 0xffffff;
s |= 0x78000000;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
} else {
filter->cache = n;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
break;
case 8:
filter->cache |= n << 6;
filter->status = 9;
break;
case 9:
s = n | (filter->cache & 0xffff);
filter->status = 2;
if (s >= 0xd800 && s < 0xdc00) {
s = (((s & 0x3ff) << 16) + 0x400000);
filter->cache = s;
} else if (s >= 0xdc00 && s < 0xe000) {
s &= 0x3ff;
s |= (filter->cache & 0xfff0000) >> 6;
filter->cache = 0;
if (s >= 0x00010000 && s < 0x00200000) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
s &= 0xffffff;
s |= 0x78000000;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
} else {
filter->cache = 0;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
break;
default:
filter->status = 0;
break;
}
return c;
}
static int
mbfl_filt_conv_wchar_utf7(int c, mbfl_convert_filter *filter)
{
int s, n;
n = 0;
if (c >= 0 && c < 0x80) {
if (c >= 0x41 && c <= 0x5a) {
n = 1;
} else if (c >= 0x61 && c <= 0x7a) {
n = 1;
} else if (c >= 0x30 && c <= 0x39) {
n = 1;
} else if (c == '\0') {
n = 1;
} else if (c == 0x2f) {
n = 1;
} else if (c == 0x2d) {
n = 1;
} else if (c == 0x20) {
n = 2;
} else if (c == 0x09) {
n = 2;
} else if (c == 0x0d) {
n = 2;
} else if (c == 0x0a) {
n = 2;
} else if (c == 0x27) {
n = 2;
} else if (c == 0x28) {
n = 2;
} else if (c == 0x29) {
n = 2;
} else if (c == 0x2c) {
n = 2;
} else if (c == 0x2e) {
n = 2;
} else if (c == 0x3a) {
n = 2;
} else if (c == 0x3f) {
n = 2;
}
} else if (c >= 0 && c < 0x00010000) {
;
} else if (c >= 0x00010000 && c < 0x00200000) {
s = ((c >> 10) - 0x40) | 0xd800;
do { if (((*filter->filter_function)(s, filter)) < 0) return (-1); } while (0);
s = (c & 0x3ff) | 0xdc00;
do { if (((*filter->filter_function)(s, filter)) < 0) return (-1); } while (0);
return c;
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
return c;
}
switch (filter->status) {
case 0:
if (n != 0) {
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
} else {
do { if (((*filter->output_function)(0x2b, filter->data)) < 0) return (-1); } while (0);
filter->status++;
filter->cache = c;
}
break;
case 1:
s = filter->cache;
do { if (((*filter->output_function)(mbfl_base64_table[(s >> 10) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[(s >> 4) & 0x3f], filter->data)) < 0) return (-1); } while (0);
if (n != 0) {
do { if (((*filter->output_function)(mbfl_base64_table[(s << 2) & 0x3c], filter->data)) < 0) return (-1); } while (0);
if (n == 1) {
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
}
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
filter->status = 0;
} else {
filter->status++;
filter->cache = ((s & 0xf) << 16) | c;
}
break;
case 2:
s = filter->cache;
do { if (((*filter->output_function)(mbfl_base64_table[(s >> 14) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[(s >> 8) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[(s >> 2) & 0x3f], filter->data)) < 0) return (-1); } while (0);
if (n != 0) {
do { if (((*filter->output_function)(mbfl_base64_table[(s << 4) & 0x30], filter->data)) < 0) return (-1); } while (0);
if (n == 1) {
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
}
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
filter->status = 0;
} else {
filter->status++;
filter->cache = ((s & 0x3) << 16) | c;
}
break;
case 3:
s = filter->cache;
do { if (((*filter->output_function)(mbfl_base64_table[(s >> 12) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[(s >> 6) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[s & 0x3f], filter->data)) < 0) return (-1); } while (0);
if (n != 0) {
if (n == 1) {
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
}
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
filter->status = 0;
} else {
filter->status = 1;
filter->cache = c;
}
break;
default:
filter->status = 0;
break;
}
return c;
}
static int
mbfl_filt_conv_wchar_utf7_flush(mbfl_convert_filter *filter)
{
int status, cache;
status = filter->status;
cache = filter->cache;
filter->status = 0;
filter->cache = 0;
switch (status) {
case 1:
do { if (((*filter->output_function)(mbfl_base64_table[(cache >> 10) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[(cache >> 4) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[(cache << 2) & 0x3c], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
break;
case 2:
do { if (((*filter->output_function)(mbfl_base64_table[(cache >> 14) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[(cache >> 8) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[(cache >> 2) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[(cache << 4) & 0x30], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
break;
case 3:
do { if (((*filter->output_function)(mbfl_base64_table[(cache >> 12) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[(cache >> 6) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_base64_table[cache & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
break;
}
return 0;
}
static int
mbfl_filt_conv_utf7imap_wchar(int c, mbfl_convert_filter *filter)
{
int s, n;
n = -1;
if (filter->status != 0) {
if (c >= 0x41 && c <= 0x5a) {
n = c - 65;
} else if (c >= 0x61 && c <= 0x7a) {
n = c - 71;
} else if (c >= 0x30 && c <= 0x39) {
n = c + 4;
} else if (c == 0x2b) {
n = 62;
} else if (c == 0x2c) {
n = 63;
}
if (n < 0 || n > 63) {
if (c == 0x2d) {
if (filter->status == 1) {
do { if (((*filter->output_function)(0x26, filter->data)) < 0) return (-1); } while (0);
}
} else if (c >= 0 && c < 0x80) {
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
} else {
s = c & 0xffffff;
s |= 0x78000000;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
filter->cache = 0;
filter->status = 0;
return c;
}
}
switch (filter->status) {
case 0:
if (c == 0x26) {
filter->status++;
} else if (c >= 0 && c < 0x80) {
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
} else {
s = c & 0xffffff;
s |= 0x78000000;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
break;
case 1:
case 2:
filter->cache |= n << 10;
filter->status = 3;
break;
case 3:
filter->cache |= n << 4;
filter->status = 4;
break;
case 4:
s = ((n >> 2) & 0xf) | (filter->cache & 0xffff);
n = (n & 0x3) << 14;
filter->status = 5;
if (s >= 0xd800 && s < 0xdc00) {
s = (((s & 0x3ff) << 16) + 0x400000) | n;
filter->cache = s;
} else if (s >= 0xdc00 && s < 0xe000) {
s &= 0x3ff;
s |= (filter->cache & 0xfff0000) >> 6;
filter->cache = n;
if (s >= 0x00010000 && s < 0x00200000) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
s &= 0xffffff;
s |= 0x78000000;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
} else {
filter->cache = n;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
break;
case 5:
filter->cache |= n << 8;
filter->status = 6;
break;
case 6:
filter->cache |= n << 2;
filter->status = 7;
break;
case 7:
s = ((n >> 4) & 0x3) | (filter->cache & 0xffff);
n = (n & 0xf) << 12;
filter->status = 8;
if (s >= 0xd800 && s < 0xdc00) {
s = (((s & 0x3ff) << 16) + 0x400000) | n;
filter->cache = s;
} else if (s >= 0xdc00 && s < 0xe000) {
s &= 0x3ff;
s |= (filter->cache & 0xfff0000) >> 6;
filter->cache = n;
if (s >= 0x00010000 && s < 0x00200000) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
s &= 0xffffff;
s |= 0x78000000;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
} else {
filter->cache = n;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
break;
case 8:
filter->cache |= n << 6;
filter->status = 9;
break;
case 9:
s = n | (filter->cache & 0xffff);
filter->status = 2;
if (s >= 0xd800 && s < 0xdc00) {
s = (((s & 0x3ff) << 16) + 0x400000);
filter->cache = s;
} else if (s >= 0xdc00 && s < 0xe000) {
s &= 0x3ff;
s |= (filter->cache & 0xfff0000) >> 6;
filter->cache = 0;
if (s >= 0x00010000 && s < 0x00200000) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
s &= 0xffffff;
s |= 0x78000000;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
} else {
filter->cache = 0;
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
}
break;
default:
filter->status = 0;
break;
}
return c;
}
static const unsigned char mbfl_utf7imap_base64_table[] =
{
0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,
0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,
0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,
0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2b,0x2c,0x00
};
static int
mbfl_filt_conv_wchar_utf7imap(int c, mbfl_convert_filter *filter)
{
int n, s;
n = 0;
if (c == 0x26) {
n = 1;
} else if ((c >= 0x20 && c <= 0x7e) || c == 0) {
n = 2;
} else if (c >= 0 && c < 0x00010000) {
;
} else if (c >= 0x00010000 && c < 0x00200000) {
s = ((c >> 10) - 0x40) | 0xd800;
do { if (((*filter->filter_function)(s, filter)) < 0) return (-1); } while (0);
s = (c & 0x3ff) | 0xdc00;
do { if (((*filter->filter_function)(s, filter)) < 0) return (-1); } while (0);
return c;
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
return c;
}
switch (filter->status) {
case 0:
if (n != 0) {
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
if (n == 1) {
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
}
} else {
do { if (((*filter->output_function)(0x26, filter->data)) < 0) return (-1); } while (0);
filter->status = 1;
filter->cache = c;
}
break;
case 1:
s = filter->cache;
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(s >> 10) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(s >> 4) & 0x3f], filter->data)) < 0) return (-1); } while (0);
if (n != 0) {
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(s << 2) & 0x3c], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
if (n == 1) {
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
}
filter->status = 0;
} else {
filter->status = 2;
filter->cache = ((s & 0xf) << 16) | c;
}
break;
case 2:
s = filter->cache;
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(s >> 14) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(s >> 8) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(s >> 2) & 0x3f], filter->data)) < 0) return (-1); } while (0);
if (n != 0) {
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(s << 4) & 0x30], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
if (n == 1) {
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
}
filter->status = 0;
} else {
filter->status = 3;
filter->cache = ((s & 0x3) << 16) | c;
}
break;
case 3:
s = filter->cache;
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(s >> 12) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(s >> 6) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[s & 0x3f], filter->data)) < 0) return (-1); } while (0);
if (n != 0) {
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
if (n == 1) {
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
}
filter->status = 0;
} else {
filter->status = 1;
filter->cache = c;
}
break;
default:
filter->status = 0;
break;
}
return c;
}
static int
mbfl_filt_conv_wchar_utf7imap_flush(mbfl_convert_filter *filter)
{
int status, cache;
status = filter->status;
cache = filter->cache;
filter->status = 0;
filter->cache = 0;
switch (status) {
case 1:
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(cache >> 10) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(cache >> 4) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(cache << 2) & 0x3c], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
break;
case 2:
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(cache >> 14) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(cache >> 8) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(cache >> 2) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(cache << 4) & 0x30], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
break;
case 3:
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(cache >> 12) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[(cache >> 6) & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(mbfl_utf7imap_base64_table[cache & 0x3f], filter->data)) < 0) return (-1); } while (0);
do { if (((*filter->output_function)(0x2d, filter->data)) < 0) return (-1); } while (0);
break;
}
return 0;
}
static int
mbfl_filt_conv_wchar_ascii(int c, mbfl_convert_filter *filter)
{
if (c >= 0 && c < 0x80) {
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_wchar_8859_1(int c, mbfl_convert_filter *filter)
{
if (c >= 0 && c < 0x100) {
do { if (((*filter->output_function)(c, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_8859_2_wchar(int c, mbfl_convert_filter *filter)
{
int s;
if (c >= 0 && c < 0xa0) {
s = c;
} else if (c >= 0xa0 && c < 0x100) {
s = iso8859_2_ucs_table[c - 0xa0];
if (s <= 0) {
s = c;
s &= 0xffff;
s |= 0x70e50000;
}
} else {
s = c;
s &= 0xffffff;
s |= 0x78000000;
}
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_wchar_8859_2(int c, mbfl_convert_filter *filter)
{
int s, n;
if (c >= 0 && c < 0xa0) {
s = c;
} else {
s = -1;
n = 95;
while (n >= 0) {
if (c == iso8859_2_ucs_table[n]) {
s = 0xa0 + n;
break;
}
n--;
}
if (s <= 0 && (c & ~0xffff) == 0x70e50000) {
s = c & 0xffff;
}
}
if (s >= 0) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_8859_3_wchar(int c, mbfl_convert_filter *filter)
{
int s;
if (c >= 0 && c < 0xa0) {
s = c;
} else if (c >= 0xa0 && c < 0x100) {
s = iso8859_3_ucs_table[c - 0xa0];
if (s <= 0) {
s = c;
s &= 0xffff;
s |= 0x70e60000;
}
} else {
s = c;
s &= 0xffffff;
s |= 0x78000000;
}
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_wchar_8859_3(int c, mbfl_convert_filter *filter)
{
int s, n;
if (c >= 0 && c < 0xa0) {
s = c;
} else {
s = -1;
n = 95;
while (n >= 0) {
if (c == iso8859_3_ucs_table[n]) {
s = 0xa0 + n;
break;
}
n--;
}
if (s <= 0 && (c & ~0xffff) == 0x70e60000) {
s = c & 0xffff;
}
}
if (s >= 0) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_8859_4_wchar(int c, mbfl_convert_filter *filter)
{
int s;
if (c >= 0 && c < 0xa0) {
s = c;
} else if (c >= 0xa0 && c < 0x100) {
s = iso8859_4_ucs_table[c - 0xa0];
if (s <= 0) {
s = c;
s &= 0xffff;
s |= 0x70e70000;
}
} else {
s = c;
s &= 0xffffff;
s |= 0x78000000;
}
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_wchar_8859_4(int c, mbfl_convert_filter *filter)
{
int s, n;
if (c >= 0 && c < 0xa0) {
s = c;
} else {
s = -1;
n = 95;
while (n >= 0) {
if (c == iso8859_4_ucs_table[n]) {
s = 0xa0 + n;
break;
}
n--;
}
if (s <= 0 && (c & ~0xffff) == 0x70e70000) {
s = c & 0xffff;
}
}
if (s >= 0) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_8859_5_wchar(int c, mbfl_convert_filter *filter)
{
int s;
if (c >= 0 && c < 0xa0) {
s = c;
} else if (c >= 0xa0 && c < 0x100) {
s = iso8859_5_ucs_table[c - 0xa0];
if (s <= 0) {
s = c;
s &= 0xffff;
s |= 0x70e80000;
}
} else {
s = c;
s &= 0xffffff;
s |= 0x78000000;
}
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_wchar_8859_5(int c, mbfl_convert_filter *filter)
{
int s, n;
if (c >= 0 && c < 0xa0) {
s = c;
} else {
s = -1;
n = 95;
while (n >= 0) {
if (c == iso8859_5_ucs_table[n]) {
s = 0xa0 + n;
break;
}
n--;
}
if (s <= 0 && (c & ~0xffff) == 0x70e80000) {
s = c & 0xffff;
}
}
if (s >= 0) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_8859_6_wchar(int c, mbfl_convert_filter *filter)
{
int s;
if (c >= 0 && c < 0xa0) {
s = c;
} else if (c >= 0xa0 && c < 0x100) {
s = iso8859_6_ucs_table[c - 0xa0];
if (s <= 0) {
s = c;
s &= 0xffff;
s |= 0x70e90000;
}
} else {
s = c;
s &= 0xffffff;
s |= 0x78000000;
}
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_wchar_8859_6(int c, mbfl_convert_filter *filter)
{
int s, n;
if (c >= 0 && c < 0xa0) {
s = c;
} else {
s = -1;
n = 95;
while (n >= 0) {
if (c == iso8859_6_ucs_table[n]) {
s = 0xa0 + n;
break;
}
n--;
}
if (s <= 0 && (c & ~0xffff) == 0x70e90000) {
s = c & 0xffff;
}
}
if (s >= 0) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_8859_7_wchar(int c, mbfl_convert_filter *filter)
{
int s;
if (c >= 0 && c < 0xa0) {
s = c;
} else if (c >= 0xa0 && c < 0x100) {
s = iso8859_7_ucs_table[c - 0xa0];
if (s <= 0) {
s = c;
s &= 0xffff;
s |= 0x70ea0000;
}
} else {
s = c;
s &= 0xffffff;
s |= 0x78000000;
}
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_wchar_8859_7(int c, mbfl_convert_filter *filter)
{
int s, n;
if (c >= 0 && c < 0xa0) {
s = c;
} else {
s = -1;
n = 95;
while (n >= 0) {
if (c == iso8859_7_ucs_table[n]) {
s = 0xa0 + n;
break;
}
n--;
}
if (s <= 0 && (c & ~0xffff) == 0x70ea0000) {
s = c & 0xffff;
}
}
if (s >= 0) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_8859_8_wchar(int c, mbfl_convert_filter *filter)
{
int s;
if (c >= 0 && c < 0xa0) {
s = c;
} else if (c >= 0xa0 && c < 0x100) {
s = iso8859_8_ucs_table[c - 0xa0];
if (s <= 0) {
s = c;
s &= 0xffff;
s |= 0x70eb0000;
}
} else {
s = c;
s &= 0xffffff;
s |= 0x78000000;
}
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_wchar_8859_8(int c, mbfl_convert_filter *filter)
{
int s, n;
if (c >= 0 && c < 0xa0) {
s = c;
} else {
s = -1;
n = 95;
while (n >= 0) {
if (c == iso8859_8_ucs_table[n]) {
s = 0xa0 + n;
break;
}
n--;
}
if (s <= 0 && (c & ~0xffff) == 0x70eb0000) {
s = c & 0xffff;
}
}
if (s >= 0) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_8859_9_wchar(int c, mbfl_convert_filter *filter)
{
int s;
if (c >= 0 && c < 0xa0) {
s = c;
} else if (c >= 0xa0 && c < 0x100) {
s = iso8859_9_ucs_table[c - 0xa0];
if (s <= 0) {
s = c;
s &= 0xffff;
s |= 0x70ec0000;
}
} else {
s = c;
s &= 0xffffff;
s |= 0x78000000;
}
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_wchar_8859_9(int c, mbfl_convert_filter *filter)
{
int s, n;
if (c >= 0 && c < 0xa0) {
s = c;
} else {
s = -1;
n = 95;
while (n >= 0) {
if (c == iso8859_9_ucs_table[n]) {
s = 0xa0 + n;
break;
}
n--;
}
if (s <= 0 && (c & ~0xffff) == 0x70ec0000) {
s = c & 0xffff;
}
}
if (s >= 0) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_8859_10_wchar(int c, mbfl_convert_filter *filter)
{
int s;
if (c >= 0 && c < 0xa0) {
s = c;
} else if (c >= 0xa0 && c < 0x100) {
s = iso8859_10_ucs_table[c - 0xa0];
if (s <= 0) {
s = c;
s &= 0xffff;
s |= 0x70ed0000;
}
} else {
s = c;
s &= 0xffffff;
s |= 0x78000000;
}
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_wchar_8859_10(int c, mbfl_convert_filter *filter)
{
int s, n;
if (c >= 0 && c < 0xa0) {
s = c;
} else {
s = -1;
n = 95;
while (n >= 0) {
if (c == iso8859_10_ucs_table[n]) {
s = 0xa0 + n;
break;
}
n--;
}
if (s <= 0 && (c & ~0xffff) == 0x70ed0000) {
s = c & 0xffff;
}
}
if (s >= 0) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_8859_13_wchar(int c, mbfl_convert_filter *filter)
{
int s;
if (c >= 0 && c < 0xa0) {
s = c;
} else if (c >= 0xa0 && c < 0x100) {
s = iso8859_13_ucs_table[c - 0xa0];
if (s <= 0) {
s = c;
s &= 0xffff;
s |= 0x70ee0000;
}
} else {
s = c;
s &= 0xffffff;
s |= 0x78000000;
}
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_wchar_8859_13(int c, mbfl_convert_filter *filter)
{
int s, n;
if (c >= 0 && c < 0xa0) {
s = c;
} else {
s = -1;
n = 95;
while (n >= 0) {
if (c == iso8859_13_ucs_table[n]) {
s = 0xa0 + n;
break;
}
n--;
}
if (s <= 0 && (c & ~0xffff) == 0x70ee0000) {
s = c & 0xffff;
}
}
if (s >= 0) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_8859_14_wchar(int c, mbfl_convert_filter *filter)
{
int s;
if (c >= 0 && c < 0xa0) {
s = c;
} else if (c >= 0xa0 && c < 0x100) {
s = iso8859_14_ucs_table[c - 0xa0];
if (s <= 0) {
s = c;
s &= 0xffff;
s |= 0x70ef0000;
}
} else {
s = c;
s &= 0xffffff;
s |= 0x78000000;
}
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_wchar_8859_14(int c, mbfl_convert_filter *filter)
{
int s, n;
if (c >= 0 && c < 0xa0) {
s = c;
} else {
s = -1;
n = 95;
while (n >= 0) {
if (c == iso8859_14_ucs_table[n]) {
s = 0xa0 + n;
break;
}
n--;
}
if (s <= 0 && (c & ~0xffff) == 0x70ef0000) {
s = c & 0xffff;
}
}
if (s >= 0) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
static int
mbfl_filt_conv_8859_15_wchar(int c, mbfl_convert_filter *filter)
{
int s;
if (c >= 0 && c < 0xa0) {
s = c;
} else if (c >= 0xa0 && c < 0x100) {
s = iso8859_15_ucs_table[c - 0xa0];
if (s <= 0) {
s = c;
s &= 0xffff;
s |= 0x70f00000;
}
} else {
s = c;
s &= 0xffffff;
s |= 0x78000000;
}
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
return c;
}
static int
mbfl_filt_conv_wchar_8859_15(int c, mbfl_convert_filter *filter)
{
int s, n;
if (c >= 0 && c < 0xa0) {
s = c;
} else {
s = -1;
n = 95;
while (n >= 0) {
if (c == iso8859_15_ucs_table[n]) {
s = 0xa0 + n;
break;
}
n--;
}
if (s <= 0 && (c & ~0xffff) == 0x70f00000) {
s = c & 0xffff;
}
}
if (s >= 0) {
do { if (((*filter->output_function)(s, filter->data)) < 0) return (-1); } while (0);
} else {
if (filter->illegal_mode != 0) {
do { if ((mbfl_filt_conv_illegal_output(c, filter)) < 0) return (-1); } while (0);
}
}
return c;
}
# 4744 "mbfilter.c"
static void
mbfl_filt_ident_common_ctor(mbfl_identify_filter *filter)
{
filter->status = 0;
filter->flag = 0;
}
static void
mbfl_filt_ident_common_dtor(mbfl_identify_filter *filter)
{
filter->status = 0;
}
static int
mbfl_filt_ident_ascii(int c, mbfl_identify_filter *filter)
{
if (c >= 0x20 && c < 0x80) {
;
} else if (c == 0x0d || c == 0x0a || c == 0x09 || c == 0) {
;
} else {
filter->flag = 1;
}
return c;
}
static int
mbfl_filt_ident_utf8(int c, mbfl_identify_filter *filter)
{
if (c < 0x80) {
if (c < 0) {
filter->flag = 1;
} else if (c != 0 && filter->status) {
filter->flag = 1;
}
filter->status = 0;
} else if (c < 0xc0) {
switch (filter->status) {
case 0x20:
case 0x30:
case 0x31:
case 0x40:
case 0x41:
case 0x42:
case 0x50:
case 0x51:
case 0x52:
case 0x53:
filter->status++;
break;
case 0x10:
case 0x21:
case 0x32:
case 0x43:
case 0x54:
filter->status = 0;
break;
default:
filter->flag = 1;
filter->status = 0;
break;
}
} else {
if (filter->status) {
filter->flag = 1;
}
filter->status = 0;
if (c < 0xe0) {
filter->status = 0x10;
} else if (c < 0xf0) {
filter->status = 0x20;
} else if (c < 0xf8) {
filter->status = 0x30;
} else if (c < 0xfc) {
filter->status = 0x40;
} else if (c < 0xfe) {
filter->status = 0x50;
} else {
filter->flag = 1;
}
}
return c;
}
static int
mbfl_filt_ident_utf7(int c, mbfl_identify_filter *filter)
{
int n;
switch (filter->status) {
case 0:
if (c == 0x2b) {
filter->status++;
} else if (c == 0x5c || c == 0x7e || c < 0 || c > 0x7f) {
filter->flag = 1;
}
break;
case 1:
case 2:
n = 0;
if (c >= 0x41 && c <= 0x5a) {
n = 1;
} else if (c >= 0x61 && c <= 0x7a) {
n = 1;
} else if (c >= 0x30 && c <= 0x39) {
n = 1;
} else if (c == 0x2b) {
n = 1;
} else if (c == 0x2f) {
n = 1;
}
if (n <= 0) {
if (filter->status == 1 && c != 0x2d) {
filter->flag = 1;
} else if (c < 0 || c > 0x7f) {
filter->flag = 1;
}
filter->status = 0;
} else {
filter->status = 2;
}
break;
default:
filter->status = 0;
break;
}
return c;
}
static int
mbfl_filt_ident_eucjp(int c, mbfl_identify_filter *filter)
{
switch (filter->status) {
case 0:
if (c >= 0 && c < 0x80) {
;
} else if (c > 0xa0 && c < 0xff) {
filter->status = 1;
} else if (c == 0x8e) {
filter->status = 2;
} else if (c == 0x8f) {
filter->status = 3;
} else {
filter->flag = 1;
}
break;
case 1:
if (c < 0xa1 || c > 0xfe) {
filter->flag = 1;
}
filter->status = 0;
break;
case 2:
if (c < 0xa1 || c > 0xdf) {
filter->flag = 1;
}
filter->status = 0;
break;
case 3:
if (c < 0xa1 || c > 0xfe) {
filter->flag = 1;
}
filter->status++;
break;
case 4:
if (c < 0xa1 || c > 0xfe) {
filter->flag = 1;
}
filter->status = 0;
break;
default:
filter->status = 0;
break;
}
return c;
}
static int
mbfl_filt_ident_sjis(int c, mbfl_identify_filter *filter)
{
if (filter->status) {
if (c < 0x40 || c > 0xfc || c == 0x7f) {
filter->flag = 1;
}
filter->status = 0;
} else if (c >= 0 && c < 0x80) {
;
} else if (c > 0xa0 && c < 0xe0) {
;
} else if (c > 0x80 && c < 0xf0 && c != 0xa0) {
filter->status = 1;
} else {
filter->flag = 1;
}
return c;
}
static int
mbfl_filt_ident_sjiswin(int c, mbfl_identify_filter *filter)
{
if (filter->status) {
if (c < 0x40 || c > 0xfc || c == 0x7f) {
filter->flag = 1;
}
filter->status = 0;
} else if (c >= 0 && c < 0x80) {
;
} else if (c > 0xa0 && c < 0xe0) {
;
} else if (c > 0x80 && c < 0xfd && c != 0xa0) {
filter->status = 1;
} else {
filter->flag = 1;
}
return c;
}
static int
mbfl_filt_ident_jis(int c, mbfl_identify_filter *filter)
{
retry:
switch (filter->status & 0xf) {
case 0:
if (c == 0x1b) {
filter->status += 2;
} else if (c == 0x0e) {
filter->status = 0x20;
} else if (c == 0x0f) {
filter->status = 0;
} else if ((filter->status == 0x80 || filter->status == 0x90) && c > 0x20 && c < 0x7f) {
filter->status += 1;
} else if (c >= 0 && c < 0x80) {
;
} else {
filter->flag = 1;
}
break;
case 1:
filter->status &= ~0xf;
if (c == 0x1b) {
goto retry;
} else if (c < 0x21 || c > 0x7e) {
filter->flag = 1;
}
break;
case 2:
if (c == 0x24) {
filter->status++;
} else if (c == 0x28) {
filter->status += 3;
} else {
filter->flag = 1;
filter->status &= ~0xf;
goto retry;
}
break;
case 3:
if (c == 0x40 || c == 0x42) {
filter->status = 0x80;
} else if (c == 0x28) {
filter->status++;
} else {
filter->flag = 1;
filter->status &= ~0xf;
goto retry;
}
break;
case 4:
if (c == 0x40 || c == 0x42) {
filter->status = 0x80;
} else if (c == 0x44) {
filter->status = 0x90;
} else {
filter->flag = 1;
filter->status &= ~0xf;
goto retry;
}
break;
case 5:
if (c == 0x42 || c == 0x48) {
filter->status = 0;
} else if (c == 0x4a) {
filter->status = 0x10;
} else if (c == 0x49) {
filter->status = 0x20;
} else {
filter->flag = 1;
filter->status &= ~0xf;
goto retry;
}
break;
default:
filter->status = 0;
break;
}
return c;
}
static int
mbfl_filt_ident_2022jp(int c, mbfl_identify_filter *filter)
{
retry:
switch (filter->status & 0xf) {
case 0:
if (c == 0x1b) {
filter->status += 2;
} else if (filter->status == 0x80 && c > 0x20 && c < 0x7f) {
filter->status += 1;
} else if (c >= 0 && c < 0x80) {
;
} else {
filter->flag = 1;
}
break;
case 1:
if (c == 0x1b) {
filter->status++;
} else {
filter->status &= ~0xf;
if (c < 0x21 || c > 0x7e) {
filter->flag = 1;
}
}
break;
case 2:
if (c == 0x24) {
filter->status++;
} else if (c == 0x28) {
filter->status += 3;
} else {
filter->flag = 1;
filter->status &= ~0xf;
goto retry;
}
break;
case 3:
if (c == 0x40 || c == 0x42) {
filter->status = 0x80;
} else {
filter->flag = 1;
filter->status &= ~0xf;
goto retry;
}
break;
case 5:
if (c == 0x42) {
filter->status = 0;
} else if (c == 0x4a) {
filter->status = 0x10;
} else {
filter->flag = 1;
filter->status &= ~0xf;
goto retry;
}
break;
default:
filter->status = 0;
break;
}
return c;
}
static void
mbfl_filt_ident_false_ctor(mbfl_identify_filter *filter)
{
filter->status = 0;
filter->flag = 1;
}
static int
mbfl_filt_ident_false(int c, mbfl_identify_filter *filter)
{
filter->flag = 1;
return c;
}
static int
mbfl_filt_ident_true(int c, mbfl_identify_filter *filter)
{
return c;
}
# 5178 "mbfilter.c"
static void
mbfl_convert_filter_set_vtbl(mbfl_convert_filter *filter, struct mbfl_convert_vtbl *vtbl)
{
if (filter && vtbl) {
filter->filter_ctor = vtbl->filter_ctor;
filter->filter_dtor = vtbl->filter_dtor;
filter->filter_function = vtbl->filter_function;
filter->filter_flush = vtbl->filter_flush;
}
}
static struct mbfl_convert_vtbl *
mbfl_convert_filter_get_vtbl(enum mbfl_no_encoding from, enum mbfl_no_encoding to)
{
struct mbfl_convert_vtbl *vtbl;
int i;
if (to == mbfl_no_encoding_base64 ||
to == mbfl_no_encoding_qprint ||
to == mbfl_no_encoding_7bit) {
from = mbfl_no_encoding_8bit;
} else if (from == mbfl_no_encoding_base64 ||
from == mbfl_no_encoding_qprint) {
to = mbfl_no_encoding_8bit;
}
i = 0;
while ((vtbl = mbfl_convert_filter_list[i++]) != ((void *)0)){
if (vtbl->from == from && vtbl->to == to) {
return vtbl;
}
}
return ((void *)0);
}
static void
mbfl_convert_filter_select_vtbl(mbfl_convert_filter *filter)
{
struct mbfl_convert_vtbl *vtbl;
vtbl = mbfl_convert_filter_get_vtbl(filter->from->no_encoding, filter->to->no_encoding);
if (vtbl == ((void *)0)) {
vtbl = &vtbl_pass;
}
mbfl_convert_filter_set_vtbl(filter, vtbl);
}
static int
mbfl_filter_output_pipe(int c, void* data)
{
mbfl_convert_filter *filter = (mbfl_convert_filter*)data;
return (*filter->filter_function)(c, filter);
}
static int
mbfl_filter_output_null(int c, void* data)
{
return c;
}
mbfl_convert_filter *
mbfl_convert_filter_new(
enum mbfl_no_encoding from,
enum mbfl_no_encoding to,
int (*output_function)(int, void*),
int (*flush_function)(void*),
void* data)
{
mbfl_convert_filter * filter;
filter = (mbfl_convert_filter *)_emalloc((sizeof(mbfl_convert_filter)) );
if (filter == ((void *)0)) {
return ((void *)0);
}
filter->from = mbfl_no2encoding(from);
filter->to = mbfl_no2encoding(to);
if (filter->from == ((void *)0)) {
filter->from = &mbfl_encoding_pass;
}
if (filter->to == ((void *)0)) {
filter->to = &mbfl_encoding_pass;
}
if (output_function != ((void *)0)) {
filter->output_function = output_function;
} else {
filter->output_function = mbfl_filter_output_null;
}
filter->flush_function = flush_function;
filter->data = data;
filter->illegal_mode = 1;
filter->illegal_substchar = 0x3f;
mbfl_convert_filter_select_vtbl(filter);
(*filter->filter_ctor)(filter);
return filter;
}
void
mbfl_convert_filter_delete(mbfl_convert_filter *filter)
{
if (filter) {
(*filter->filter_dtor)(filter);
_efree(((void*)filter) );
}
}
int
mbfl_convert_filter_feed(int c, mbfl_convert_filter *filter)
{
return (*filter->filter_function)(c, filter);
}
int
mbfl_convert_filter_flush(mbfl_convert_filter *filter)
{
(*filter->filter_flush)(filter);
return (filter->flush_function ? (*filter->flush_function)(filter->data) : 0);
}
void
mbfl_convert_filter_reset(
mbfl_convert_filter *filter,
enum mbfl_no_encoding from,
enum mbfl_no_encoding to)
{
(*filter->filter_dtor)(filter);
filter->from = mbfl_no2encoding(from);
filter->to = mbfl_no2encoding(to);
mbfl_convert_filter_select_vtbl(filter);
(*filter->filter_ctor)(filter);
}
void
mbfl_convert_filter_copy(
mbfl_convert_filter *src,
mbfl_convert_filter *dist)
{
dist->filter_ctor = src->filter_ctor;
dist->filter_dtor = src->filter_dtor;
dist->filter_function = src->filter_function;
dist->filter_flush = src->filter_flush;
dist->output_function = src->output_function;
dist->flush_function = src->flush_function;
dist->data = src->data;
dist->status = src->status;
dist->cache = src->cache;
dist->from = src->from;
dist->to = src->to;
dist->illegal_mode = src->illegal_mode;
dist->illegal_substchar = src->illegal_substchar;
}
static int
mbfl_convert_filter_devcat(mbfl_convert_filter *filter, mbfl_memory_device *src)
{
int n;
unsigned char *p;
p = src->buffer;
n = src->pos;
while (n > 0) {
if ((*filter->filter_function)(*p++, filter) < 0) {
return -1;
}
n--;
}
return n;
}
static int
mbfl_convert_filter_strcat(mbfl_convert_filter *filter, const unsigned char *p)
{
int c;
while ((c = *p++) != '\0') {
if ((*filter->filter_function)(c, filter) < 0) {
return -1;
}
}
return 0;
}
# 5401 "mbfilter.c"
static char mbfl_hexchar_table[] = {
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46
};
int
mbfl_filt_conv_illegal_output(int c, mbfl_convert_filter *filter)
{
int mode_backup, ret, n, m, r;
ret = 0;
mode_backup = filter->illegal_mode;
filter->illegal_mode = 0;
switch (mode_backup) {
case 1:
ret = (*filter->filter_function)(filter->illegal_substchar, filter);
break;
case 2:
if (c >= 0) {
if (c < 0x70000000) {
ret = mbfl_convert_filter_strcat(filter, "U+");
} else {
if (c < 0x78000000) {
m = c & ~0xffff;
switch (m) {
case 0x70e10000:
ret = mbfl_convert_filter_strcat(filter, "JIS+");
break;
case 0x70e20000:
ret = mbfl_convert_filter_strcat(filter, "JIS2+");
break;
case 0x70e30000:
ret = mbfl_convert_filter_strcat(filter, "W932+");
break;
case 0x70e40000:
ret = mbfl_convert_filter_strcat(filter, "I8859_1+");
break;
default:
ret = mbfl_convert_filter_strcat(filter, "?+");
break;
}
c &= 0xffff;
} else {
ret = mbfl_convert_filter_strcat(filter, "BAD+");
c &= 0xffffff;
}
}
if (ret >= 0) {
m = 0;
r = 28;
while (r >= 0) {
n = (c >> r) & 0xf;
if (n || m) {
m = 1;
ret = (*filter->filter_function)(mbfl_hexchar_table[n], filter);
if (ret < 0) {
break;
}
}
r -= 4;
}
if (m == 0 && ret >= 0) {
ret = (*filter->filter_function)(mbfl_hexchar_table[0], filter);
}
}
}
break;
default:
break;
}
filter->illegal_mode = mode_backup;
return ret;
}
static void
mbfl_identify_filter_set_vtbl(mbfl_identify_filter *filter, struct mbfl_identify_vtbl *vtbl)
{
if (filter && vtbl) {
filter->filter_ctor = vtbl->filter_ctor;
filter->filter_dtor = vtbl->filter_dtor;
filter->filter_function = vtbl->filter_function;
}
}
static struct mbfl_identify_vtbl *
mbfl_identify_filter_get_vtbl(enum mbfl_no_encoding encoding)
{
struct mbfl_identify_vtbl *vtbl;
int i;
i = 0;
while ((vtbl = mbfl_identify_filter_list[i++]) != ((void *)0)) {
if (vtbl->encoding == encoding) {
break;
}
}
return vtbl;
}
static void
mbfl_identify_filter_select_vtbl(mbfl_identify_filter *filter)
{
struct mbfl_identify_vtbl *vtbl;
vtbl = mbfl_identify_filter_get_vtbl(filter->encoding->no_encoding);
if (vtbl == ((void *)0)) {
vtbl = &vtbl_identify_false;
}
mbfl_identify_filter_set_vtbl(filter, vtbl);
}
mbfl_identify_filter *
mbfl_identify_filter_new(enum mbfl_no_encoding encoding)
{
mbfl_identify_filter * filter;
filter = (mbfl_identify_filter *)_emalloc((sizeof(mbfl_identify_filter)) );
if (filter == ((void *)0)) {
return ((void *)0);
}
filter->encoding = mbfl_no2encoding(encoding);
if (filter->encoding == ((void *)0)) {
filter->encoding = &mbfl_encoding_pass;
}
filter->status = 0;
filter->flag = 0;
filter->score = 0;
mbfl_identify_filter_select_vtbl(filter);
(*filter->filter_ctor)(filter);
return filter;
}
void
mbfl_identify_filter_delete(mbfl_identify_filter *filter)
{
if (filter) {
(*filter->filter_dtor)(filter);
_efree(((void*)filter) );
}
}
mbfl_buffer_converter *
mbfl_buffer_converter_new(
enum mbfl_no_encoding from,
enum mbfl_no_encoding to,
int buf_initsz)
{
mbfl_buffer_converter *convd;
convd = (mbfl_buffer_converter*)_emalloc((sizeof (mbfl_buffer_converter)) );
if (convd == ((void *)0)) {
return ((void *)0);
}
convd->from = mbfl_no2encoding(from);
convd->to = mbfl_no2encoding(to);
if (convd->from == ((void *)0)) {
convd->from = &mbfl_encoding_pass;
}
if (convd->to == ((void *)0)) {
convd->to = &mbfl_encoding_pass;
}
convd->filter1 = ((void *)0);
convd->filter2 = ((void *)0);
if (mbfl_convert_filter_get_vtbl(convd->from->no_encoding, convd->to->no_encoding) != ((void *)0)) {
convd->filter1 = mbfl_convert_filter_new(convd->from->no_encoding, convd->to->no_encoding, mbfl_memory_device_output, 0, &convd->device);
} else {
convd->filter2 = mbfl_convert_filter_new(mbfl_no_encoding_wchar, convd->to->no_encoding, mbfl_memory_device_output, 0, &convd->device);
if (convd->filter2 != ((void *)0)) {
convd->filter1 = mbfl_convert_filter_new(convd->from->no_encoding, mbfl_no_encoding_wchar, (int (*)(int, void*))convd->filter2->filter_function, ((void *)0), convd->filter2);
if (convd->filter1 == ((void *)0)) {
mbfl_convert_filter_delete(convd->filter2);
}
}
}
if (convd->filter1 == ((void *)0)) {
return ((void *)0);
}
mbfl_memory_device_init(&convd->device, buf_initsz, buf_initsz/4);
return convd;
}
void
mbfl_buffer_converter_delete(mbfl_buffer_converter *convd)
{
if (convd != ((void *)0)) {
if (convd->filter1) {
mbfl_convert_filter_delete(convd->filter1);
}
if (convd->filter2) {
mbfl_convert_filter_delete(convd->filter2);
}
mbfl_memory_device_clear(&convd->device);
_efree(((void*)convd) );
}
}
void
mbfl_buffer_converter_reset(mbfl_buffer_converter *convd)
{
mbfl_memory_device_reset(&convd->device);
}
int
mbfl_buffer_converter_illegal_mode(mbfl_buffer_converter *convd, int mode)
{
if (convd != ((void *)0)) {
if (convd->filter2 != ((void *)0)) {
convd->filter2->illegal_mode = mode;
} else if (convd->filter1 != ((void *)0)) {
convd->filter1->illegal_mode = mode;
} else {
return 0;
}
}
return 1;
}
int
mbfl_buffer_converter_illegal_substchar(mbfl_buffer_converter *convd, int substchar)
{
if (convd != ((void *)0)) {
if (convd->filter2 != ((void *)0)) {
convd->filter2->illegal_substchar = substchar;
} else if (convd->filter1 != ((void *)0)) {
convd->filter1->illegal_substchar = substchar;
} else {
return 0;
}
}
return 1;
}
int
mbfl_buffer_converter_strncat(mbfl_buffer_converter *convd, const unsigned char *p, int n)
{
mbfl_convert_filter *filter;
int (*filter_function)(int c, mbfl_convert_filter *filter);
if (convd != ((void *)0) && p != ((void *)0)) {
filter = convd->filter1;
if (filter != ((void *)0)) {
filter_function = filter->filter_function;
while (n > 0) {
if ((*filter_function)(*p++, filter) < 0) {
break;
}
n--;
}
}
}
return n;
}
int
mbfl_buffer_converter_feed(mbfl_buffer_converter *convd, mbfl_string *string)
{
int n;
unsigned char *p;
mbfl_convert_filter *filter;
int (*filter_function)(int c, mbfl_convert_filter *filter);
if (convd == ((void *)0) || string == ((void *)0)) {
return -1;
}
mbfl_memory_device_realloc(&convd->device, convd->device.pos + string->len, string->len/4);
n = string->len;
p = string->val;
filter = convd->filter1;
if (filter != ((void *)0)) {
filter_function = filter->filter_function;
while (n > 0) {
if ((*filter_function)(*p++, filter) < 0) {
return -1;
}
n--;
}
}
return 0;
}
int
mbfl_buffer_converter_flush(mbfl_buffer_converter *convd)
{
if (convd == ((void *)0)) {
return -1;
}
if (convd->filter1 != ((void *)0)) {
mbfl_convert_filter_flush(convd->filter1);
}
if (convd->filter2 != ((void *)0)) {
mbfl_convert_filter_flush(convd->filter2);
}
return 0;
}
mbfl_string *
mbfl_buffer_converter_getbuffer(mbfl_buffer_converter *convd, mbfl_string *result)
{
if (convd != ((void *)0) && result != ((void *)0) && convd->device.buffer != ((void *)0)) {
result->no_encoding = convd->to->no_encoding;
result->val = convd->device.buffer;
result->len = convd->device.pos;
} else {
result = ((void *)0);
}
return result;
}
mbfl_string *
mbfl_buffer_converter_result(mbfl_buffer_converter *convd, mbfl_string *result)
{
if (convd == ((void *)0) || result == ((void *)0)) {
return ((void *)0);
}
result->no_encoding = convd->to->no_encoding;
return mbfl_memory_device_result(&convd->device, result);
}
mbfl_string *
mbfl_buffer_converter_feed_result(mbfl_buffer_converter *convd, mbfl_string *string, mbfl_string *result)
{
if (convd == ((void *)0) || string == ((void *)0) || result == ((void *)0)) {
return ((void *)0);
}
mbfl_buffer_converter_feed(convd, string);
if (convd->filter1 != ((void *)0)) {
mbfl_convert_filter_flush(convd->filter1);
}
if (convd->filter2 != ((void *)0)) {
mbfl_convert_filter_flush(convd->filter2);
}
result->no_encoding = convd->to->no_encoding;
return mbfl_memory_device_result(&convd->device, result);
}
mbfl_encoding_detector *
mbfl_encoding_detector_new(enum mbfl_no_encoding *elist, int eliztsz)
{
mbfl_encoding_detector *identd;
int i, num;
mbfl_identify_filter *filter;
if (elist == ((void *)0) || eliztsz <= 0) {
return ((void *)0);
}
identd = (mbfl_encoding_detector*)_emalloc((sizeof(mbfl_encoding_detector)) );
if (identd == ((void *)0)) {
return ((void *)0);
}
identd->filter_list = (mbfl_identify_filter **)_ecalloc((eliztsz), (sizeof(mbfl_identify_filter *)) );
if (identd->filter_list == ((void *)0)) {
_efree((identd) );
return ((void *)0);
}
i = 0;
num = 0;
while (i < eliztsz) {
filter = mbfl_identify_filter_new(elist[i]);
if (filter != ((void *)0)) {
identd->filter_list[num] = filter;
num++;
}
i++;
}
identd->filter_list_size = num;
return identd;
}
void
mbfl_encoding_detector_delete(mbfl_encoding_detector *identd)
{
int i;
if (identd != ((void *)0)) {
if (identd->filter_list != ((void *)0)) {
i = identd->filter_list_size;
while (i > 0) {
i--;
mbfl_identify_filter_delete(identd->filter_list[i]);
}
_efree(((void *)identd->filter_list) );
}
_efree(((void *)identd) );
}
}
int
mbfl_encoding_detector_feed(mbfl_encoding_detector *identd, mbfl_string *string)
{
int i, n, num, bad, res;
unsigned char *p;
mbfl_identify_filter *filter;
res = 0;
if (identd != ((void *)0) && string != ((void *)0) && string->val != ((void *)0)) {
num = identd->filter_list_size;
n = string->len;
p = string->val;
while (n > 0) {
i = 0;
bad = 0;
while (i < num) {
filter = identd->filter_list[i];
(*filter->filter_function)(*p, filter);
if (filter->flag) {
bad++;
}
i++;
}
if ((num - 1) <= bad) {
res = 1;
break;
}
p++;
n--;
}
}
return res;
}
enum mbfl_no_encoding mbfl_encoding_detector_judge(mbfl_encoding_detector *identd)
{
mbfl_identify_filter *filter;
enum mbfl_no_encoding encoding;
int n;
encoding = mbfl_no_encoding_invalid;
if (identd != ((void *)0)) {
n = identd->filter_list_size - 1;
while (n >= 0) {
filter = identd->filter_list[n];
if (!filter->flag) {
encoding = filter->encoding->no_encoding;
}
n--;
}
}
return encoding;
}
mbfl_string *
mbfl_convert_encoding(
mbfl_string *string,
mbfl_string *result,
enum mbfl_no_encoding toenc)
{
int n;
unsigned char *p;
mbfl_encoding *encoding;
mbfl_memory_device device;
mbfl_convert_filter *filter1;
mbfl_convert_filter *filter2;
encoding = mbfl_no2encoding(toenc);
if (encoding == ((void *)0) || string == ((void *)0) || result == ((void *)0)) {
return ((void *)0);
}
filter1 = ((void *)0);
filter2 = ((void *)0);
if (mbfl_convert_filter_get_vtbl(string->no_encoding, toenc) != ((void *)0)) {
filter1 = mbfl_convert_filter_new(string->no_encoding, toenc, mbfl_memory_device_output, 0, &device);
} else {
filter2 = mbfl_convert_filter_new(mbfl_no_encoding_wchar, toenc, mbfl_memory_device_output, 0, &device);
if (filter2 != ((void *)0)) {
filter1 = mbfl_convert_filter_new(string->no_encoding, mbfl_no_encoding_wchar, (int (*)(int, void*))filter2->filter_function, ((void *)0), filter2);
if (filter1 == ((void *)0)) {
mbfl_convert_filter_delete(filter2);
}
}
}
if (filter1 == ((void *)0)) {
return ((void *)0);
}
filter2->illegal_mode = 1;
filter2->illegal_substchar = 0x3f;
mbfl_memory_device_init(&device, string->len, (string->len >> 2) + 8);
n = string->len;
p = string->val;
if (p != ((void *)0)) {
while (n > 0) {
if ((*filter1->filter_function)(*p++, filter1) < 0) {
break;
}
n--;
}
}
mbfl_convert_filter_flush(filter1);
mbfl_convert_filter_delete(filter1);
if (filter2 != ((void *)0)) {
mbfl_convert_filter_flush(filter2);
mbfl_convert_filter_delete(filter2);
}
return mbfl_memory_device_result(&device, result);
}
mbfl_encoding *
mbfl_identify_encoding(mbfl_string *string, enum mbfl_no_encoding *elist, int eliztsz)
{
int i, n, num, bad;
unsigned char *p;
struct mbfl_identify_vtbl *vtbl;
mbfl_identify_filter *flist, *filter;
mbfl_encoding *encoding;
flist = (mbfl_identify_filter *)_ecalloc((eliztsz), (sizeof(mbfl_identify_filter)) );
if (flist == ((void *)0)) {
return ((void *)0);
}
i = 0;
num = 0;
if (elist != ((void *)0)) {
while (i < eliztsz) {
vtbl = mbfl_identify_filter_get_vtbl(elist[i]);
if (vtbl != ((void *)0)) {
filter = &flist[num];
mbfl_identify_filter_set_vtbl(filter, vtbl);
filter->encoding = mbfl_no2encoding(vtbl->encoding);
(*filter->filter_ctor)(filter);
num++;
}
i++;
}
}
n = string->len;
p = string->val;
if (p != ((void *)0)) {
while (n > 0) {
i = 0;
bad = 0;
while (i < num) {
filter = &flist[i];
(*filter->filter_function)(*p, filter);
if (filter->flag) {
bad++;
}
i++;
}
if ((num - 1) <= bad) {
break;
}
p++;
n--;
}
}
i = num - 1;
bad = 1;
encoding = ((void *)0);
while (i >= 0) {
filter = &flist[i];
if (filter->flag) {
bad++;
} else {
encoding = filter->encoding;
}
i--;
}
i = 0;
while (i < num) {
filter = &flist[i];
(*filter->filter_dtor)(filter);
i++;
}
_efree(((void *)flist) );
return encoding;
}
const char*
mbfl_identify_encoding_name(mbfl_string *string, enum mbfl_no_encoding *elist, int eliztsz)
{
mbfl_encoding *encoding;
encoding = mbfl_identify_encoding(string, elist, eliztsz);
if (encoding != ((void *)0) &&
encoding->no_encoding > mbfl_no_encoding_charset_min &&
encoding->no_encoding < mbfl_no_encoding_charset_max) {
return encoding->name;
} else {
return ((void *)0);
}
}
enum mbfl_no_encoding
mbfl_identify_encoding_no(mbfl_string *string, enum mbfl_no_encoding *elist, int eliztsz)
{
mbfl_encoding *encoding;
encoding = mbfl_identify_encoding(string, elist, eliztsz);
if (encoding != ((void *)0) &&
encoding->no_encoding > mbfl_no_encoding_charset_min &&
encoding->no_encoding < mbfl_no_encoding_charset_max) {
return encoding->no_encoding;
} else {
return mbfl_no_encoding_invalid;
}
}
static int
filter_count_output(int c, void *data)
{
(*(int *)data)++;
return c;
}
int
mbfl_strlen(mbfl_string *string)
{
int len, n, m, k;
unsigned char *p;
const unsigned char *mbtab;
mbfl_encoding *encoding;
encoding = mbfl_no2encoding(string->no_encoding);
if (encoding == ((void *)0) || string == ((void *)0)) {
return -1;
}
len = 0;
if (encoding->flag & 0x00000001) {
len = string->len;
} else if (encoding->flag & (0x00000010 | 0x00000020)) {
len = string->len/2;
} else if (encoding->flag & (0x00000100 | 0x00000200)) {
len = string->len/4;
} else if (encoding->mblen_table != ((void *)0)) {
mbtab = encoding->mblen_table;
n = 0;
p = string->val;
k = string->len;
if (p != ((void *)0)) {
while (n < k) {
m = mbtab[*p];
n += m;
p += m;
len++;
};
}
} else {
mbfl_convert_filter *filter = mbfl_convert_filter_new(
string->no_encoding,
mbfl_no_encoding_wchar,
filter_count_output, 0, &len);
if (filter == ((void *)0)) {
return -1;
}
n = string->len;
p = string->val;
if (p != ((void *)0)) {
while (n > 0) {
(*filter->filter_function)(*p++, filter);
n--;
}
}
mbfl_convert_filter_delete(filter);
}
return len;
}
struct collector_strpos_data {
mbfl_convert_filter *next_filter;
mbfl_wchar_device needle;
int needle_len;
int start;
int output;
int found_pos;
int needle_pos;
int matched_pos;
};
static int
collector_strpos(int c, void* data)
{
int *p, *h, *m, n;
struct collector_strpos_data *pc = (struct collector_strpos_data*)data;
if (pc->output >= pc->start) {
if (c == pc->needle.buffer[pc->needle_pos]) {
if (pc->needle_pos == 0) {
pc->found_pos = pc->output;
}
pc->needle_pos++;
if (pc->needle_pos >= pc->needle_len) {
pc->matched_pos = pc->found_pos;
pc->needle_pos--;
goto retry;
}
} else if (pc->needle_pos != 0) {
retry:
h = pc->needle.buffer;
h++;
for (;;) {
pc->found_pos++;
p = h;
m = pc->needle.buffer;
n = pc->needle_pos - 1;
while (n > 0 && *p == *m) {
n--;
p++;
m++;
}
if (n <= 0) {
if (*m != c) {
pc->needle_pos = 0;
}
break;
} else {
h++;
pc->needle_pos--;
}
}
}
}
pc->output++;
return c;
}
int
mbfl_strpos(
mbfl_string *haystack,
mbfl_string *needle,
int offset,
int reverse)
{
int n, result;
unsigned char *p;
mbfl_convert_filter *filter;
struct collector_strpos_data pc;
if (haystack == ((void *)0) || needle == ((void *)0)) {
return -8;
}
mbfl_wchar_device_init(&pc.needle);
filter = mbfl_convert_filter_new(
needle->no_encoding,
mbfl_no_encoding_wchar,
mbfl_wchar_device_output, 0, &pc.needle);
if (filter == ((void *)0)) {
return -4;
}
p = needle->val;
n = needle->len;
if (p != ((void *)0)) {
while (n > 0) {
if ((*filter->filter_function)(*p++, filter) < 0) {
break;
}
n--;
}
}
mbfl_convert_filter_flush(filter);
mbfl_convert_filter_delete(filter);
pc.needle_len = pc.needle.pos;
if (pc.needle.buffer == ((void *)0)) {
return -4;
}
if (pc.needle_len <= 0) {
mbfl_wchar_device_clear(&pc.needle);
return -2;
}
filter = mbfl_convert_filter_new(
haystack->no_encoding,
mbfl_no_encoding_wchar,
collector_strpos, 0, &pc);
if (filter == ((void *)0)) {
mbfl_wchar_device_clear(&pc.needle);
return -4;
}
pc.start = offset;
pc.output = 0;
pc.needle_pos = 0;
pc.found_pos = 0;
pc.matched_pos = -1;
p = haystack->val;
n = haystack->len;
if (p != ((void *)0)) {
while (n > 0) {
if ((*filter->filter_function)(*p++, filter) < 0) {
pc.matched_pos = -4;
break;
}
if (pc.matched_pos >= 0 && !reverse) {
break;
}
n--;
}
}
mbfl_convert_filter_flush(filter);
result = pc.matched_pos;
mbfl_convert_filter_delete(filter);
mbfl_wchar_device_clear(&pc.needle);
return result;
}
struct collector_substr_data {
mbfl_convert_filter *next_filter;
int start;
int stop;
int output;
};
static int
collector_substr(int c, void* data)
{
struct collector_substr_data *pc = (struct collector_substr_data*)data;
if (pc->output >= pc->stop) {
return -1;
}
if (pc->output >= pc->start) {
(*pc->next_filter->filter_function)(c, pc->next_filter);
}
pc->output++;
return c;
}
mbfl_string *
mbfl_substr(
mbfl_string *string,
mbfl_string *result,
int from,
int length)
{
mbfl_encoding *encoding;
int n, m, k, len, start, end;
unsigned char *p, *w;
const unsigned char *mbtab;
encoding = mbfl_no2encoding(string->no_encoding);
if (encoding == ((void *)0) || string == ((void *)0) || result == ((void *)0)) {
return ((void *)0);
}
mbfl_string_init(result);
result->no_language = string->no_language;
result->no_encoding = string->no_encoding;
if ((encoding->flag & (0x00000001 | 0x00000010 | 0x00000020 | 0x00000100 | 0x00000200)) ||
encoding->mblen_table != ((void *)0)) {
len = string->len;
start = from;
end = from + length;
if (encoding->flag & (0x00000010 | 0x00000080)) {
start *= 2;
end = start + length*2;
} else if (encoding->flag & (0x00000100 | 0x00000800)) {
start *= 4;
end = start + length*4;
} else if (encoding->mblen_table != ((void *)0)) {
mbtab = encoding->mblen_table;
start = 0;
end = 0;
n = 0;
k = 0;
p = string->val;
if (p != ((void *)0)) {
while (k <= from) {
start = n;
if (n >= len) {
break;
}
m = mbtab[*p];
n += m;
p += m;
k++;
}
k = 0;
end = start;
while (k < length) {
end = n;
if (n >= len) {
break;
}
m = mbtab[*p];
n += m;
p += m;
k++;
}
}
}
if (start > len) {
start = len;
}
if (start < 0) {
start = 0;
}
if (end > len) {
end = len;
}
if (end < 0) {
end = 0;
}
if (start > end) {
start = end;
}
n = end - start;
result->len = 0;
result->val = w = (unsigned char*)_emalloc(((n + 8)*sizeof(unsigned char)) );
if (w != ((void *)0)) {
p = string->val;
if (p != ((void *)0)) {
p += start;
result->len = n;
while (n > 0) {
*w++ = *p++;
n--;
}
}
*w++ = '\0';
*w++ = '\0';
*w++ = '\0';
*w = '\0';
} else {
result = ((void *)0);
}
} else {
mbfl_memory_device device;
struct collector_substr_data pc;
mbfl_convert_filter *decoder;
mbfl_convert_filter *encoder;
mbfl_memory_device_init(&device, length + 1, 0);
mbfl_string_init(result);
result->no_language = string->no_language;
result->no_encoding = string->no_encoding;
decoder = mbfl_convert_filter_new(
mbfl_no_encoding_wchar,
string->no_encoding,
mbfl_memory_device_output, 0, &device);
encoder = mbfl_convert_filter_new(
string->no_encoding,
mbfl_no_encoding_wchar,
collector_substr, 0, &pc);
if (decoder == ((void *)0) || encoder == ((void *)0)) {
mbfl_convert_filter_delete(encoder);
mbfl_convert_filter_delete(decoder);
return ((void *)0);
}
pc.next_filter = decoder;
pc.start = from;
pc.stop = from + length;
pc.output = 0;
p = string->val;
n = string->len;
if (p != ((void *)0)) {
while (n > 0) {
if ((*encoder->filter_function)(*p++, encoder) < 0) {
break;
}
n--;
}
}
mbfl_convert_filter_flush(encoder);
mbfl_convert_filter_flush(decoder);
result = mbfl_memory_device_result(&device, result);
mbfl_convert_filter_delete(encoder);
mbfl_convert_filter_delete(decoder);
}
return result;
}
mbfl_string *
mbfl_strcut(
mbfl_string *string,
mbfl_string *result,
int from,
int length)
{
mbfl_encoding *encoding;
int n, m, k, len, start, end;
unsigned char *p, *w;
const unsigned char *mbtab;
mbfl_memory_device device;
mbfl_convert_filter *encoder, *encoder_tmp, *decoder, *decoder_tmp;
encoding = mbfl_no2encoding(string->no_encoding);
if (encoding == ((void *)0) || string == ((void *)0) || result == ((void *)0)) {
return ((void *)0);
}
mbfl_string_init(result);
result->no_language = string->no_language;
result->no_encoding = string->no_encoding;
if ((encoding->flag & (0x00000001 | 0x00000010 | 0x00000020 | 0x00000100 | 0x00000200)) ||
encoding->mblen_table != ((void *)0)) {
len = string->len;
start = from;
end = from + length;
if (encoding->flag & (0x00000010 | 0x00000020)) {
start /= 2;
start *= 2;
end = length/2;
end *= 2;
end += start;
} else if (encoding->flag & (0x00000100 | 0x00000200)) {
start /= 4;
start *= 4;
end = length/4;
end *= 4;
end += start;
} else if (encoding->mblen_table != ((void *)0)) {
mbtab = encoding->mblen_table;
start = 0;
end = 0;
n = 0;
p = string->val;
if (p != ((void *)0)) {
for (;;) {
m = mbtab[*p];
n += m;
p += m;
if (n > from) {
break;
}
start = n;
}
k = start + length;
if (k >= string->len) {
end = string->len;
} else {
end = start;
while (n <= k) {
end = n;
m = mbtab[*p];
n += m;
p += m;
}
}
}
}
if (start > len) {
start = len;
}
if (start < 0) {
start = 0;
}
if (end > len) {
end = len;
}
if (end < 0) {
end = 0;
}
if (start > end) {
start = end;
}
n = end - start;
result->len = 0;
result->val = w = (unsigned char*)_emalloc(((n + 8)*sizeof(unsigned char)) );
if (w != ((void *)0)) {
result->len = n;
p = &(string->val[start]);
while (n > 0) {
*w++ = *p++;
n--;
}
*w++ = '\0';
*w++ = '\0';
*w++ = '\0';
*w = '\0';
} else {
result = ((void *)0);
}
} else {
encoder = mbfl_convert_filter_new(
string->no_encoding,
mbfl_no_encoding_wchar,
mbfl_filter_output_null, 0, 0);
encoder_tmp = mbfl_convert_filter_new(
string->no_encoding,
mbfl_no_encoding_wchar,
mbfl_filter_output_null, 0, 0);
decoder = mbfl_convert_filter_new(
mbfl_no_encoding_wchar,
string->no_encoding,
mbfl_memory_device_output, 0, &device);
decoder_tmp = mbfl_convert_filter_new(
mbfl_no_encoding_wchar,
string->no_encoding,
mbfl_memory_device_output, 0, &device);
if (encoder == ((void *)0) || encoder_tmp == ((void *)0) || decoder == ((void *)0) || decoder_tmp == ((void *)0)) {
mbfl_convert_filter_delete(encoder);
mbfl_convert_filter_delete(encoder_tmp);
mbfl_convert_filter_delete(decoder);
mbfl_convert_filter_delete(decoder_tmp);
return ((void *)0);
}
mbfl_memory_device_init(&device, length + 8, 0);
k = 0;
n = 0;
p = string->val;
if (p != ((void *)0)) {
while (n < from) {
(*encoder->filter_function)(*p++, encoder);
n++;
}
encoder->output_function = mbfl_filter_output_pipe;
encoder->data = decoder;
k = length - 20;
len = string->len;
while (n < len && device.pos < k) {
(*encoder->filter_function)(*p++, encoder);
n++;
}
for (;;) {
k = device.pos;
mbfl_convert_filter_copy(encoder, encoder_tmp);
mbfl_convert_filter_copy(decoder, decoder_tmp);
if (n >= len) {
break;
}
(*encoder->filter_function)(*p, encoder);
(*encoder->filter_flush)(encoder);
(*decoder->filter_flush)(decoder);
if (device.pos > length) {
break;
}
device.pos = k;
mbfl_convert_filter_copy(encoder_tmp, encoder);
mbfl_convert_filter_copy(decoder_tmp, decoder);
(*encoder->filter_function)(*p, encoder);
p++;
n++;
}
device.pos = k;
mbfl_convert_filter_copy(encoder_tmp, encoder);
mbfl_convert_filter_copy(decoder_tmp, decoder);
mbfl_convert_filter_flush(encoder);
mbfl_convert_filter_flush(decoder);
}
result = mbfl_memory_device_result(&device, result);
mbfl_convert_filter_delete(encoder);
mbfl_convert_filter_delete(encoder_tmp);
mbfl_convert_filter_delete(decoder);
mbfl_convert_filter_delete(decoder_tmp);
}
return result;
}
static int
filter_count_width(int c, void* data)
{
if (c >= 0x20) {
if (c < 0x2000 || (c > 0xff60 && c < 0xffa0)) {
(*(int *)data)++;
} else {
(*(int *)data) += 2;
}
}
return c;
}
int
mbfl_strwidth(mbfl_string *string)
{
int len, n;
unsigned char *p;
mbfl_convert_filter *filter;
len = 0;
if (string->len > 0 && string->val != ((void *)0)) {
filter = mbfl_convert_filter_new(
string->no_encoding,
mbfl_no_encoding_wchar,
filter_count_width, 0, &len);
if (filter == ((void *)0)) {
mbfl_convert_filter_delete(filter);
return -1;
}
p = string->val;
n = string->len;
while (n > 0) {
(*filter->filter_function)(*p++, filter);
n--;
}
mbfl_convert_filter_flush(filter);
mbfl_convert_filter_delete(filter);
}
return len;
}
struct collector_strimwidth_data {
mbfl_convert_filter *decoder;
mbfl_convert_filter *decoder_backup;
mbfl_memory_device device;
int from;
int width;
int outwidth;
int outchar;
int status;
int endpos;
};
static int
collector_strimwidth(int c, void* data)
{
struct collector_strimwidth_data *pc = (struct collector_strimwidth_data*)data;
switch (pc->status) {
case 10:
(*pc->decoder->filter_function)(c, pc->decoder);
break;
default:
if (pc->outchar >= pc->from) {
if (c >= 0x20) {
if (c < 0x2000 || (c > 0xff60 && c < 0xffa0)) {
pc->outwidth++;
} else {
pc->outwidth += 2;
}
}
if (pc->outwidth > pc->width) {
if (pc->status == 0) {
pc->endpos = pc->device.pos;
mbfl_convert_filter_copy(pc->decoder, pc->decoder_backup);
}
pc->status++;
(*pc->decoder->filter_function)(c, pc->decoder);
c = -1;
} else {
(*pc->decoder->filter_function)(c, pc->decoder);
}
}
pc->outchar++;
break;
}
return c;
}
mbfl_string *
mbfl_strimwidth(
mbfl_string *string,
mbfl_string *marker,
mbfl_string *result,
int from,
int width)
{
struct collector_strimwidth_data pc;
mbfl_convert_filter *encoder;
int n, mkwidth;
unsigned char *p;
if (string == ((void *)0) || result == ((void *)0)) {
return ((void *)0);
}
mbfl_string_init(result);
result->no_language = string->no_language;
result->no_encoding = string->no_encoding;
mbfl_memory_device_init(&pc.device, width, 0);
pc.decoder = mbfl_convert_filter_new(
mbfl_no_encoding_wchar,
string->no_encoding,
mbfl_memory_device_output, 0, &pc.device);
pc.decoder_backup = mbfl_convert_filter_new(
mbfl_no_encoding_wchar,
string->no_encoding,
mbfl_memory_device_output, 0, &pc.device);
encoder = mbfl_convert_filter_new(
string->no_encoding,
mbfl_no_encoding_wchar,
collector_strimwidth, 0, &pc);
if (pc.decoder == ((void *)0) || pc.decoder_backup == ((void *)0) || encoder == ((void *)0)) {
mbfl_convert_filter_delete(encoder);
mbfl_convert_filter_delete(pc.decoder);
mbfl_convert_filter_delete(pc.decoder_backup);
return ((void *)0);
}
mkwidth = 0;
if (marker) {
mkwidth = mbfl_strwidth(marker);
}
pc.from = from;
pc.width = width - mkwidth;
pc.outwidth = 0;
pc.outchar = 0;
pc.status = 0;
pc.endpos = 0;
p = string->val;
n = string->len;
if (p != ((void *)0)) {
while (n > 0) {
if ((*encoder->filter_function)(*p++, encoder) < 0) {
break;
}
n--;
}
mbfl_convert_filter_flush(encoder);
if (pc.status != 0 && mkwidth > 0) {
pc.width += mkwidth;
while (n > 0) {
if ((*encoder->filter_function)(*p++, encoder) < 0) {
break;
}
n--;
}
mbfl_convert_filter_flush(encoder);
if (pc.status != 1) {
pc.status = 10;
pc.device.pos = pc.endpos;
mbfl_convert_filter_copy(pc.decoder_backup, pc.decoder);
mbfl_convert_filter_reset(encoder, marker->no_encoding, mbfl_no_encoding_wchar);
p = marker->val;
n = marker->len;
while (n > 0) {
if ((*encoder->filter_function)(*p++, encoder) < 0) {
break;
}
n--;
}
mbfl_convert_filter_flush(encoder);
}
} else if (pc.status != 0) {
pc.device.pos = pc.endpos;
mbfl_convert_filter_copy(pc.decoder_backup, pc.decoder);
}
mbfl_convert_filter_flush(pc.decoder);
}
result = mbfl_memory_device_result(&pc.device, result);
mbfl_convert_filter_delete(encoder);
mbfl_convert_filter_delete(pc.decoder);
mbfl_convert_filter_delete(pc.decoder_backup);
return result;
}
struct collector_hantozen_data {
mbfl_convert_filter *next_filter;
int mode;
int status;
int cache;
};
static const unsigned char hankana2zenkata_table[64] = {
0x00,0x02,0x0C,0x0D,0x01,0xFB,0xF2,0xA1,0xA3,0xA5,
0xA7,0xA9,0xE3,0xE5,0xE7,0xC3,0xFC,0xA2,0xA4,0xA6,
0xA8,0xAA,0xAB,0xAD,0xAF,0xB1,0xB3,0xB5,0xB7,0xB9,
0xBB,0xBD,0xBF,0xC1,0xC4,0xC6,0xC8,0xCA,0xCB,0xCC,
0xCD,0xCE,0xCF,0xD2,0xD5,0xD8,0xDB,0xDE,0xDF,0xE0,
0xE1,0xE2,0xE4,0xE6,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,
0xEF,0xF3,0x9B,0x9C
};
static const unsigned char hankana2zenhira_table[64] = {
0x00,0x02,0x0C,0x0D,0x01,0xFB,0x92,0x41,0x43,0x45,
0x47,0x49,0x83,0x85,0x87,0x63,0xFC,0x42,0x44,0x46,
0x48,0x4A,0x4B,0x4D,0x4F,0x51,0x53,0x55,0x57,0x59,
0x5B,0x5D,0x5F,0x61,0x64,0x66,0x68,0x6A,0x6B,0x6C,
0x6D,0x6E,0x6F,0x72,0x75,0x78,0x7B,0x7E,0x7F,0x80,
0x81,0x82,0x84,0x86,0x88,0x89,0x8A,0x8B,0x8C,0x8D,
0x8F,0x93,0x9B,0x9C
};
static const unsigned char zenkana2hankana_table[84][2] = {
{0x67,0x00},{0x71,0x00},{0x68,0x00},{0x72,0x00},{0x69,0x00},
{0x73,0x00},{0x6A,0x00},{0x74,0x00},{0x6B,0x00},{0x75,0x00},
{0x76,0x00},{0x76,0x9E},{0x77,0x00},{0x77,0x9E},{0x78,0x00},
{0x78,0x9E},{0x79,0x00},{0x79,0x9E},{0x7A,0x00},{0x7A,0x9E},
{0x7B,0x00},{0x7B,0x9E},{0x7C,0x00},{0x7C,0x9E},{0x7D,0x00},
{0x7D,0x9E},{0x7E,0x00},{0x7E,0x9E},{0x7F,0x00},{0x7F,0x9E},
{0x80,0x00},{0x80,0x9E},{0x81,0x00},{0x81,0x9E},{0x6F,0x00},
{0x82,0x00},{0x82,0x9E},{0x83,0x00},{0x83,0x9E},{0x84,0x00},
{0x84,0x9E},{0x85,0x00},{0x86,0x00},{0x87,0x00},{0x88,0x00},
{0x89,0x00},{0x8A,0x00},{0x8A,0x9E},{0x8A,0x9F},{0x8B,0x00},
{0x8B,0x9E},{0x8B,0x9F},{0x8C,0x00},{0x8C,0x9E},{0x8C,0x9F},
{0x8D,0x00},{0x8D,0x9E},{0x8D,0x9F},{0x8E,0x00},{0x8E,0x9E},
{0x8E,0x9F},{0x8F,0x00},{0x90,0x00},{0x91,0x00},{0x92,0x00},
{0x93,0x00},{0x6C,0x00},{0x94,0x00},{0x6D,0x00},{0x95,0x00},
{0x6E,0x00},{0x96,0x00},{0x97,0x00},{0x98,0x00},{0x99,0x00},
{0x9A,0x00},{0x9B,0x00},{0x9C,0x00},{0x9C,0x00},{0x72,0x00},
{0x74,0x00},{0x66,0x00},{0x9D,0x00},{0x73,0x9E}
};
static int
collector_hantozen(int c, void* data)
{
int s, mode, n;
struct collector_hantozen_data *pc = (struct collector_hantozen_data*)data;
s = c;
mode = pc->mode;
if (mode & 0xf) {
if ((mode & 0x1) && c >= 0x21 && c <= 0x7d && c != 0x22 && c != 0x27 && c != 0x5c) {
s = c + 0xfee0;
} else if ((mode & 0x2) && ((c >= 0x41 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a))) {
s = c + 0xfee0;
} else if ((mode & 0x4) && c >= 0x30 && c <= 0x39) {
s = c + 0xfee0;
} else if ((mode & 0x8) && c == 0x20) {
s = 0x3000;
}
}
if (mode & 0xf0) {
if ((mode & 0x10) && c >= 0xff01 && c <= 0xff5d && c != 0xff02 && c != 0xff07 && c!= 0xff3c) {
s = c - 0xfee0;
} else if ((mode & 0x20) && ((c >= 0xff21 && c <= 0xff3a) || (c >= 0xff41 && c <= 0xff5a))) {
s = c - 0xfee0;
} else if ((mode & 0x40) && (c >= 0xff10 && c <= 0xff19)) {
s = c - 0xfee0;
} else if ((mode & 0x80) && (c == 0x3000)) {
s = 0x20;
} else if ((mode & 0x10) && (c == 0x2212)) {
s = 0x2d;
}
}
if (mode & 0x300) {
if ((mode & 0x100) && (mode & 0x800)) {
if (c >= 0xff61 && c <= 0xff9f) {
if (pc->status) {
n = (pc->cache - 0xff60) & 0x3f;
if (c == 0xff9e && ((n >= 22 && n <= 36) || (n >= 42 && n <= 46))) {
pc->status = 0;
s = 0x3001 + hankana2zenkata_table[n];
} else if (c == 0xff9e && n == 19) {
pc->status = 0;
s = 0x30f4;
} else if (c == 0xff9f && (n >= 42 && n <= 46)) {
pc->status = 0;
s = 0x3002 + hankana2zenkata_table[n];
} else {
pc->status = 1;
pc->cache = c;
s = 0x3000 + hankana2zenkata_table[n];
}
} else {
pc->status = 1;
pc->cache = c;
return c;
}
} else {
if (pc->status) {
n = (pc->cache - 0xff60) & 0x3f;
pc->status = 0;
(*pc->next_filter->filter_function)(0x3000 + hankana2zenkata_table[n], pc->next_filter);
}
}
} else if ((mode & 0x200) && (mode & 0x800)) {
if (c >= 0xff61 && c <= 0xff9f) {
if (pc->status) {
n = (pc->cache - 0xff60) & 0x3f;
if (c == 0xff9e && ((n >= 22 && n <= 36) || (n >= 42 && n <= 46))) {
pc->status = 0;
s = 0x3001 + hankana2zenhira_table[n];
} else if (c == 0xff9f && (n >= 42 && n <= 46)) {
pc->status = 0;
s = 0x3002 + hankana2zenhira_table[n];
} else {
pc->status = 1;
pc->cache = c;
s = 0x3000 + hankana2zenhira_table[n];
}
} else {
pc->status = 1;
pc->cache = c;
return c;
}
} else {
if (pc->status) {
n = (pc->cache - 0xff60) & 0x3f;
pc->status = 0;
(*pc->next_filter->filter_function)(0x3000 + hankana2zenhira_table[n], pc->next_filter);
}
}
} else if ((mode & 0x100) && c >= 0xff61 && c <= 0xff9f) {
s = 0x3000 + hankana2zenkata_table[c - 0xff60];
} else if ((mode & 0x200) && c >= 0xff61 && c <= 0xff9f) {
s = 0x3000 + hankana2zenhira_table[c - 0xff60];
}
}
if (mode & 0x3000) {
if ((mode & 0x1000) && c >= 0x30a1 && c <= 0x30f4) {
n = c - 0x30a1;
if (zenkana2hankana_table[n][1] != 0) {
(*pc->next_filter->filter_function)(0xff00 + zenkana2hankana_table[n][0], pc->next_filter);
s = 0xff00 + zenkana2hankana_table[n][1];
} else {
s = 0xff00 + zenkana2hankana_table[n][0];
}
} else if ((mode & 0x2000) && c >= 0x3041 && c <= 0x3093) {
n = c - 0x3041;
if (zenkana2hankana_table[n][1] != 0) {
(*pc->next_filter->filter_function)(0xff00 + zenkana2hankana_table[n][0], pc->next_filter);
s = 0xff00 + zenkana2hankana_table[n][1];
} else {
s = 0xff00 + zenkana2hankana_table[n][0];
}
} else if (c == 0x3001) {
s = 0xff64;
} else if (c == 0x3002) {
s = 0xff61;
} else if (c == 0x300c) {
s = 0xff62;
} else if (c == 0x300d) {
s = 0xff63;
} else if (c == 0x309b) {
s = 0xff9e;
} else if (c == 0x309c) {
s = 0xff9f;
} else if (c == 0x30fc) {
s = 0xff70;
} else if (c == 0x30fb) {
s = 0xff65;
}
} else if (mode & 0x30000) {
if ((mode & 0x10000) && c >= 0x3041 && c <= 0x3093) {
s = c + 0x60;
} else if ((mode & 0x20000) && c >= 0x30a1 && c <= 0x30f3) {
s = c - 0x60;
}
}
if (mode & 0x100000) {
if (c == 0x5c) {
s = 0xffe5;
} else if (c == 0xa5) {
s = 0xffe5;
} else if (c == 0x7e) {
s = 0xffe3;
} else if (c == 0x203e) {
s = 0xffe3;
} else if (c == 0x27) {
s = 0x2019;
} else if (c == 0x22) {
s = 0x201d;
}
} else if (mode & 0x200000) {
if (c == 0xffe5) {
s = 0x5c;
} else if (c == 0xff3c) {
s = 0x5c;
} else if (c == 0xffe3) {
s = 0x7e;
} else if (c == 0x203e) {
s = 0x7e;
} else if (c == 0x2018) {
s = 0x27;
} else if (c == 0x2019) {
s = 0x27;
} else if (c == 0x201c) {
s = 0x22;
} else if (c == 0x201d) {
s = 0x22;
}
}
if (mode & 0x400000) {
if (c == 0x5c) {
s = 0xff3c;
} else if (c == 0x7e) {
s = 0xff5e;
} else if (c == 0x27) {
s = 0xff07;
} else if (c == 0x22) {
s = 0xff02;
}
} else if (mode & 0x800000) {
if (c == 0xff3c) {
s = 0x5c;
} else if (c == 0xff5e) {
s = 0x7e;
} else if (c == 0xff07) {
s = 0x27;
} else if (c == 0xff02) {
s = 0x22;
}
}
return (*pc->next_filter->filter_function)(s, pc->next_filter);
}
static int
collector_hantozen_flush(struct collector_hantozen_data *pc)
{
int ret, n;
ret = 0;
if (pc->status) {
n = (pc->cache - 0xff60) & 0x3f;
if (pc->mode & 0x100) {
ret = (*pc->next_filter->filter_function)(0x3000 + hankana2zenkata_table[n], pc->next_filter);
} else if (pc->mode & 0x200) {
ret = (*pc->next_filter->filter_function)(0x3000 + hankana2zenhira_table[n], pc->next_filter);
}
pc->status = 0;
}
return ret;
}
mbfl_string *
mbfl_ja_jp_hantozen(
mbfl_string *string,
mbfl_string *result,
int mode)
{
int n;
unsigned char *p;
mbfl_encoding *encoding;
mbfl_memory_device device;
struct collector_hantozen_data pc;
mbfl_convert_filter *decoder;
mbfl_convert_filter *encoder;
if (string == ((void *)0) || result == ((void *)0)) {
return ((void *)0);
}
encoding = mbfl_no2encoding(string->no_encoding);
if (encoding == ((void *)0)) {
return ((void *)0);
}
mbfl_memory_device_init(&device, string->len, 0);
mbfl_string_init(result);
result->no_language = string->no_language;
result->no_encoding = string->no_encoding;
decoder = mbfl_convert_filter_new(
mbfl_no_encoding_wchar,
string->no_encoding,
mbfl_memory_device_output, 0, &device);
encoder = mbfl_convert_filter_new(
string->no_encoding,
mbfl_no_encoding_wchar,
collector_hantozen, 0, &pc);
if (decoder == ((void *)0) || encoder == ((void *)0)) {
mbfl_convert_filter_delete(encoder);
mbfl_convert_filter_delete(decoder);
return ((void *)0);
}
pc.next_filter = decoder;
pc.mode = mode;
pc.status = 0;
pc.cache = 0;
p = string->val;
n = string->len;
if (p != ((void *)0)) {
while (n > 0) {
if ((*encoder->filter_function)(*p++, encoder) < 0) {
break;
}
n--;
}
}
mbfl_convert_filter_flush(encoder);
collector_hantozen_flush(&pc);
mbfl_convert_filter_flush(decoder);
result = mbfl_memory_device_result(&device, result);
mbfl_convert_filter_delete(encoder);
mbfl_convert_filter_delete(decoder);
return result;
}
struct mime_header_encoder_data {
mbfl_convert_filter *conv1_filter;
mbfl_convert_filter *block_filter;
mbfl_convert_filter *conv2_filter;
mbfl_convert_filter *conv2_filter_backup;
mbfl_convert_filter *encod_filter;
mbfl_convert_filter *encod_filter_backup;
mbfl_memory_device outdev;
mbfl_memory_device tmpdev;
int status1;
int status2;
int prevpos;
int linehead;
int firstindent;
int encnamelen;
int lwsplen;
char encname[128];
char lwsp[16];
};
static int
mime_header_encoder_block_collector(int c, void *data)
{
int n;
struct mime_header_encoder_data *pe = (struct mime_header_encoder_data *)data;
switch (pe->status2) {
case 1:
pe->prevpos = pe->outdev.pos;
mbfl_convert_filter_copy(pe->conv2_filter, pe->conv2_filter_backup);
mbfl_convert_filter_copy(pe->encod_filter, pe->encod_filter_backup);
(*pe->conv2_filter->filter_function)(c, pe->conv2_filter);
(*pe->conv2_filter->filter_flush)(pe->conv2_filter);
(*pe->encod_filter->filter_flush)(pe->encod_filter);
n = pe->outdev.pos - pe->linehead + pe->firstindent;
pe->outdev.pos = pe->prevpos;
mbfl_convert_filter_copy(pe->conv2_filter_backup, pe->conv2_filter);
mbfl_convert_filter_copy(pe->encod_filter_backup, pe->encod_filter);
if (n >= 74) {
(*pe->conv2_filter->filter_flush)(pe->conv2_filter);
(*pe->encod_filter->filter_flush)(pe->encod_filter);
mbfl_memory_device_strncat(&pe->outdev, "\x3f\x3d", 2);
mbfl_memory_device_strncat(&pe->outdev, pe->lwsp, pe->lwsplen);
pe->linehead = pe->outdev.pos;
pe->firstindent = 0;
mbfl_memory_device_strncat(&pe->outdev, pe->encname, pe->encnamelen);
c = (*pe->conv2_filter->filter_function)(c, pe->conv2_filter);
} else {
c = (*pe->conv2_filter->filter_function)(c, pe->conv2_filter);
}
break;
default:
mbfl_memory_device_strncat(&pe->outdev, pe->encname, pe->encnamelen);
c = (*pe->conv2_filter->filter_function)(c, pe->conv2_filter);
pe->status2 = 1;
break;
}
return c;
}
static int
mime_header_encoder_collector(int c, void *data)
{
int n;
struct mime_header_encoder_data *pe = (struct mime_header_encoder_data *)data;
switch (pe->status1) {
case 11:
(*pe->block_filter->filter_function)(c, pe->block_filter);
break;
default:
if (c >= 0x21 && c < 0x7f) {
mbfl_memory_device_output(c, &pe->tmpdev);
pe->status1 = 1;
} else if (pe->status1 == 0 && c == 0x20) {
mbfl_memory_device_output(c, &pe->tmpdev);
} else {
if (pe->tmpdev.pos < 74 && c == 0x20) {
n = pe->outdev.pos - pe->linehead + pe->tmpdev.pos + pe->firstindent;
if (n > 74) {
mbfl_memory_device_strncat(&pe->outdev, pe->lwsp, pe->lwsplen);
pe->linehead = pe->outdev.pos;
pe->firstindent = 0;
} else if (pe->outdev.pos > 0) {
mbfl_memory_device_output(0x20, &pe->outdev);
}
mbfl_memory_device_devcat(&pe->outdev, &pe->tmpdev);
mbfl_memory_device_reset(&pe->tmpdev);
pe->status1 = 0;
} else {
n = pe->outdev.pos - pe->linehead + pe->encnamelen + pe->firstindent;
if (n > 60) {
mbfl_memory_device_strncat(&pe->outdev, pe->lwsp, pe->lwsplen);
pe->linehead = pe->outdev.pos;
pe->firstindent = 0;
} else if (pe->outdev.pos > 0) {
mbfl_memory_device_output(0x20, &pe->outdev);
}
mbfl_convert_filter_devcat(pe->block_filter, &pe->tmpdev);
mbfl_memory_device_reset(&pe->tmpdev);
(*pe->block_filter->filter_function)(c, pe->block_filter);
pe->status1 = 11;
}
}
break;
}
return c;
}
mbfl_string *
mime_header_encoder_result(struct mime_header_encoder_data *pe, mbfl_string *result)
{
if (pe->status1 >= 10) {
(*pe->conv2_filter->filter_flush)(pe->conv2_filter);
(*pe->encod_filter->filter_flush)(pe->encod_filter);
mbfl_memory_device_strncat(&pe->outdev, "\x3f\x3d", 2);
} else if (pe->tmpdev.pos > 0) {
if (pe->outdev.pos > 0) {
if ((pe->outdev.pos - pe->linehead + pe->tmpdev.pos) > 74) {
mbfl_memory_device_strncat(&pe->outdev, pe->lwsp, pe->lwsplen);
} else {
mbfl_memory_device_output(0x20, &pe->outdev);
}
}
mbfl_memory_device_devcat(&pe->outdev, &pe->tmpdev);
}
mbfl_memory_device_reset(&pe->tmpdev);
pe->prevpos = 0;
pe->linehead = 0;
pe->status1 = 0;
pe->status2 = 0;
return mbfl_memory_device_result(&pe->outdev, result);
}
struct mime_header_encoder_data*
mime_header_encoder_new(
enum mbfl_no_encoding incode,
enum mbfl_no_encoding outcode,
enum mbfl_no_encoding transenc)
{
int n;
const char *s;
mbfl_encoding *outencoding;
struct mime_header_encoder_data *pe;
outencoding = mbfl_no2encoding(outcode);
if (outencoding == ((void *)0) || outencoding->mime_name == ((void *)0) || outencoding->mime_name[0] == '\0') {
return ((void *)0);
}
pe = (struct mime_header_encoder_data*)_emalloc((sizeof(struct mime_header_encoder_data)) );
if (pe == ((void *)0)) {
return ((void *)0);
}
mbfl_memory_device_init(&pe->outdev, 0, 0);
mbfl_memory_device_init(&pe->tmpdev, 0, 0);
pe->prevpos = 0;
pe->linehead = 0;
pe->firstindent = 0;
pe->status1 = 0;
pe->status2 = 0;
n = 0;
pe->encname[n++] = 0x3d;
pe->encname[n++] = 0x3f;
s = outencoding->mime_name;
while (*s) {
pe->encname[n++] = *s++;
}
pe->encname[n++] = 0x3f;
if (transenc == mbfl_no_encoding_qprint) {
pe->encname[n++] = 0x51;
} else {
pe->encname[n++] = 0x42;
transenc = mbfl_no_encoding_base64;
}
pe->encname[n++] = 0x3f;
pe->encname[n] = '\0';
pe->encnamelen = n;
n = 0;
pe->lwsp[n++] = 0x0d;
pe->lwsp[n++] = 0x0a;
pe->lwsp[n++] = 0x20;
pe->lwsp[n] = '\0';
pe->lwsplen = n;
pe->encod_filter = mbfl_convert_filter_new(outcode, transenc, mbfl_memory_device_output, 0, &(pe->outdev));
pe->encod_filter_backup = mbfl_convert_filter_new(outcode, transenc, mbfl_memory_device_output, 0, &(pe->outdev));
pe->conv2_filter = mbfl_convert_filter_new(mbfl_no_encoding_wchar, outcode, mbfl_filter_output_pipe, 0, pe->encod_filter);
pe->conv2_filter_backup = mbfl_convert_filter_new(mbfl_no_encoding_wchar, outcode, mbfl_filter_output_pipe, 0, pe->encod_filter);
pe->block_filter = mbfl_convert_filter_new(mbfl_no_encoding_wchar, mbfl_no_encoding_wchar, mime_header_encoder_block_collector, 0, pe);
pe->conv1_filter = mbfl_convert_filter_new(incode, mbfl_no_encoding_wchar, mime_header_encoder_collector, 0, pe);
if (pe->encod_filter == ((void *)0) ||
pe->encod_filter_backup == ((void *)0) ||
pe->conv2_filter == ((void *)0) ||
pe->conv2_filter_backup == ((void *)0) ||
pe->conv1_filter == ((void *)0)) {
mime_header_encoder_delete(pe);
return ((void *)0);
}
if (transenc == mbfl_no_encoding_qprint) {
pe->encod_filter->status |= 0x1000000;
pe->encod_filter_backup->status |= 0x1000000;
} else {
pe->encod_filter->status |= 0x1000000;
pe->encod_filter_backup->status |= 0x1000000;
}
return pe;
}
void
mime_header_encoder_delete(struct mime_header_encoder_data *pe)
{
if (pe) {
mbfl_convert_filter_delete(pe->conv1_filter);
mbfl_convert_filter_delete(pe->block_filter);
mbfl_convert_filter_delete(pe->conv2_filter);
mbfl_convert_filter_delete(pe->conv2_filter_backup);
mbfl_convert_filter_delete(pe->encod_filter);
mbfl_convert_filter_delete(pe->encod_filter_backup);
mbfl_memory_device_clear(&pe->outdev);
mbfl_memory_device_clear(&pe->tmpdev);
_efree(((void*)pe) );
}
}
int
mime_header_encoder_feed(int c, struct mime_header_encoder_data *pe)
{
return (*pe->conv1_filter->filter_function)(c, pe->conv1_filter);
}
mbfl_string *
mbfl_mime_header_encode(
mbfl_string *string,
mbfl_string *result,
enum mbfl_no_encoding outcode,
enum mbfl_no_encoding encoding,
const char *linefeed,
int indent)
{
int n;
unsigned char *p;
struct mime_header_encoder_data *pe;
mbfl_string_init(result);
result->no_language = string->no_language;
result->no_encoding = mbfl_no_encoding_ascii;
pe = mime_header_encoder_new(string->no_encoding, outcode, encoding);
if (pe == ((void *)0)) {
return ((void *)0);
}
if (linefeed != ((void *)0)) {
n = 0;
while (*linefeed && n < 8) {
pe->lwsp[n++] = *linefeed++;
}
pe->lwsp[n++] = 0x20;
pe->lwsp[n] = '\0';
pe->lwsplen = n;
}
if (indent > 0 && indent < 74) {
pe->firstindent = indent;
}
n = string->len;
p = string->val;
while (n > 0) {
(*pe->conv1_filter->filter_function)(*p++, pe->conv1_filter);
n--;
}
result = mime_header_encoder_result(pe, result);
mime_header_encoder_delete(pe);
return result;
}
struct mime_header_decoder_data {
mbfl_convert_filter *deco_filter;
mbfl_convert_filter *conv1_filter;
mbfl_convert_filter *conv2_filter;
mbfl_memory_device outdev;
mbfl_memory_device tmpdev;
int cspos;
int status;
enum mbfl_no_encoding encoding;
enum mbfl_no_encoding incode;
enum mbfl_no_encoding outcode;
};
static int
mime_header_decoder_collector(int c, void* data)
{
mbfl_encoding *encoding;
struct mime_header_decoder_data *pd = (struct mime_header_decoder_data*)data;
switch (pd->status) {
case 1:
if (c == 0x3f) {
mbfl_memory_device_output(c, &pd->tmpdev);
pd->cspos = pd->tmpdev.pos;
pd->status = 2;
} else {
mbfl_convert_filter_devcat(pd->conv1_filter, &pd->tmpdev);
mbfl_memory_device_reset(&pd->tmpdev);
if (c == 0x3d) {
mbfl_memory_device_output(c, &pd->tmpdev);
} else if (c == 0x0d || c == 0x0a) {
pd->status = 9;
} else {
(*pd->conv1_filter->filter_function)(c, pd->conv1_filter);
pd->status = 0;
}
}
break;
case 2:
if (c == 0x3f) {
mbfl_memory_device_output('\0', &pd->tmpdev);
encoding = mbfl_name2encoding(&pd->tmpdev.buffer[pd->cspos]);
if (encoding != ((void *)0)) {
pd->incode = encoding->no_encoding;
pd->status = 3;
}
mbfl_memory_device_unput(&pd->tmpdev);
mbfl_memory_device_output(c, &pd->tmpdev);
} else {
mbfl_memory_device_output(c, &pd->tmpdev);
if (pd->tmpdev.pos > 100) {
pd->status = 0;
} else if (c == 0x0d || c == 0x0a) {
mbfl_memory_device_unput(&pd->tmpdev);
pd->status = 9;
}
if (pd->status != 2) {
mbfl_convert_filter_devcat(pd->conv1_filter, &pd->tmpdev);
mbfl_memory_device_reset(&pd->tmpdev);
}
}
break;
case 3:
mbfl_memory_device_output(c, &pd->tmpdev);
if (c == 0x42 || c == 0x62) {
pd->encoding = mbfl_no_encoding_base64;
pd->status = 4;
} else if (c == 0x51 || c == 0x71) {
pd->encoding = mbfl_no_encoding_qprint;
pd->status = 4;
} else {
if (c == 0x0d || c == 0x0a) {
mbfl_memory_device_unput(&pd->tmpdev);
pd->status = 9;
} else {
pd->status = 0;
}
mbfl_convert_filter_devcat(pd->conv1_filter, &pd->tmpdev);
mbfl_memory_device_reset(&pd->tmpdev);
}
break;
case 4:
mbfl_memory_device_output(c, &pd->tmpdev);
if (c == 0x3f) {
mbfl_convert_filter_reset(pd->conv1_filter, pd->incode, mbfl_no_encoding_wchar);
mbfl_convert_filter_reset(pd->deco_filter, pd->encoding, mbfl_no_encoding_8bit);
pd->status = 5;
} else {
if (c == 0x0d || c == 0x0a) {
mbfl_memory_device_unput(&pd->tmpdev);
pd->status = 9;
} else {
pd->status = 0;
}
mbfl_convert_filter_devcat(pd->conv1_filter, &pd->tmpdev);
}
mbfl_memory_device_reset(&pd->tmpdev);
break;
case 5:
if (c == 0x3f) {
pd->status = 6;
} else {
(*pd->deco_filter->filter_function)(c, pd->deco_filter);
}
break;
case 6:
if (c == 0x3d) {
(*pd->deco_filter->filter_flush)(pd->deco_filter);
(*pd->conv1_filter->filter_flush)(pd->conv1_filter);
mbfl_convert_filter_reset(pd->conv1_filter, mbfl_no_encoding_ascii, mbfl_no_encoding_wchar);
pd->status = 7;
} else {
(*pd->deco_filter->filter_function)(0x3f, pd->deco_filter);
if (c != 0x3f) {
(*pd->deco_filter->filter_function)(c, pd->deco_filter);
pd->status = 5;
}
}
break;
case 7:
if (c == 0x0d || c == 0x0a) {
pd->status = 8;
} else {
mbfl_memory_device_output(c, &pd->tmpdev);
if (c == 0x3d) {
pd->status = 1;
} else if (c != 0x20 && c != 0x09) {
mbfl_convert_filter_devcat(pd->conv1_filter, &pd->tmpdev);
mbfl_memory_device_reset(&pd->tmpdev);
pd->status = 0;
}
}
break;
case 8:
case 9:
if (c != 0x0d && c != 0x0a && c != 0x20 && c != 0x09) {
if (c == 0x3d) {
if (pd->status == 8) {
mbfl_memory_device_output(0x20, &pd->tmpdev);
} else {
(*pd->conv1_filter->filter_function)(0x20, pd->conv1_filter);
}
mbfl_memory_device_output(c, &pd->tmpdev);
pd->status = 1;
} else {
mbfl_memory_device_output(0x20, &pd->tmpdev);
mbfl_memory_device_output(c, &pd->tmpdev);
mbfl_convert_filter_devcat(pd->conv1_filter, &pd->tmpdev);
mbfl_memory_device_reset(&pd->tmpdev);
pd->status = 0;
}
}
break;
default:
if (c == 0x0d || c == 0x0a) {
pd->status = 9;
} else if (c == 0x3d) {
mbfl_memory_device_output(c, &pd->tmpdev);
pd->status = 1;
} else {
(*pd->conv1_filter->filter_function)(c, pd->conv1_filter);
}
break;
}
return c;
}
mbfl_string *
mime_header_decoder_result(struct mime_header_decoder_data *pd, mbfl_string *result)
{
switch (pd->status) {
case 1:
case 2:
case 3:
case 4:
case 7:
case 8:
case 9:
mbfl_convert_filter_devcat(pd->conv1_filter, &pd->tmpdev);
break;
case 5:
case 6:
(*pd->deco_filter->filter_flush)(pd->deco_filter);
(*pd->conv1_filter->filter_flush)(pd->conv1_filter);
break;
}
(*pd->conv2_filter->filter_flush)(pd->conv2_filter);
mbfl_memory_device_reset(&pd->tmpdev);
pd->status = 0;
return mbfl_memory_device_result(&pd->outdev, result);
}
struct mime_header_decoder_data*
mime_header_decoder_new(enum mbfl_no_encoding outcode)
{
struct mime_header_decoder_data *pd;
pd = (struct mime_header_decoder_data*)_emalloc((sizeof(struct mime_header_decoder_data)) );
if (pd == ((void *)0)) {
return ((void *)0);
}
mbfl_memory_device_init(&pd->outdev, 0, 0);
mbfl_memory_device_init(&pd->tmpdev, 0, 0);
pd->cspos = 0;
pd->status = 0;
pd->encoding = mbfl_no_encoding_pass;
pd->incode = mbfl_no_encoding_ascii;
pd->outcode = outcode;
pd->conv2_filter = mbfl_convert_filter_new(mbfl_no_encoding_wchar, pd->outcode, mbfl_memory_device_output, 0, &pd->outdev);
pd->conv1_filter = mbfl_convert_filter_new(pd->incode, mbfl_no_encoding_wchar, mbfl_filter_output_pipe, 0, pd->conv2_filter);
pd->deco_filter = mbfl_convert_filter_new(pd->encoding, mbfl_no_encoding_8bit, mbfl_filter_output_pipe, 0, pd->conv1_filter);
if (pd->conv1_filter == ((void *)0) || pd->conv2_filter == ((void *)0) || pd->deco_filter == ((void *)0)) {
mime_header_decoder_delete(pd);
return ((void *)0);
}
return pd;
}
void
mime_header_decoder_delete(struct mime_header_decoder_data *pd)
{
if (pd) {
mbfl_convert_filter_delete(pd->conv2_filter);
mbfl_convert_filter_delete(pd->conv1_filter);
mbfl_convert_filter_delete(pd->deco_filter);
mbfl_memory_device_clear(&pd->outdev);
mbfl_memory_device_clear(&pd->tmpdev);
_efree(((void*)pd) );
}
}
int
mime_header_decoder_feed(int c, struct mime_header_decoder_data *pd)
{
return mime_header_decoder_collector(c, pd);
}
mbfl_string *
mbfl_mime_header_decode(
mbfl_string *string,
mbfl_string *result,
enum mbfl_no_encoding outcode)
{
int n;
unsigned char *p;
struct mime_header_decoder_data *pd;
mbfl_string_init(result);
result->no_language = string->no_language;
result->no_encoding = outcode;
pd = mime_header_decoder_new(outcode);
if (pd == ((void *)0)) {
return ((void *)0);
}
n = string->len;
p = string->val;
while (n > 0) {
mime_header_decoder_collector(*p++, pd);
n--;
}
result = mime_header_decoder_result(pd, result);
mime_header_decoder_delete(pd);
return result;
}
struct collector_htmlnumericentity_data {
mbfl_convert_filter *decoder;
int status;
int cache;
int digit;
int *convmap;
int mapsize;
};
static int
collector_encode_htmlnumericentity(int c, void *data)
{
struct collector_htmlnumericentity_data *pc = (struct collector_htmlnumericentity_data *)data;
int f, n, s, r, d, size, *mapelm;
size = pc->mapsize;
f = 0;
n = 0;
while (n < size) {
mapelm = &(pc->convmap[n*4]);
if (c >= mapelm[0] && c <= mapelm[1]) {
s = (c + mapelm[2]) & mapelm[3];
if (s >= 0) {
(*pc->decoder->filter_function)(0x26, pc->decoder);
(*pc->decoder->filter_function)(0x23, pc->decoder);
r = 100000000;
s %= r;
while (r > 0) {
d = s/r;
if (d || f) {
f = 1;
s %= r;
(*pc->decoder->filter_function)(mbfl_hexchar_table[d], pc->decoder);
}
r /= 10;
}
if (!f) {
f = 1;
(*pc->decoder->filter_function)(mbfl_hexchar_table[0], pc->decoder);
}
(*pc->decoder->filter_function)(0x3b, pc->decoder);
}
}
if (f) {
break;
}
n++;
}
if (!f) {
(*pc->decoder->filter_function)(c, pc->decoder);
}
return c;
}
static int
collector_decode_htmlnumericentity(int c, void *data)
{
struct collector_htmlnumericentity_data *pc = (struct collector_htmlnumericentity_data *)data;
int f, n, s, r, d, size, *mapelm;
switch (pc->status) {
case 1:
if (c == 0x23) {
pc->status = 2;
} else {
pc->status = 0;
(*pc->decoder->filter_function)(0x26, pc->decoder);
(*pc->decoder->filter_function)(c, pc->decoder);
}
break;
case 2:
if (c >= 0x30 && c <= 0x39) {
pc->cache = c - 0x30;
pc->status = 3;
pc->digit = 1;
} else {
pc->status = 0;
(*pc->decoder->filter_function)(0x26, pc->decoder);
(*pc->decoder->filter_function)(0x23, pc->decoder);
(*pc->decoder->filter_function)(c, pc->decoder);
}
break;
case 3:
s = 0;
f = 0;
if (c >= 0x30 && c <= 0x39) {
if (pc->digit > 9) {
pc->status = 0;
s = pc->cache;
f = 1;
} else {
s = pc->cache*10 + c - 0x30;
pc->cache = s;
pc->digit++;
}
} else {
pc->status = 0;
s = pc->cache;
f = 1;
n = 0;
size = pc->mapsize;
while (n < size) {
mapelm = &(pc->convmap[n*4]);
d = s - mapelm[2];
if (d >= mapelm[0] && d <= mapelm[1]) {
f = 0;
(*pc->decoder->filter_function)(d, pc->decoder);
if (c != 0x3b) {
(*pc->decoder->filter_function)(c, pc->decoder);
}
break;
}
n++;
}
}
if (f) {
(*pc->decoder->filter_function)(0x26, pc->decoder);
(*pc->decoder->filter_function)(0x23, pc->decoder);
r = 1;
n = pc->digit;
while (n > 0) {
r *= 10;
n--;
}
s %= r;
r /= 10;
while (r > 0) {
d = s/r;
s %= r;
r /= 10;
(*pc->decoder->filter_function)(mbfl_hexchar_table[d], pc->decoder);
}
(*pc->decoder->filter_function)(c, pc->decoder);
}
break;
default:
if (c == 0x26) {
pc->status = 1;
} else {
(*pc->decoder->filter_function)(c, pc->decoder);
}
break;
}
return c;
}
mbfl_string *
mbfl_html_numeric_entity(
mbfl_string *string,
mbfl_string *result,
int *convmap,
int mapsize,
int type)
{
struct collector_htmlnumericentity_data pc;
mbfl_memory_device device;
mbfl_convert_filter *encoder;
int n;
unsigned char *p;
if (string == ((void *)0) || result == ((void *)0)) {
return ((void *)0);
}
mbfl_string_init(result);
result->no_language = string->no_language;
result->no_encoding = string->no_encoding;
mbfl_memory_device_init(&device, string->len, 0);
pc.decoder = mbfl_convert_filter_new(
mbfl_no_encoding_wchar,
string->no_encoding,
mbfl_memory_device_output, 0, &device);
if (type == 0) {
encoder = mbfl_convert_filter_new(
string->no_encoding,
mbfl_no_encoding_wchar,
collector_encode_htmlnumericentity, 0, &pc);
} else {
encoder = mbfl_convert_filter_new(
string->no_encoding,
mbfl_no_encoding_wchar,
collector_decode_htmlnumericentity, 0, &pc);
}
if (pc.decoder == ((void *)0) || encoder == ((void *)0)) {
mbfl_convert_filter_delete(encoder);
mbfl_convert_filter_delete(pc.decoder);
return ((void *)0);
}
pc.status = 0;
pc.cache = 0;
pc.digit = 0;
pc.convmap = convmap;
pc.mapsize = mapsize;
p = string->val;
n = string->len;
if (p != ((void *)0)) {
while (n > 0) {
if ((*encoder->filter_function)(*p++, encoder) < 0) {
break;
}
n--;
}
}
mbfl_convert_filter_flush(encoder);
mbfl_convert_filter_flush(pc.decoder);
result = mbfl_memory_device_result(&device, result);
mbfl_convert_filter_delete(encoder);
mbfl_convert_filter_delete(pc.decoder);
return result;
}
# 8025 "mbfilter.c"
static const unsigned short iso8859_2_ucs_table[] = {
0x00A0,0x0104,0x02D8,0x0141,0x00A4,0x013D,0x015A,0x00A7,
0x00A8,0x0160,0x015E,0x0164,0x0179,0x00AD,0x017D,0x017B,
0x00B0,0x0105,0x02DB,0x0142,0x00B4,0x013E,0x015B,0x02C7,
0x00B8,0x0161,0x015F,0x0165,0x017A,0x02DD,0x017E,0x017C,
0x0154,0x00C1,0x00C2,0x0102,0x00C4,0x0139,0x0106,0x00C7,
0x010C,0x00C9,0x0118,0x00CB,0x011A,0x00CD,0x00CE,0x010E,
0x0110,0x0143,0x0147,0x00D3,0x00D4,0x0150,0x00D6,0x00D7,
0x0158,0x016E,0x00DA,0x0170,0x00DC,0x00DD,0x0162,0x00DF,
0x0155,0x00E1,0x00E2,0x0103,0x00E4,0x013A,0x0107,0x00E7,
0x010D,0x00E9,0x0119,0x00EB,0x011B,0x00ED,0x00EE,0x010F,
0x0111,0x0144,0x0148,0x00F3,0x00F4,0x0151,0x00F6,0x00F7,
0x0159,0x016F,0x00FA,0x0171,0x00FC,0x00FD,0x0163,0x02D9
};
static const unsigned short iso8859_3_ucs_table[] = {
0x00A0,0x0126,0x02D8,0x00A3,0x00A4,0x0000,0x0124,0x00A7,
0x00A8,0x0130,0x015E,0x011E,0x0134,0x00AD,0x0000,0x017B,
0x00B0,0x0127,0x00B2,0x00B3,0x00B4,0x00B5,0x0125,0x00B7,
0x00B8,0x0131,0x015F,0x011F,0x0135,0x00BD,0x0000,0x017C,
0x00C0,0x00C1,0x00C2,0x0000,0x00C4,0x010A,0x0108,0x00C7,
0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,
0x0000,0x00D1,0x00D2,0x00D3,0x00D4,0x0120,0x00D6,0x00D7,
0x011C,0x00D9,0x00DA,0x00DB,0x00DC,0x016C,0x015C,0x00DF,
0x00E0,0x00E1,0x00E2,0x0000,0x00E4,0x010B,0x0109,0x00E7,
0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,
0x0000,0x00F1,0x00F2,0x00F3,0x00F4,0x0121,0x00F6,0x00F7,
0x011D,0x00F9,0x00FA,0x00FB,0x00FC,0x016D,0x015D,0x02D9
};
static const unsigned short iso8859_4_ucs_table[] = {
0x00A0,0x0104,0x0138,0x0156,0x00A4,0x0128,0x013B,0x00A7,
0x00A8,0x0160,0x0112,0x0122,0x0166,0x00AD,0x017D,0x00AF,
0x00B0,0x0105,0x02DB,0x0157,0x00B4,0x0129,0x013C,0x02C7,
0x00B8,0x0161,0x0113,0x0123,0x0167,0x014A,0x017E,0x014B,
0x0100,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x012E,
0x010C,0x00C9,0x0118,0x00CB,0x0116,0x00CD,0x00CE,0x012A,
0x0110,0x0145,0x014C,0x0136,0x00D4,0x00D5,0x00D6,0x00D7,
0x00D8,0x0172,0x00DA,0x00DB,0x00DC,0x0168,0x016A,0x00DF,
0x0101,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x012F,
0x010D,0x00E9,0x0119,0x00EB,0x0117,0x00ED,0x00EE,0x012B,
0x0111,0x0146,0x014D,0x0137,0x00F4,0x00F5,0x00F6,0x00F7,
0x00F8,0x0173,0x00FA,0x00FB,0x00FC,0x0169,0x016B,0x02D9
};
static const unsigned short iso8859_5_ucs_table[] = {
0x00A0,0x0401,0x0402,0x0403,0x0404,0x0405,0x0406,0x0407,
0x0408,0x0409,0x040A,0x040B,0x040C,0x00AD,0x040E,0x040F,
0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417,
0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,0x041F,
0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,0x0427,
0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F,
0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437,
0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F,
0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447,
0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F,
0x2116,0x0451,0x0452,0x0453,0x0454,0x0455,0x0456,0x0457,
0x0458,0x0459,0x045A,0x045B,0x045C,0x00A7,0x045E,0x045F
};
static const unsigned short iso8859_6_ucs_table[] = {
0x00A0,0x0000,0x0000,0x0000,0x00A4,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x060C,0x00AD,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x061B,0x0000,0x0000,0x0000,0x061F,
0x0000,0x0621,0x0622,0x0623,0x0624,0x0625,0x0626,0x0627,
0x0628,0x0629,0x062A,0x062B,0x062C,0x062D,0x062E,0x062F,
0x0630,0x0631,0x0632,0x0633,0x0634,0x0635,0x0636,0x0637,
0x0638,0x0639,0x063A,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0640,0x0641,0x0642,0x0643,0x0644,0x0645,0x0646,0x0647,
0x0648,0x0649,0x064A,0x064B,0x064C,0x064D,0x064E,0x064F,
0x0650,0x0651,0x0652,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x060C,0x00AD,0x0000,0x0000
};
static const unsigned short iso8859_7_ucs_table[] = {
0x00A0,0x2018,0x2019,0x00A3,0x0000,0x0000,0x00A6,0x00A7,
0x00A8,0x00A9,0x0000,0x00AB,0x00AC,0x00AD,0x0000,0x2015,
0x00B0,0x00B1,0x00B2,0x00B3,0x0384,0x0385,0x0386,0x00B7,
0x0388,0x0389,0x038A,0x00BB,0x038C,0x00BD,0x038E,0x038F,
0x0390,0x0391,0x0392,0x0393,0x0394,0x0395,0x0396,0x0397,
0x0398,0x0399,0x039A,0x039B,0x039C,0x039D,0x039E,0x039F,
0x03A0,0x03A1,0x0000,0x03A3,0x03A4,0x03A5,0x03A6,0x03A7,
0x03A8,0x03A9,0x03AA,0x03AB,0x03AC,0x03AD,0x03AE,0x03AF,
0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,0x03B5,0x03B6,0x03B7,
0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,0x03BD,0x03BE,0x03BF,
0x03C0,0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,
0x03C8,0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,0x0000
};
static const unsigned short iso8859_8_ucs_table[] = {
0x00A0,0x0000,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
0x00A8,0x00A9,0x00D7,0x00AB,0x00AC,0x00AD,0x00AE,0x203E,
0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
0x00B8,0x00B9,0x00F7,0x00BB,0x00BC,0x00BD,0x00BE,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x2017,
0x05D0,0x05D1,0x05D2,0x05D3,0x05D4,0x05D5,0x05D6,0x05D7,
0x05D8,0x05D9,0x05DA,0x05DB,0x05DC,0x05DD,0x05DE,0x05DF,
0x05E0,0x05E1,0x05E2,0x05E3,0x05E4,0x05E5,0x05E6,0x05E7,
0x05E8,0x05E9,0x05EA,0x0000,0x0000,0x0000,0x0000,0x0000
};
static const unsigned short iso8859_9_ucs_table[] = {
0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5,0x00A6,0x00A7,
0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
0x00B0,0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x00B7,
0x00B8,0x00B9,0x00BA,0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,
0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,
0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,
0x011E,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,
0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x0130,0x015E,0x00DF,
0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,
0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,
0x011F,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7,
0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x0131,0x015F,0x00FF
};
static const unsigned short iso8859_10_ucs_table[] = {
0x00A0,0x0104,0x0112,0x0122,0x0124,0x0128,0x0136,0x00A7,
0x013B,0x0110,0x0160,0x0166,0x017D,0x00AD,0x016A,0x014A,
0x00B0,0x0105,0x0113,0x0123,0x012B,0x0129,0x0137,0x00B7,
0x013C,0x0111,0x0161,0x0167,0x017E,0x2015,0x016B,0x014B,
0x0100,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x012E,
0x010C,0x00C9,0x0118,0x00CB,0x0116,0x00CD,0x00CE,0x00CF,
0x00D0,0x0145,0x014C,0x00D3,0x00D4,0x00D5,0x00D6,0x0168,
0x00D8,0x0172,0x00DA,0x00DB,0x00DC,0x00DD,0x00DE,0x00DF,
0x0101,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x012F,
0x010D,0x00E9,0x0119,0x00EB,0x0117,0x00ED,0x00EE,0x00EF,
0x00F0,0x0146,0x014D,0x00F3,0x00F4,0x00F5,0x00F6,0x0169,
0x00F8,0x0173,0x00FA,0x00FB,0x00FC,0x00FD,0x00FE,0x0138
};
static const unsigned short iso8859_13_ucs_table[] = {
0x00A0,0x201D,0x00A2,0x00A3,0x00A4,0x201E,0x00A6,0x00A7,
0x00D8,0x00A9,0x0156,0x00AB,0x00AC,0x00AD,0x00AE,0x00C6,
0x00B0,0x00B1,0x00B2,0x00B3,0x201C,0x00B5,0x00B6,0x00B7,
0x00F8,0x00B9,0x0157,0x00BB,0x00BC,0x00BD,0x00BE,0x00E6,
0x0104,0x012E,0x0100,0x0106,0x00C4,0x00C5,0x0118,0x0112,
0x010C,0x00C9,0x0179,0x0116,0x0122,0x0136,0x012A,0x013B,
0x0160,0x0143,0x0145,0x00D3,0x014C,0x00D5,0x00D6,0x00D7,
0x0172,0x0141,0x015A,0x016A,0x00DC,0x017B,0x017D,0x00DF,
0x0105,0x012F,0x0101,0x0107,0x00E4,0x00E5,0x0119,0x0113,
0x010D,0x00E9,0x017A,0x0117,0x0123,0x0137,0x012B,0x013C,
0x0161,0x0144,0x0146,0x00F3,0x014D,0x00F5,0x00F6,0x00F7,
0x0173,0x0142,0x015B,0x016B,0x00FC,0x017C,0x017E,0x2019
};
static const unsigned short iso8859_14_ucs_table[] = {
0x00A0,0x1E02,0x1E03,0x00A3,0x010A,0x010B,0x1E0A,0x00A7,
0x1E80,0x00A9,0x1E82,0x1E0B,0x1EF2,0x00AD,0x00AE,0x0178,
0x1E1E,0x1E1F,0x0120,0x0121,0x1E40,0x1E41,0x00B6,0x1E56,
0x1E81,0x1E57,0x1E83,0x1E60,0x1EF3,0x1E84,0x1E85,0x1E61,
0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,
0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,
0x0174,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x1E6A,
0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x00DD,0x0176,0x00DF,
0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,
0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,
0x0175,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x1E6B,
0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x00FD,0x0177,0x00FF
};
static const unsigned short iso8859_15_ucs_table[] = {
0x00A0,0x00A1,0x00A2,0x00A3,0x20AC,0x00A5,0x0160,0x00A7,
0x0161,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x00AF,
0x00B0,0x00B1,0x00B2,0x00B3,0x017D,0x00B5,0x00B6,0x00B7,
0x017E,0x00B9,0x00BA,0x00BB,0x0152,0x0153,0x0178,0x00BF,
0x00C0,0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,
0x00C8,0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,
0x00D0,0x00D1,0x00D2,0x00D3,0x00D4,0x00D5,0x00D6,0x00D7,
0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,0x00DD,0x00DE,0x00DF,
0x00E0,0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,
0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,
0x00F0,0x00F1,0x00F2,0x00F3,0x00F4,0x00F5,0x00F6,0x00F7,
0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x00FD,0x00FE,0x00FF
};
static const unsigned char mbfl_charprop_table[] = {
0x01 | 0x10,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x01 | 0x10 ,
0x10 ,
0 ,
0x10 | 0x20 ,
0x10 ,
0x10 ,
0x10 ,
0x10 ,
0x10 ,
0x10 | 0x20 ,
0x10 | 0x20 ,
0 ,
0 ,
0x10 | 0x20 ,
0 ,
0x10 | 0x20 ,
0 ,
0x02 | 0x10 ,
0x02 | 0x10 ,
0x02 | 0x10 ,
0x02 | 0x10 ,
0x02 | 0x10 ,
0x02 | 0x10 ,
0x02 | 0x10 ,
0x02 | 0x10 ,
0x02 | 0x10 ,
0x02 | 0x10 ,
0x10 | 0x20 ,
0x10 | 0x20 ,
0x10 | 0x20 ,
0 ,
0x10 | 0x20 ,
0x10 ,
0x10 | 0x20 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x04 ,
0x10 | 0x20 ,
0x10 | 0x20 ,
0x10 | 0x20 ,
0x10 ,
0x10 ,
0x10 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x08 ,
0x10 ,
0x10 ,
0x10 ,
0x10 ,
0x10
};
----preprocessor output for mbfilter.c --- end ---
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: c/4117: Got a internal error when make php
@ 2001-12-07 17:46 rodrigc
0 siblings, 0 replies; 3+ messages in thread
From: rodrigc @ 2001-12-07 17:46 UTC (permalink / raw)
To: nobody; +Cc: gcc-prs
The following reply was made to PR c/4117; it has been noted by GNATS.
From: rodrigc@gcc.gnu.org
To: gcc-bugs@gcc.gnu.org, gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org,
nobody@gcc.gnu.org, qizhi@zhang.net
Cc:
Subject: Re: c/4117: Got a internal error when make php
Date: 8 Dec 2001 01:40:20 -0000
Synopsis: Got a internal error when make php
State-Changed-From-To: open->closed
State-Changed-By: rodrigc
State-Changed-When: Fri Dec 7 17:40:20 2001
State-Changed-Why:
Seems of be fixed in gcc 3.0.2
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=4117&database=gcc
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: c/4117: Got a internal error when make php
@ 2001-12-07 17:40 rodrigc
0 siblings, 0 replies; 3+ messages in thread
From: rodrigc @ 2001-12-07 17:40 UTC (permalink / raw)
To: gcc-bugs, gcc-gnats, gcc-prs, nobody, qizhi
Synopsis: Got a internal error when make php
State-Changed-From-To: open->closed
State-Changed-By: rodrigc
State-Changed-When: Fri Dec 7 17:40:20 2001
State-Changed-Why:
Seems of be fixed in gcc 3.0.2
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=4117&database=gcc
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2001-12-08 1:46 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-08-24 8:26 c/4117: Got a internal error when make php qizhi
2001-12-07 17:40 rodrigc
2001-12-07 17:46 rodrigc
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).