moriyoshi               Wed Feb  4 02:24:09 2004 EDT

  Modified files:              
    /php-src/ext/mbstring/libmbfl       AUTHORS Makefile.am Makefile.bcc32 
                                        README config.h.in configure.in 
                                        mbfl.rc 
    /php-src/ext/mbstring/libmbfl/filters       Makefile.am html_entities.c 
                                                html_entities.h 
                                                mbfilter_htmlent.c 
    /php-src/ext/mbstring/libmbfl/mbfl  Makefile.am mbfilter.c 
                                        mbfilter.h mbfilter_8bit.h 
                                        mbfilter_pass.h mbfilter_wchar.h 
                                        mbfl_convert.c mbfl_convert.h 
                                        mbfl_ident.c mbfl_ident.h 
    /php-src/ext/mbstring/libmbfl/nls   Makefile.am 
  Log:
  - Update libmbfl to the latest. This fixes several serious issues in the html
    entity encoder and the encoding detection facility. There should be no
    problem with mailparse() as API change was made so carefully that it
    would be as small as possible.
  
  
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/AUTHORS?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/mbstring/libmbfl/AUTHORS
diff -u php-src/ext/mbstring/libmbfl/AUTHORS:1.1 
php-src/ext/mbstring/libmbfl/AUTHORS:1.2
--- php-src/ext/mbstring/libmbfl/AUTHORS:1.1    Sat Aug 23 02:18:35 2003
+++ php-src/ext/mbstring/libmbfl/AUTHORS        Wed Feb  4 02:24:05 2004
@@ -1,8 +1,10 @@
+Den V. Tsopa <[EMAIL PROTECTED]>
 Hironori Sato <[EMAIL PROTECTED]>
+Marcus Boerger <[EMAIL PROTECTED]>
+Moriyoshi Koizumi <[EMAIL PROTECTED]>
+Rui Hirokawa <[EMAIL PROTECTED]>
 Shigeru Kanemoto <[EMAIL PROTECTED]>
 Tsukada Takuya <[EMAIL PROTECTED]>
-U. Kenkichi <[EMAIL PROTECTED]>
 Tateyama  <[EMAIL PROTECTED]>
-Moriyoshi Koizumi <[EMAIL PROTECTED]>
-Rui Hirokawa <[EMAIL PROTECTED]>
-Other gracious contributors
+U. Kenkichi <[EMAIL PROTECTED]>
+Wez Furlong <[EMAIL PROTECTED]>
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/Makefile.am?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/mbstring/libmbfl/Makefile.am
diff -u php-src/ext/mbstring/libmbfl/Makefile.am:1.1 
php-src/ext/mbstring/libmbfl/Makefile.am:1.2
--- php-src/ext/mbstring/libmbfl/Makefile.am:1.1        Sat Aug 23 02:18:35 2003
+++ php-src/ext/mbstring/libmbfl/Makefile.am    Wed Feb  4 02:24:05 2004
@@ -1,2 +1,5 @@
-EXTRA_DIST=AUTHORS DISCLAIMER 
+EXTRA_DIST=AUTHORS DISCLAIMER LICENSE Makefile.bcc32 \
+       config.h.bcc32 config.h.vc6 \
+       libmbfl.dsp libmbfl.dsw libmbfl.sln libmbfl.vcproj mbfl.rc \
+       mksbcc32.bat rules.mak.bcc32
 SUBDIRS = nls filters mbfl
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/Makefile.bcc32?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/mbstring/libmbfl/Makefile.bcc32
diff -u php-src/ext/mbstring/libmbfl/Makefile.bcc32:1.1 
php-src/ext/mbstring/libmbfl/Makefile.bcc32:1.2
--- php-src/ext/mbstring/libmbfl/Makefile.bcc32:1.1     Sun Aug 24 16:07:07 2003
+++ php-src/ext/mbstring/libmbfl/Makefile.bcc32 Wed Feb  4 02:24:05 2004
@@ -5,12 +5,12 @@
 all: mbfl.dll mbfl.lib
 
 mbfl.lib: mbfl.dll
-       implib mbfl.lib mbfl.dll
+       implib -a mbfl.lib mbfl.dll
 
-mbfl.dll: compile mbfl.def mbfl.res
+mbfl.dll: compile mbfl.res
        @if exist linker.rsp del linker.rsp
        @for %i in ($(SUBDIRS)) do @for %j in (%i\*.obj) do @echo %j+ >> linker.rsp
-       ilink32 $(LDFLAGS) @linker.rsp,mbfl.dll,,$(LIBS),mbfl.def,mbfl.res
+       ilink32 $(LDFLAGS) @linker.rsp,mbfl.dll,,$(LIBS),,mbfl.res
        del linker.rsp
 
 mbfl.res: mbfl.rc
@@ -22,6 +22,8 @@
 
 clean:
        @for %i in ($(SUBDIRS)) do $(COMSPEC) /C mksbcc32.bat $(MAKE) %i clean
+       @if exist linker.rsp del linker.rsp
+       @if exist mbfl.RES del mbfl.RES
        @if exist mbfl.dll del mbfl.dll
        @if exist mbfl.lib del mbfl.lib
        @if exist config.h del config.h
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/README?r1=1.2&r2=1.3&ty=u
Index: php-src/ext/mbstring/libmbfl/README
diff -u php-src/ext/mbstring/libmbfl/README:1.2 php-src/ext/mbstring/libmbfl/README:1.3
--- php-src/ext/mbstring/libmbfl/README:1.2     Sun Aug 24 16:07:07 2003
+++ php-src/ext/mbstring/libmbfl/README Wed Feb  4 02:24:05 2004
@@ -5,4 +5,4 @@
 
 See the file INSTALL for building and installation instructions.
 
-# $Id: README,v 1.1.2.2 2003/08/24 18:18:51 moriyoshi Exp
+# $Id: README,v 1.3 2004/02/04 07:24:05 moriyoshi Exp $
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/config.h.in?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/mbstring/libmbfl/config.h.in
diff -u php-src/ext/mbstring/libmbfl/config.h.in:1.1 
php-src/ext/mbstring/libmbfl/config.h.in:1.2
--- php-src/ext/mbstring/libmbfl/config.h.in:1.1        Sat Aug 23 02:18:35 2003
+++ php-src/ext/mbstring/libmbfl/config.h.in    Wed Feb  4 02:24:05 2004
@@ -3,6 +3,9 @@
 /* Define to 1 if you have the <assert.h> header file. */
 #undef HAVE_ASSERT_H
 
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
@@ -47,6 +50,9 @@
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
+/* Name of package */
+#undef PACKAGE
+
 /* Define to the address where bug reports for this package should be sent. */
 #undef PACKAGE_BUGREPORT
 
@@ -65,6 +71,9 @@
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
+/* Version number of package */
+#undef VERSION
+
 /* Define to empty if `const' does not conform to ANSI C. */
 #undef const
 
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/configure.in?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/mbstring/libmbfl/configure.in
diff -u php-src/ext/mbstring/libmbfl/configure.in:1.1 
php-src/ext/mbstring/libmbfl/configure.in:1.2
--- php-src/ext/mbstring/libmbfl/configure.in:1.1       Sat Aug 23 02:18:35 2003
+++ php-src/ext/mbstring/libmbfl/configure.in   Wed Feb  4 02:24:05 2004
@@ -1,8 +1,11 @@
 # Process this file with autoconf to produce a configure script.
-AC_INIT([libmbfl],[1.0.0])
-AM_INIT_AUTOMAKE
-AC_CONFIG_SRCDIR([mbfl/mbfilter.c])
-AC_CONFIG_HEADER([config.h])
+AC_INIT(mbfl/mbfilter.c)
+AM_INIT_AUTOMAKE(libmbfl, 1.0.0)
+AC_CONFIG_SRCDIR(mbfl/mbfilter.c)
+AM_CONFIG_HEADER(config.h)
+
+SHLIB_VERSION="1:0:0"
+AC_SUBST(SHLIB_VERSION)
 
 # Checks for programs.
 AC_PROG_CC
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/mbfl.rc?r1=1.3&r2=1.4&ty=u
Index: php-src/ext/mbstring/libmbfl/mbfl.rc
diff -u php-src/ext/mbstring/libmbfl/mbfl.rc:1.3 
php-src/ext/mbstring/libmbfl/mbfl.rc:1.4
--- php-src/ext/mbstring/libmbfl/mbfl.rc:1.3    Sun Aug 24 21:44:14 2003
+++ php-src/ext/mbstring/libmbfl/mbfl.rc        Wed Feb  4 02:24:05 2004
@@ -1,4 +1,4 @@
-/* $Id: mbfl.rc,v 1.3 2003/08/25 01:44:14 moriyoshi Exp $ */
+/* $Id: mbfl.rc,v 1.4 2004/02/04 07:24:05 moriyoshi Exp $ */
 1 VERSIONINFO
 FILEVERSION 1,1,0,0 
 PRODUCTVERSION 1,1,0,0 
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/filters/Makefile.am?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/mbstring/libmbfl/filters/Makefile.am
diff -u php-src/ext/mbstring/libmbfl/filters/Makefile.am:1.1 
php-src/ext/mbstring/libmbfl/filters/Makefile.am:1.2
--- php-src/ext/mbstring/libmbfl/filters/Makefile.am:1.1        Sat Aug 23 02:18:36 
2003
+++ php-src/ext/mbstring/libmbfl/filters/Makefile.am    Wed Feb  4 02:24:06 2004
@@ -1,3 +1,5 @@
+EXTRA_DIST=Makefile.bcc32
 noinst_LTLIBRARIES=libmbfl_filters.la
 INCLUDES=-I../mbfl
-libmbfl_filters_la_SOURCES=mbfilter_cp936.c mbfilter_hz.c mbfilter_euc_tw.c 
mbfilter_big5.c mbfilter_euc_jp.c mbfilter_jis.c mbfilter_iso8859_1.c 
mbfilter_iso8859_2.c mbfilter_cp1252.c mbfilter_cp1251.c mbfilter_ascii.c 
mbfilter_iso8859_3.c mbfilter_iso8859_4.c mbfilter_iso8859_5.c mbfilter_iso8859_6.c 
mbfilter_iso8859_7.c mbfilter_iso8859_8.c mbfilter_iso8859_9.c mbfilter_iso8859_10.c 
mbfilter_iso8859_13.c mbfilter_iso8859_14.c mbfilter_iso8859_15.c mbfilter_htmlent.c 
mbfilter_byte2.c mbfilter_byte4.c mbfilter_uuencode.c mbfilter_base64.c 
mbfilter_sjis.c mbfilter_7bit.c mbfilter_qprint.c mbfilter_ucs4.c mbfilter_ucs2.c 
mbfilter_utf32.c mbfilter_utf16.c mbfilter_utf8.c mbfilter_utf7.c mbfilter_utf7imap.c 
mbfilter_euc_jp_win.c mbfilter_cp932.c mbfilter_euc_cn.c mbfilter_euc_kr.c 
mbfilter_uhc.c mbfilter_iso2022_kr.c mbfilter_cp866.c mbfilter_koi8r.c html_entities.c 
+libmbfl_filters_la_LDFLAGS=-version-info $(SHLIB_VERSION)
+libmbfl_filters_la_SOURCES=mbfilter_cp936.c mbfilter_hz.c mbfilter_euc_tw.c 
mbfilter_big5.c mbfilter_euc_jp.c mbfilter_jis.c mbfilter_iso8859_1.c 
mbfilter_iso8859_2.c mbfilter_cp1252.c mbfilter_cp1251.c mbfilter_ascii.c 
mbfilter_iso8859_3.c mbfilter_iso8859_4.c mbfilter_iso8859_5.c mbfilter_iso8859_6.c 
mbfilter_iso8859_7.c mbfilter_iso8859_8.c mbfilter_iso8859_9.c mbfilter_iso8859_10.c 
mbfilter_iso8859_13.c mbfilter_iso8859_14.c mbfilter_iso8859_15.c mbfilter_htmlent.c 
mbfilter_byte2.c mbfilter_byte4.c mbfilter_uuencode.c mbfilter_base64.c 
mbfilter_sjis.c mbfilter_7bit.c mbfilter_qprint.c mbfilter_ucs4.c mbfilter_ucs2.c 
mbfilter_utf32.c mbfilter_utf16.c mbfilter_utf8.c mbfilter_utf7.c mbfilter_utf7imap.c 
mbfilter_euc_jp_win.c mbfilter_cp932.c mbfilter_euc_cn.c mbfilter_euc_kr.c 
mbfilter_uhc.c mbfilter_iso2022_kr.c mbfilter_cp866.c mbfilter_koi8r.c html_entities.c 
cp932_table.h html_entities.h mbfilter_7bit.h mbfilter_ascii.h mbfilter_base64.h 
mbfilter_big5.h mbfilter_byte2.h mbfilter_byte4.h mbfilter_cp1251.h mbfilter_cp1252.h 
mbfilter_cp866.h mbfilter_cp932.h mbfilter_cp936.h mbfilter_euc_cn.h mbfilter_euc_jp.h 
mbfilter_euc_jp_win.h mbfilter_euc_kr.h mbfilter_euc_tw.h mbfilter_htmlent.h 
mbfilter_hz.h mbfilter_iso2022_kr.h mbfilter_iso8859_1.h mbfilter_iso8859_10.h 
mbfilter_iso8859_13.h mbfilter_iso8859_14.h mbfilter_iso8859_15.h mbfilter_iso8859_2.h 
mbfilter_iso8859_3.h mbfilter_iso8859_4.h mbfilter_iso8859_5.h mbfilter_iso8859_6.h 
mbfilter_iso8859_7.h mbfilter_iso8859_8.h mbfilter_iso8859_9.h mbfilter_jis.h 
mbfilter_koi8r.h mbfilter_qprint.h mbfilter_sjis.h mbfilter_ucs2.h mbfilter_ucs4.h 
mbfilter_uhc.h mbfilter_utf16.h mbfilter_utf32.h mbfilter_utf7.h mbfilter_utf7imap.h 
mbfilter_utf8.h mbfilter_uuencode.h unicode_prop.h unicode_table_big5.h 
unicode_table_cns11643.h unicode_table_cp1251.h unicode_table_cp1252.h 
unicode_table_cp866.h unicode_table_cp932_ext.h unicode_table_cp936.h 
unicode_table_iso8859_10.h unicode_table_iso8859_13.h unicode_table_iso8859_14.h 
unicode_table_iso8859_15.h unicode_table_iso8859_2.h unicode_table_iso8859_3.h 
unicode_table_iso8859_4.h unicode_table_iso8859_5.h unicode_table_iso8859_6.h 
unicode_table_iso8859_7.h unicode_table_iso8859_8.h unicode_table_iso8859_9.h 
unicode_table_jis.h unicode_table_koi8r.h unicode_table_uhc.h
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/filters/html_entities.c?r1=1.2&r2=1.3&ty=u
Index: php-src/ext/mbstring/libmbfl/filters/html_entities.c
diff -u php-src/ext/mbstring/libmbfl/filters/html_entities.c:1.2 
php-src/ext/mbstring/libmbfl/filters/html_entities.c:1.3
--- php-src/ext/mbstring/libmbfl/filters/html_entities.c:1.2    Fri Sep 12 09:31:23 
2003
+++ php-src/ext/mbstring/libmbfl/filters/html_entities.c        Wed Feb  4 02:24:06 
2004
@@ -32,13 +32,13 @@
 #endif
 
 #include "mbfilter.h"
-#include <string.h>
+#include "html_entities.h"
 
-const mbfl_html_entity mbfl_html_entity_list[] = { /*
-  {"quot",       34},  DO NOT CONVERT THESE AUTOMATICALLY
+const mbfl_html_entity_entry mbfl_html_entity_list[] = {
+  {"quot",       34},
   {"amp",        38},
   {"lt",         60},
-  {"gt",         62},  */
+  {"gt",         62},
   {"nbsp",      160},
   {"iexcl",     161},
   {"cent",      162},
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/filters/html_entities.h?r1=1.2&r2=1.3&ty=u
Index: php-src/ext/mbstring/libmbfl/filters/html_entities.h
diff -u php-src/ext/mbstring/libmbfl/filters/html_entities.h:1.2 
php-src/ext/mbstring/libmbfl/filters/html_entities.h:1.3
--- php-src/ext/mbstring/libmbfl/filters/html_entities.h:1.2    Mon Sep 22 22:42:46 
2003
+++ php-src/ext/mbstring/libmbfl/filters/html_entities.h        Wed Feb  4 02:24:06 
2004
@@ -30,9 +30,12 @@
 #ifndef MBFL_HTML_ENTITIES_H
 #define MBFL_HTML_ENTITIES_H
 
-#include "mbfilter.h"
+typedef struct _mbfl_html_entity_entry {
+       char *  name;
+       int     code;
+} mbfl_html_entity_entry;
 
-extern mbfl_html_entity mbfl_html_entity_list[];
+extern const mbfl_html_entity_entry mbfl_html_entity_list[];
 
 #endif /* MBFL_HTML_ENTITIES_H */
 
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c?r1=1.4&r2=1.5&ty=u
Index: php-src/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c
diff -u php-src/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c:1.4 
php-src/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c:1.5
--- php-src/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c:1.4 Wed Dec 10 12:09:14 
2003
+++ php-src/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c     Wed Feb  4 02:24:06 
2004
@@ -43,7 +43,15 @@
 #include "mbfilter_htmlent.h"
 #include "html_entities.h"
 
-static const unsigned char mblen_table_html[] = { /* 0x00, 0x80 - 0xFF, only valid 
for numeric entities */
+static const int htmlentitifieds[256] = {
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -51,15 +59,7 @@
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
-  6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6
+  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
 };
 
 static const char *mbfl_encoding_html_ent_aliases[] = {"HTML", "html", NULL};
@@ -67,9 +67,9 @@
 const mbfl_encoding mbfl_encoding_html_ent = {
        mbfl_no_encoding_html_ent,
        "HTML-ENTITIES",
-       "US-ASCII",
+       "HTML-ENTITIES",
        (const char *(*)[])&mbfl_encoding_html_ent_aliases,
-       NULL, /* mblen_table_html, Do not use table instead calulate length based on 
entities actually used */
+       NULL,
        MBFL_ENCTYPE_HTML_ENT
 };
 
@@ -98,40 +98,45 @@
  */
 int mbfl_filt_conv_html_enc(int c, mbfl_convert_filter *filter)
 {
-       int tmp[10];
-       int i = 0, p = 0, e;
+       int tmp[64];
+       int i;
        unsigned int uc;
+       const mbfl_html_entity_entry *e;
 
-       if (c<256 && mblen_table_html[c]==1) {
+       if (c < sizeof(htmlentitifieds) / sizeof(htmlentitifieds[0]) &&
+                               htmlentitifieds[c] != 1) {
                CK((*filter->output_function)(c, filter->data));
        } else {
-               /*php_error_docref("ref.mbstring" TSRMLS_CC, E_NOTICE, 
"mbfl_filt_conv_html_enc(0x%08X = %d)", c, c);*/
                CK((*filter->output_function)('&', filter->data));
-               while (1) {
-                   e = mbfl_html_entity_list[i].code;
-                       if (c < e || e == -1) {
-                               break;
-                       }
-                       if (c == e) {
-                               while(mbfl_html_entity_list[i].name[p]) {
-                                       
CK((*filter->output_function)((int)mbfl_html_entity_list[i].name[p++], filter->data));
+               for (i = 0; (e = &mbfl_html_entity_list[i])->name != NULL; i++) {
+                       if (c == e->code) {
+                               char *p;
+                               
+                               for (p = e->name; *p != '\0'; p++) {
+                                       CK((*filter->output_function)((int)*p, 
filter->data));
                                }
-                               break;
+                               goto last;
                        }
-                       i++;
                }
-               i=0;
-               if (!p) {
+
+               {
+                       int *p = tmp + sizeof(tmp);
+
                        CK((*filter->output_function)('#', filter->data));
+
                        uc = (unsigned int)c;
+
+                       *(--p) = '\0';
                        do {
-                               tmp[i++] = '0'+uc%10;
+                               *(--p) = "0123456789"[uc % 10];
                                uc /= 10;
                        } while (uc);
-                       do {
-                               CK((*filter->output_function)(tmp[--i], filter->data));
-                       } while (i);
+
+                       for (; *p != '\0'; p++) {
+                               CK((*filter->output_function)(*p, filter->data));
+                       }
                }
+       last:
                CK((*filter->output_function)(';', filter->data));
        }
        return c;
@@ -169,7 +174,7 @@
 int mbfl_filt_conv_html_dec(int c, mbfl_convert_filter *filter)
 {
        int  pos, ent = 0;
-       mbfl_html_entity *entity;
+       mbfl_html_entity_entry *entity;
        char *buffer = (char*)filter->cache;
 
        if (!filter->status) {
@@ -192,7 +197,7 @@
                                /*php_error_docref("ref.mbstring" TSRMLS_CC, E_NOTICE, 
"mbstring decoded '%s'=%d", buffer, ent);*/
                        } else {
                                /* named entity */
-                               entity = (mbfl_html_entity *)mbfl_html_entity_list;
+                               entity = (mbfl_html_entity_entry 
*)mbfl_html_entity_list;
                                while (entity->name) {
                                        if (!strcmp(buffer+1, entity->name))    {
                                                ent = entity->code;
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/mbfl/Makefile.am?r1=1.2&r2=1.3&ty=u
Index: php-src/ext/mbstring/libmbfl/mbfl/Makefile.am
diff -u php-src/ext/mbstring/libmbfl/mbfl/Makefile.am:1.2 
php-src/ext/mbstring/libmbfl/mbfl/Makefile.am:1.3
--- php-src/ext/mbstring/libmbfl/mbfl/Makefile.am:1.2   Sun Aug 24 21:44:16 2003
+++ php-src/ext/mbstring/libmbfl/mbfl/Makefile.am       Wed Feb  4 02:24:07 2004
@@ -1,10 +1,12 @@
+EXTRA_DIST=Makefile.bcc32
 lib_LTLIBRARIES=libmbfl.la
 libmbfl_la_SOURCES=mbfilter.c mbfl_string.c mbfl_language.c mbfl_encoding.c 
mbfl_convert.c mbfl_ident.c mbfl_memory_device.c mbfl_allocators.c 
mbfl_filter_output.c mbfilter_pass.c mbfilter_wchar.c mbfilter_8bit.c
 libmbfl_filters_la=../filters/libmbfl_filters.la
 libmbfl_nls_la=../nls/libmbfl_nls.la
 libmbfl_la_LIBADD=$(libmbfl_filters_la) $(libmbfl_nls_la)
+libmbfl_la_LDFLAGS=-version-info $(SHLIB_VERSION)
 libmbfl_includedir=$(includedir)/mbfl
-libmbfl_include_HEADERS=mbfilter.h mbfl_consts.h mbfl_encoding.h mbfl_language.h 
mbfl_string.h mbfl_convert.h mbfl_ident.h mbfl_memory_device.h mbfl_allocators.h 
mbfl_defs.h
+libmbfl_include_HEADERS=mbfilter.h mbfl_consts.h mbfl_encoding.h mbfl_language.h 
mbfl_string.h mbfl_convert.h mbfl_ident.h mbfl_memory_device.h mbfl_allocators.h 
mbfl_defs.h mbfl_filter_output.h mbfilter_pass.h mbfilter_wchar.h mbfilter_8bit.h 
 
 $(libmbfl_filters_la):
        $(MAKE) -C `dirname $(libmbfl_filters_la)`
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c:1.1 
php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c:1.2
--- php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c:1.1    Sat Aug 23 02:18:38 2003
+++ php-src/ext/mbstring/libmbfl/mbfl/mbfilter.c        Wed Feb  4 02:24:07 2004
@@ -334,14 +334,14 @@
  * encoding detector
  */
 mbfl_encoding_detector *
-mbfl_encoding_detector_new(enum mbfl_no_encoding *elist, int eliztsz)
+mbfl_encoding_detector_new(enum mbfl_no_encoding *elist, int elistsz)
 {
        mbfl_encoding_detector *identd;
 
        int i, num;
        mbfl_identify_filter *filter;
 
-       if (elist == NULL || eliztsz <= 0) {
+       if (elist == NULL || elistsz <= 0) {
                return NULL;
        }
 
@@ -350,7 +350,7 @@
        if (identd == NULL) {
                return NULL;
        }
-       identd->filter_list = (mbfl_identify_filter **)mbfl_calloc(eliztsz, 
sizeof(mbfl_identify_filter *));
+       identd->filter_list = (mbfl_identify_filter **)mbfl_calloc(elistsz, 
sizeof(mbfl_identify_filter *));
        if (identd->filter_list == NULL) {
                mbfl_free(identd);
                return NULL;
@@ -359,7 +359,7 @@
        /* create filters */
        i = 0;
        num = 0;
-       while (i < eliztsz) {
+       while (i < elistsz) {
                filter = mbfl_identify_filter_new(elist[i]);
                if (filter != NULL) {
                        identd->filter_list[num] = filter;
@@ -522,49 +522,41 @@
  * identify encoding
  */
 const mbfl_encoding *
-mbfl_identify_encoding(mbfl_string *string, enum mbfl_no_encoding *elist, int 
eliztsz, int strict)
+mbfl_identify_encoding(mbfl_string *string, enum mbfl_no_encoding *elist, int 
elistsz, int strict)
 {
        int i, n, num, bad;
        unsigned char *p;
-       const struct mbfl_identify_vtbl *vtbl;
        mbfl_identify_filter *flist, *filter;
        const mbfl_encoding *encoding;
 
-       /* initialize */
-       flist = (mbfl_identify_filter *)mbfl_calloc(eliztsz, 
sizeof(mbfl_identify_filter));
+       /* flist is an array of mbfl_identify_filter instances */
+       flist = (mbfl_identify_filter *)mbfl_calloc(elistsz, 
sizeof(mbfl_identify_filter));
        if (flist == NULL) {
                return NULL;
        }
-       i = 0;
+
        num = 0;
        if (elist != NULL) {
-               while (i < eliztsz) {
-                       vtbl = mbfl_identify_filter_get_vtbl(elist[i]);
-                       if (vtbl != NULL) {
-                               filter = &flist[num];
-                               mbfl_identify_filter_set_vtbl(filter, vtbl);
-                               filter->encoding = mbfl_no2encoding(vtbl->encoding);
-                               (*filter->filter_ctor)(filter);
+               for (i = 0; i < elistsz; i++) {
+                       if (!mbfl_identify_filter_init(&flist[num], elist[i])) {
                                num++;
                        }
-                       i++;
                }
        }
 
        /* feed data */
        n = string->len;
        p = string->val;
+
        if (p != NULL) {
+               bad = 0;
                while (n > 0) {
-                       i = 0;
-                       bad = 0;
-                       while (i < num) {
+                       for (i = 0; i < num; i++) {
                                filter = &flist[i];
                                (*filter->filter_function)(*p, filter);
                                if (filter->flag) {
                                        bad++;
                                }
-                               i++;
                        }
                        if ((num - 1) <= bad && !strict) {
                                break;
@@ -575,41 +567,33 @@
        }
 
        /* judge */
-       i = num - 1;
-       bad = 1;
        encoding = NULL;
-       while (i >= 0) {
+
+       for (i = 0; i < num; i++) {
                filter = &flist[i];
-               if (filter->flag) {
-                       bad++;
-               } else {
+               if (!filter->flag) {
                        encoding = filter->encoding;
+                       break;
                }
-               i--;
-       }
-#if 0
-       if (bad < num) {
-               encoding = NULL;
        }
-#endif
 
-       i = 0;
-       while (i < num) {
-               filter = &flist[i];
-               (*filter->filter_dtor)(filter);
-               i++;
+       /* cleanup */
+       /* dtors should be called in reverse order */
+       i = num; while (--i >= 0) {
+               mbfl_identify_filter_cleanup(&flist[i]);
        }
+
        mbfl_free((void *)flist);
 
        return encoding;
 }
 
 const char*
-mbfl_identify_encoding_name(mbfl_string *string, enum mbfl_no_encoding *elist, int 
eliztsz, int strict)
+mbfl_identify_encoding_name(mbfl_string *string, enum mbfl_no_encoding *elist, int 
elistsz, int strict)
 {
        const mbfl_encoding *encoding;
 
-       encoding = mbfl_identify_encoding(string, elist, eliztsz, strict);
+       encoding = mbfl_identify_encoding(string, elist, elistsz, strict);
        if (encoding != NULL &&
            encoding->no_encoding > mbfl_no_encoding_charset_min &&
            encoding->no_encoding < mbfl_no_encoding_charset_max) {
@@ -620,11 +604,11 @@
 }
 
 const enum mbfl_no_encoding
-mbfl_identify_encoding_no(mbfl_string *string, enum mbfl_no_encoding *elist, int 
eliztsz)
+mbfl_identify_encoding_no(mbfl_string *string, enum mbfl_no_encoding *elist, int 
elistsz)
 {
        const mbfl_encoding *encoding;
 
-       encoding = mbfl_identify_encoding(string, elist, eliztsz, 0);
+       encoding = mbfl_identify_encoding(string, elist, elistsz, 0);
        if (encoding != NULL &&
            encoding->no_encoding > mbfl_no_encoding_charset_min &&
            encoding->no_encoding < mbfl_no_encoding_charset_max) {
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/mbfl/mbfilter.h?r1=1.2&r2=1.3&ty=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfilter.h
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfilter.h:1.2 
php-src/ext/mbstring/libmbfl/mbfl/mbfilter.h:1.3
--- php-src/ext/mbstring/libmbfl/mbfl/mbfilter.h:1.2    Sun Aug 24 21:44:16 2003
+++ php-src/ext/mbstring/libmbfl/mbfl/mbfilter.h        Wed Feb  4 02:24:07 2004
@@ -140,7 +140,7 @@
        int filter_list_size;
 };
 
-MBFLAPI extern mbfl_encoding_detector * mbfl_encoding_detector_new(enum 
mbfl_no_encoding *elist, int eliztsz);
+MBFLAPI extern mbfl_encoding_detector * mbfl_encoding_detector_new(enum 
mbfl_no_encoding *elist, int elistsz);
 MBFLAPI extern void mbfl_encoding_detector_delete(mbfl_encoding_detector *identd);
 MBFLAPI extern int mbfl_encoding_detector_feed(mbfl_encoding_detector *identd, 
mbfl_string *string);
 MBFLAPI extern enum mbfl_no_encoding 
mbfl_encoding_detector_judge(mbfl_encoding_detector *identd);
@@ -157,13 +157,13 @@
  * identify encoding
  */
 MBFLAPI extern const mbfl_encoding *
-mbfl_identify_encoding(mbfl_string *string, enum mbfl_no_encoding *elist, int 
eliztsz, int strict);
+mbfl_identify_encoding(mbfl_string *string, enum mbfl_no_encoding *elist, int 
elistsz, int strict);
 
 MBFLAPI extern const char *
-mbfl_identify_encoding_name(mbfl_string *string, enum mbfl_no_encoding *elist, int 
eliztsz, int strict);
+mbfl_identify_encoding_name(mbfl_string *string, enum mbfl_no_encoding *elist, int 
elistsz, int strict);
 
 MBFLAPI extern const enum mbfl_no_encoding
-mbfl_identify_encoding_no(mbfl_string *string, enum mbfl_no_encoding *elist, int 
eliztsz);
+mbfl_identify_encoding_no(mbfl_string *string, enum mbfl_no_encoding *elist, int 
elistsz);
 
 /*
  * strlen
@@ -265,26 +265,16 @@
     mbfl_string *result,
     enum mbfl_no_encoding outcode);
 
-
 /*
  * convert HTML numeric entity
  */
 MBFLAPI extern mbfl_string *
 mbfl_html_numeric_entity(mbfl_string *string, mbfl_string *result, int *convmap, int 
mapsize, int type);
 
-
 /*
  * convert of harfwidth and fullwidth for japanese
  */
 MBFLAPI extern mbfl_string *
 mbfl_ja_jp_hantozen(mbfl_string *string, mbfl_string *result, int mode);
 
-/*
- * HTML Entity table
- */
-typedef struct _mbfl_html_entity {
-       char *  name;
-       int     code;
-} mbfl_html_entity;
-
 #endif /* MBFL_MBFILTER_H */
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/mbfl/mbfilter_8bit.h?r1=1.3&r2=1.4&ty=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfilter_8bit.h
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfilter_8bit.h:1.3 
php-src/ext/mbstring/libmbfl/mbfl/mbfilter_8bit.h:1.4
--- php-src/ext/mbstring/libmbfl/mbfl/mbfilter_8bit.h:1.3       Mon Sep 22 22:42:47 
2003
+++ php-src/ext/mbstring/libmbfl/mbfl/mbfilter_8bit.h   Wed Feb  4 02:24:07 2004
@@ -34,6 +34,6 @@
 #include "mbfl_defs.h"
 #include "mbfilter.h"
 
-extern const mbfl_encoding mbfl_encoding_8bit;
+MBFLAPI extern const mbfl_encoding mbfl_encoding_8bit;
 
 #endif /* MBFL_MBFILTER_8BIT_H */
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/mbfl/mbfilter_pass.h?r1=1.3&r2=1.4&ty=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfilter_pass.h
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfilter_pass.h:1.3 
php-src/ext/mbstring/libmbfl/mbfl/mbfilter_pass.h:1.4
--- php-src/ext/mbstring/libmbfl/mbfl/mbfilter_pass.h:1.3       Mon Sep 22 22:42:47 
2003
+++ php-src/ext/mbstring/libmbfl/mbfl/mbfilter_pass.h   Wed Feb  4 02:24:07 2004
@@ -33,8 +33,8 @@
 #include "mbfl_defs.h"
 #include "mbfilter.h"
 
-extern const mbfl_encoding mbfl_encoding_pass; 
-extern const struct mbfl_convert_vtbl vtbl_pass;
+MBFLAPI extern const mbfl_encoding mbfl_encoding_pass; 
+MBFLAPI extern const struct mbfl_convert_vtbl vtbl_pass;
 
 MBFLAPI extern int mbfl_filt_conv_pass(int c, mbfl_convert_filter *filter);
 
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/mbfl/mbfilter_wchar.h?r1=1.3&r2=1.4&ty=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfilter_wchar.h
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfilter_wchar.h:1.3 
php-src/ext/mbstring/libmbfl/mbfl/mbfilter_wchar.h:1.4
--- php-src/ext/mbstring/libmbfl/mbfl/mbfilter_wchar.h:1.3      Mon Sep 22 22:42:47 
2003
+++ php-src/ext/mbstring/libmbfl/mbfl/mbfilter_wchar.h  Wed Feb  4 02:24:07 2004
@@ -34,6 +34,6 @@
 #include "mbfl_defs.h"
 #include "mbfilter.h"
 
-extern const mbfl_encoding mbfl_encoding_wchar;
+MBFLAPI extern const mbfl_encoding mbfl_encoding_wchar;
 
 #endif /* MBFL_MBFILTER_WCHAR_H */
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.c?r1=1.3&r2=1.4&ty=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.c
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.c:1.3 
php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.c:1.4
--- php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.c:1.3        Sat Aug 23 04:27:46 
2003
+++ php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.c    Wed Feb  4 02:24:07 2004
@@ -89,6 +89,8 @@
 #include "filters/mbfilter_ucs2.h"
 #include "filters/mbfilter_htmlent.h"
 
+static void mbfl_convert_filter_reset_vtbl(mbfl_convert_filter *filter);
+
 /* hex character table "0123456789ABCDEF" */
 static char mbfl_hexchar_table[] = {
        0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46
@@ -247,7 +249,7 @@
        filter->illegal_substchar = 0x3f;               /* '?' */
 
        /* setup the function table */
-       mbfl_convert_filter_select_vtbl(filter);
+       mbfl_convert_filter_reset_vtbl(filter);
 
        /* constructor */
        (*filter->filter_ctor)(filter);
@@ -277,11 +279,8 @@
        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)
+void mbfl_convert_filter_reset(mbfl_convert_filter *filter,
+           enum mbfl_no_encoding from, enum mbfl_no_encoding to)
 {
        /* destruct old filter */
        (*filter->filter_dtor)(filter);
@@ -291,7 +290,7 @@
        filter->to = mbfl_no2encoding(to);
 
        /* set the vtbl */
-       mbfl_convert_filter_select_vtbl(filter);
+       mbfl_convert_filter_reset_vtbl(filter);
 
        /* construct new filter */
        (*filter->filter_ctor)(filter);
@@ -434,17 +433,6 @@
        return ret;
 }
 
-void mbfl_convert_filter_set_vtbl(mbfl_convert_filter *filter, const 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;
-       }
-}
-
-
 const struct mbfl_convert_vtbl * mbfl_convert_filter_get_vtbl(enum mbfl_no_encoding 
from, enum mbfl_no_encoding to)
 {
        const struct mbfl_convert_vtbl *vtbl;
@@ -471,7 +459,7 @@
 }
 
 
-void mbfl_convert_filter_select_vtbl(mbfl_convert_filter *filter)
+static void mbfl_convert_filter_reset_vtbl(mbfl_convert_filter *filter)
 {
        const struct mbfl_convert_vtbl *vtbl;
 
@@ -479,7 +467,11 @@
        if (vtbl == NULL) {
                vtbl = &vtbl_pass;
        }
-       mbfl_convert_filter_set_vtbl(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;
 }
 
 /*
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.h?r1=1.2&r2=1.3&ty=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.h
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.h:1.2 
php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.h:1.3
--- php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.h:1.2        Sun Aug 24 21:44:16 
2003
+++ php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.h    Wed Feb  4 02:24:07 2004
@@ -76,7 +76,6 @@
 MBFLAPI extern void mbfl_convert_filter_reset(mbfl_convert_filter *filter, enum 
mbfl_no_encoding from, enum mbfl_no_encoding to);
 MBFLAPI extern void mbfl_convert_filter_copy(mbfl_convert_filter *src, 
mbfl_convert_filter *dist);
 MBFLAPI extern int mbfl_filt_conv_illegal_output(int c, mbfl_convert_filter *filter);
-MBFLAPI extern void mbfl_convert_filter_select_vtbl(mbfl_convert_filter *filter);
 MBFLAPI extern const struct mbfl_convert_vtbl * mbfl_convert_filter_get_vtbl(enum 
mbfl_no_encoding from, enum mbfl_no_encoding to);
 
 MBFLAPI extern void mbfl_filt_conv_common_ctor(mbfl_convert_filter *filter);
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/mbfl/mbfl_ident.c?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfl_ident.c
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfl_ident.c:1.1 
php-src/ext/mbstring/libmbfl/mbfl/mbfl_ident.c:1.2
--- php-src/ext/mbstring/libmbfl/mbfl/mbfl_ident.c:1.1  Sat Aug 23 02:18:38 2003
+++ php-src/ext/mbstring/libmbfl/mbfl/mbfl_ident.c      Wed Feb  4 02:24:07 2004
@@ -139,16 +139,6 @@
 /*
  * identify filter
  */
-
-void mbfl_identify_filter_set_vtbl(mbfl_identify_filter *filter, const 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;
-       }
-}
-
 const struct mbfl_identify_vtbl * mbfl_identify_filter_get_vtbl(enum mbfl_no_encoding 
encoding)
 {
        const struct mbfl_identify_vtbl * vtbl;
@@ -164,20 +154,9 @@
        return vtbl;
 }
 
-void mbfl_identify_filter_select_vtbl(mbfl_identify_filter *filter)
-{
-       const struct mbfl_identify_vtbl *vtbl;
-
-       vtbl = mbfl_identify_filter_get_vtbl(filter->encoding->no_encoding);
-       if (vtbl == NULL) {
-               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;
+       mbfl_identify_filter *filter;
 
        /* allocate */
        filter = (mbfl_identify_filter *)mbfl_malloc(sizeof(mbfl_identify_filter));
@@ -185,6 +164,18 @@
                return NULL;
        }
 
+       if (mbfl_identify_filter_init(filter, encoding)) {
+               mbfl_free(filter);
+               return NULL;
+       }
+
+       return filter;
+}
+
+int mbfl_identify_filter_init(mbfl_identify_filter *filter, enum mbfl_no_encoding 
encoding)
+{
+       const struct mbfl_identify_vtbl *vtbl;
+
        /* encoding structure */
        filter->encoding = mbfl_no2encoding(encoding);
        if (filter->encoding == NULL) {
@@ -196,20 +187,33 @@
        filter->score = 0;
 
        /* setup the function table */
-       mbfl_identify_filter_select_vtbl(filter);
+       vtbl = mbfl_identify_filter_get_vtbl(filter->encoding->no_encoding);
+       if (vtbl == NULL) {
+               vtbl = &vtbl_identify_false;
+       }
+       filter->filter_ctor = vtbl->filter_ctor;
+       filter->filter_dtor = vtbl->filter_dtor;
+       filter->filter_function = vtbl->filter_function;
 
        /* constructor */
        (*filter->filter_ctor)(filter);
 
-       return filter;
+       return 0;
 }
 
 void mbfl_identify_filter_delete(mbfl_identify_filter *filter)
 {
-       if (filter) {
-               (*filter->filter_dtor)(filter);
-               mbfl_free((void*)filter);
+       if (filter == NULL) {
+               return;
        }
+
+       mbfl_identify_filter_cleanup(filter);
+       mbfl_free((void*)filter);
+}
+
+void mbfl_identify_filter_cleanup(mbfl_identify_filter *filter)
+{
+       (*filter->filter_dtor)(filter);
 }
 
 void mbfl_filt_ident_common_ctor(mbfl_identify_filter *filter)
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/mbfl/mbfl_ident.h?r1=1.2&r2=1.3&ty=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfl_ident.h
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfl_ident.h:1.2 
php-src/ext/mbstring/libmbfl/mbfl/mbfl_ident.h:1.3
--- php-src/ext/mbstring/libmbfl/mbfl/mbfl_ident.h:1.2  Sun Aug 24 21:44:16 2003
+++ php-src/ext/mbstring/libmbfl/mbfl/mbfl_ident.h      Wed Feb  4 02:24:07 2004
@@ -56,11 +56,11 @@
        int (*filter_function)(int c, mbfl_identify_filter *filter);
 };
 
-MBFLAPI extern void mbfl_identify_filter_set_vtbl(mbfl_identify_filter *filter, const 
struct mbfl_identify_vtbl *vtbl);
 MBFLAPI extern const struct mbfl_identify_vtbl * mbfl_identify_filter_get_vtbl(enum 
mbfl_no_encoding encoding);
-MBFLAPI extern void mbfl_identify_filter_select_vtbl(mbfl_identify_filter *filter);
 MBFLAPI extern mbfl_identify_filter * mbfl_identify_filter_new(enum mbfl_no_encoding 
encoding);
 MBFLAPI extern void mbfl_identify_filter_delete(mbfl_identify_filter *filter);
+MBFLAPI extern mbfl_identify_filter_init(mbfl_identify_filter *filter, enum 
mbfl_no_encoding encoding);
+MBFLAPI void mbfl_identify_filter_cleanup(mbfl_identify_filter *filter);
 
 MBFLAPI extern void mbfl_filt_ident_common_ctor(mbfl_identify_filter *filter);
 MBFLAPI extern void mbfl_filt_ident_common_dtor(mbfl_identify_filter *filter);
http://cvs.php.net/diff.php/php-src/ext/mbstring/libmbfl/nls/Makefile.am?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/mbstring/libmbfl/nls/Makefile.am
diff -u php-src/ext/mbstring/libmbfl/nls/Makefile.am:1.1 
php-src/ext/mbstring/libmbfl/nls/Makefile.am:1.2
--- php-src/ext/mbstring/libmbfl/nls/Makefile.am:1.1    Sat Aug 23 02:18:39 2003
+++ php-src/ext/mbstring/libmbfl/nls/Makefile.am        Wed Feb  4 02:24:08 2004
@@ -1,3 +1,5 @@
+EXTRA_DIST=Makefile.bcc32
 noinst_LTLIBRARIES=libmbfl_nls.la
 INCLUDES=-I../mbfl
-libmbfl_nls_la_SOURCES=nls_ja.c nls_de.c nls_en.c nls_kr.c nls_ru.c nls_zh.c 
nls_uni.c nls_neutral.c
+libmbfl_nls_la_LDFLAGS=-version-info $(SHLIB_VERSION)
+libmbfl_nls_la_SOURCES=nls_ja.c nls_de.c nls_en.c nls_kr.c nls_ru.c nls_zh.c 
nls_uni.c nls_neutral.c nls_ja.h nls_de.h nls_en.h nls_kr.h nls_ru.h nls_zh.h 
nls_uni.h nls_neutral.h

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to