[PHP-users 4273] Re: PHP 4.1.0 Release Announcement 日本語版
Youichi Iwakiri
php-users@php.gr.jp
Thu, 13 Dec 2001 17:03:06 +0900
いわきりです
Masaki Fujimoto wrote in <20011212170725.2A7B.FUJIMOTO@studio.co.jp>:
>PHP 4.1.0 Release Announcement
>- 拡張モジュールのバージョニングサポート
> 現在の所ほとんど使用されていませんが、この仕組みはバージョンの異なる
> 拡張モジュールを別のモジュールとして扱うために導入されています。この
> 変更による否定的側面は、以前のバージョンのPHP対応した拡張モジュール
> をロードすると、分かり易いメッセージを出力する代わりにクラッシュして
> しまうことです。PHP 4.1.0用にビルドされた拡張モジュール*だけ*を使用
> するように気をつけてください。
ということで、日本語を使用するサイトで良く利用される拡張モジュールの
対応状況をちょっと調べました。
全部、塚田氏の拡張モジュールですが :-)
o mbregex拡張モジュール
05/09/01 12:00午前 46,610 php4_mbregex-1.2.1.tar.gz php-4.0.6以前対応
12/02/01 02:02午後 48,227 php4_mbregex-1.3.1.tar.gz php-4.1.0対応
o Chasen拡張モジュール
05/09/01 12:00午前 2,943 php4_chasen-0.2.1.tar.gz php-4.0.6以前対応
12/03/01 03:54午前 3,057 php4_chasen-0.3.0.tar.gz php-4.1.0対応
o kakasi拡張モジュール
05/09/01 12:00午前 4,714 php4_kakasi-0.2.1.tar.gz php-4.0.6以前対応
12/03/01 07:42午前 4,833 php4_kakasi-0.3.0.tar.gz php-4.1.0対応
o jstring拡張モジュール
05/10/01 12:00午前 154,967 php4_jstring-1.1.1.tar.gz php-4.0.5以前対応(?)
※jstringはmbstringとしてPHPソースに含まれるのでメンテナンスは終了なのかも
o namazu拡張モジュール
04/01/01 12:00午前 14,298 php4_namazu-2.0.1.tar.gz php-4.0.6以前対応
namazu拡張モジュールのみ現在未対応のようです。
以下、4.0.6以前 or 4.1.0両対応にするpatchを添付しておきます。
なお、動作確認は4.0.6および4.2.0-devで行いました。
#4.1.0を取りに行ったのですが混んでて見送りました。
人柱になってくれる方を募集します。
また、4.1.0でのZEND_MODULE_API_NOが判る方は教えてください。
ZEND_MODULE_API_NOはphp-4.2.0-devに合わせ20010901として
4.1.0かどうかを判断しているのでこれがあってないとちゃんと
動きません。
これ以降がpatchです
diff -u namazu/config.m4 namazu_patch/config.m4
--- config.m4 Tue May 9 00:33:14 2000
+++ namazu_patch/config.m4 Fri Nov 30 06:34:41 2001
@@ -18,7 +18,8 @@
AC_DEFINE(HAVE_NAMAZU,1,[ ])
- AC_ADD_LIBRARY_WITH_PATH(nmz, $NAMAZU_LIBDIR, NAMAZU_SHARED_LIBADD)
+ PHP_ADD_LIBRARY_WITH_PATH(nmz, $NAMAZU_LIBDIR, NAMAZU_SHARED_LIBADD)
+ PHP_ADD_LIBRARY_WITH_PATH(intl, $NAMAZU_LIBDIR, NAMAZU_SHARED_LIBADD)
PHP_EXTENSION(namazu,$ext_shared)
fi
diff -u namazu/php_namazu.c namazu_patch/php_namazu.c
--- php_namazu.c Sun Sep 24 10:45:24 2000
+++ namazu_patch/php_namazu.c Thu Dec 13 16:13:03 2001
@@ -22,6 +22,7 @@
#include "namazu/query.h"
#include "php.h"
+#include "config.h"
#include "php_config.h"
#include "php_ini.h"
#include "php_namazu.h"
@@ -49,6 +50,7 @@
function_entry namazu_functions[] = {
PHP_FE(nmz_set_sortorder, NULL)
PHP_FE(nmz_set_sortmethod, NULL)
+ PHP_FE(nmz_set_lang, NULL)
PHP_FE(nmz_set_loggingmode, NULL)
PHP_FE(nmz_open, NULL)
PHP_FE(nmz_close, NULL)
@@ -68,6 +70,9 @@
zend_module_entry namazu_module_entry = {
+#if ZEND_MODULE_API_NO >= 20010901
+ STANDARD_MODULE_HEADER,
+#endif
"namazu", /* Module Name*/
namazu_functions, /* Function Entry */
PHP_MINIT(namazu), /* Module Startup function */
@@ -75,6 +80,9 @@
PHP_RINIT(namazu), /* Request Startup funcion */
PHP_RSHUTDOWN(namazu), /* Request Shutdown funcion */
PHP_MINFO(namazu), /* Infomation function */
+#if ZEND_MODULE_API_NO >= 20010901
+ "2.0.1",
+#endif
STANDARD_MODULE_PROPERTIES
};
@@ -136,9 +144,25 @@
return SUCCESS;
}
+static PHP_INI_MH(OnUpdate_namazu_lang)
+{
+ NMZLS_FETCH();
+
+ if (new_value != NULL) {
+ if (strcasecmp("ja", new_value) == 0) {
+ nmz_set_lang(new_value);
+ } else {
+ nmz_set_lang("C");
+ }
+ }
+
+ return SUCCESS;
+}
+
PHP_INI_BEGIN()
PHP_INI_ENTRY("namazu.sortorder", NULL, PHP_INI_ALL, OnUpdate_namazu_sortorder)
PHP_INI_ENTRY("namazu.sortmethod", NULL, PHP_INI_ALL, OnUpdate_namazu_sortmethod)
+ PHP_INI_ENTRY("namazu.lang", NULL, PHP_INI_ALL, OnUpdate_namazu_lang)
STD_PHP_INI_BOOLEAN("namazu.loggingmode", "0", PHP_INI_ALL, OnUpdateInt, loggingmode, zend_namazu_globals, namazu_globals)
PHP_INI_END()
@@ -267,6 +291,27 @@
/* }}} */
+/* {{{ proto bool nmz_set_lang(string lang)
+ Set the language */
+PHP_FUNCTION(nmz_set_lang)
+{
+ pval **arg_lang;
+
+ if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &arg_lang) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_string_ex(arg_lang);
+ if (strcasecmp("ja", (*arg_lang)->value.str.val) == 0) {
+ nmz_set_lang("ja");
+ } else {
+ nmz_set_lang("C");
+ }
+ RETURN_TRUE;
+}
+/* }}} */
+
+
/* {{{ proto bool nmz_set_loggingmode(bool mode)
Set the logging mode (NMZ.slog) */
PHP_FUNCTION(nmz_set_loggingmode)
@@ -615,14 +660,14 @@
/* }}} */
-/* {{{ proto array nmz_fetch_field(int hlist, string field [, int limit])
+/* {{{ proto array nmz_fetch_field(int hlist, string field [, int limit] [, int offset])
Get the field of all row in a result */
PHP_FUNCTION(nmz_fetch_field)
{
- pval **arg_result, **arg_field, **arg_limit;
+ pval **arg_result, **arg_field, **arg_limit, **arg_offset;
php_nmzresult_t *nmzres;
char *buf;
- int i, limit;
+ int i, limit, s_pos;
NMZLS_FETCH();
switch(ARG_COUNT(ht)) {
@@ -636,6 +681,11 @@
RETURN_FALSE;
}
break;
+ case 4:
+ if (zend_get_parameters_ex(4, &arg_result, &arg_field, &arg_limit, &arg_offset) == FAILURE) {
+ RETURN_FALSE;
+ }
+ break;
default:
WRONG_PARAM_COUNT;
break;
@@ -651,10 +701,18 @@
}
limit = nmzres->hlist.num;
- if (ARG_COUNT(ht) == 3) {
+ s_pos = 0;
+ if (ARG_COUNT(ht) == 4) {
+ convert_to_long_ex(arg_offset);
+ if (limit > (*arg_offset)->value.lval) {
+ s_pos = (*arg_offset)->value.lval;
+ }
+ }
+
+ if (ARG_COUNT(ht) == 3 || ARG_COUNT(ht) == 4) {
convert_to_long_ex(arg_limit);
- if (limit > (*arg_limit)->value.lval) {
- limit = (*arg_limit)->value.lval;
+ if (limit > (s_pos + (*arg_limit)->value.lval) ) {
+ limit = s_pos + (*arg_limit)->value.lval;
}
}
@@ -664,7 +722,7 @@
}
buf = (char *)emalloc(2*BUFSIZE*sizeof(char));
- for (i = 0; i < limit; i++) {
+ for (i = s_pos; i < limit; i++) {
buf[0] = '\0';
buf[1] = '\0';
nmz_get_field_data(nmzres->hlist.data[i].idxid, nmzres->hlist.data[i].docid, (*arg_field)->value.str.val, buf);
diff -u namazu/php_namazu.h namazu_patch/php_namazu.h
--- php_namazu.h Sun Jul 9 13:36:06 2000
+++ namazu_patch/php_namazu.h Fri Nov 30 06:34:39 2001
@@ -27,6 +27,7 @@
/* php function registration */
PHP_FUNCTION(nmz_set_sortorder);
PHP_FUNCTION(nmz_set_sortmethod);
+PHP_FUNCTION(nmz_set_lang);
PHP_FUNCTION(nmz_set_loggingmode);
PHP_FUNCTION(nmz_open);
PHP_FUNCTION(nmz_close);