namazu-dev(ring)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
library api (Re: divide search/output process.)
- From: knok@xxxxxxxxxxxxx (NOKUBI Takatsugu)
- Date: Tue, 28 Sep 99 19:10:56 JST
<199909271119.UAA08189@xxxxxxxxxxxxxx>の記事において
satoru-t@xxxxxxxxxxxxxxxxxxさんは書きました。
>> すばらしい。APIの設計は野首さんにお任せします。ライブラリは
>> libnmzという名前にして nmzディレクトリにソースを置きましょう。
とりあえず、api.cを作ってそれっぽいものを準備し、次のようなソースで
動作することを確認しました。
-----
/* include は省略 */
int main(int argc, char **argv)
{
int i;
HLIST hlist;
PHRASERES phres;
uchar query[BUFSIZE] = "", subquery[BUFSIZE] = "";
i = namazu_parse_options(argc, argv);
if (i == DIE_ERROR)
diewithmsg();
if (i == argc) {
exit(1);
}
strcpy(query, argv[i++]);
if (i < argc) {
for (Idx.num = 0; i < argc && Idx.num < INDEX_MAX; i++) {
Idx.names[Idx.num] =
(uchar *) malloc(strlen(argv[i]) + 1);
if (Idx.names[Idx.num] == NULL) {
die("main: malloc(idxname)");
}
strcpy(Idx.names[Idx.num], argv[i]);
Idx.num++;
}
}
if (Idx.num == 0) {
Idx.num = 0;
Idx.names[Idx.num] =
(uchar *) malloc(strlen(DEFAULT_INDEX) + 1);
if (Idx.names[Idx.num] == NULL) {
die("main: malloc(idxname)");
}
strcpy(Idx.names[Idx.num], DEFAULT_INDEX);
Idx.num = 1;
}
namazu_init(argv[0]);
namazu_search(query, subquery, argv[0], &hlist, &phres);
print_listing(hlist); /* summary listing */
namazu_free();
return 0;
}
-----
とりあえず動作するレベルにはなりましたが、もうちょっと洗練する必要が
ありそうです。
# Idxを扱う関数を用意した方がいいかな...
ディレクトリnmzにおくべきファイルは、namazu.{c,h}, cgi.{c,h}を除く全
てになります。
現状のソースをnmz/, src/に分けて、nmzからlibnmzを作成するところまで
どなたか持っていってもらえませんか?
# まだautoconf/automakeを理解仕切れてないので、結構分量のあるNamazuの
# *.am, *.inを自分がいじれるようになるまでにはかなり時間がかかりそうで
# す。どなたかに作業してもらった方が多分早いと思うのですが...
--
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx (private)
nokubi@xxxxxxxxx (official)