namazu-dev(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

works for librarization (Re: i18n)



<199909201223.VAA11269@xxxxxxxxxxxxxx>の記事において
satoru-t@xxxxxxxxxxxxxxxxxxさんは書きました。

>> # 私は 23, 24日と IP unreachable になります。その間に
>> # library化の作業を進めてもらえると嬉しいです。:-) > 野首さん

  とりあえず、exit()している部分について対処したのものをcommitしました。

  次に手を付けるべき場所はdie()を呼んでいる部分なのですが、これは問題
が若干複雑なのと数が多いので、どういった形で対処すべきかを考える必要が
ありそうです。

  とりあえず、次のような対処を考えてみたのですが、皆さんの意見をお聞か
せください。

・dieの処理を次のように変える

char dyingmessage[MSGLEN];

void die (char *fmt, ...)
{
	va_list args;
	vsnprintf(dyingmessage, MSGLEN, fmt, args);
	/* use *nprintf to avoid buffer overflow */
}

・dieを呼び出すだけで終っている部分を変更し、異常終了を示す値を持って
  returnさせる

・間接的にdieを呼び出す関数も同様に変更する

・mainでそれらに対応した終了処理を行う

  dieを直接/間接的に呼び出している関数についてはこちらで調べましたので
(global使用)、そのリストを以下に付けておきます。

cgi.c:
get_cgi_vars (3) -> init_cgi -> main
init_cgi (1) -> main

conf.c:
add_alias (3) -> apply_conf -> parse_conf -> load_conf -> main (3)
add_replace (3) -> apply_conf
check_argnum (2) -> parse_conf
load_conf (1)

hlist.c:
field_sort (1) -> sort_hlist -> search_main (2)
malloc_hlist (1) -> ormerge -> expr -> factor -> term -> expr*
				    -> search_sub -> search_main -> namazu_core
		            -> regex_grep -> do_regex_search -> do_search -> factor
					  -> do_field_search -> do_search
                            -> prefix_match -> do_prefix_match_search -> do_search
                 -> merge_hlist -> search_main
		 -> get_hlist -> regex_grep
			      -> prefix_match
			      -> do_word_search -> do_phrase_search -> do_search
						-> do_search
                 -> reverse_hlist -> search_main
                 -> regex_grep
realloc_hlist (1) -> regex_grep
get_hlist (1) -> regex_grep 
	      -> prefix_match
	      -> do_word_search

namazu.c:
set_redirect_stdout_to_file (1) -> parse_options -> main
expand_idxname_aliases (1) -> main
complete_idxnames (1) -> main
suicide (1) -> signal
main (2)

search.c:
cmp_phrase_hash (1) -> do_phrase_search

util.c:
readfile (2) -> read_headfoot -> print_headfoot -> namazu_core
	     -> print_hlist -> print_listing -> search_main

# かっこ内の数字は呼び出している数なのですが、記載もれがあるのであまり
# 役に立つ情報ではないかも。

>> >PHP の日本語化でUTF-8、EUC-JP、Shift_JIS、ISO-2022-JPの
>> >コード変換ライブラリを作ったので、何かお役に立てることがあったら
>> >手伝いたいと思います。
>> 
>> おお、心強い。 UTF-8 対応の際にはぜひ手伝ってくださいませ。:-)

  そういえば、今はmswordviewが出力するUTF-8なデータをEUC-JPに変換する
のにlvを使っていますが、これもどうにかしたいところですね。

# mknmzだけならJcode.pmを使ってもいいんですが...
-- 
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx (private)
        nokubi@xxxxxxxxx (official)