namazu-dev(ring)


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

library api (Re: divide search/output process.)



<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)