Namazu-devel-ja(旧)


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

バグ報告 (namazu-bugs-ja#111)



はじめまして、中井と申します。
Namazu 2.0.10をつい最近インストールしました。
かなり昔から知っていたのですが、実際にインストールしたのは始めてで
メールとhtmlだけの検索かと思っていたら・・・いろいろなファイルも
検索できるようになっていて、Namazuのすごさに感激しました。

さて、インストールしてみて、いくつかの問題点が見つかりましたので
報告します。(時間がなく全ての他のドキュメントに目を通せていないので
もしかすると既出なのかもしれません)
なお環境は、Namazu 2.0.10/Red Hat 7.1/perl v5.6.0です。

1. NMZ.head*ファイルにjava等の大きなタグ?を入れてnamazu.cgiを呼ぶと
   タグの中身が壊れてしまう。
   これは、from.cのhandle_tag関数を変更してみました。
   char tmp[BUFSIZE]より大きなタグの中身があった時に、何もせずに
   tmpの内容をstdoutに流してしまっているので、そのままもと内容を
   流すようにしてみました。
/*
 * Handle an HTML tag
 */
static void
handle_tag(const char *start, const char *end, const char *query,
               char *select_name, const char *subquery)
{
    char tmp[BUFSIZE];
    int l;

    l = end - start + 1;
    if (l < BUFSIZE - 1) {
        strncpy(tmp, start, l);
        tmp[l] = '\0';
        if (replace_query_value(tmp, query) == SUCCESS)
            return;
        if (select_option(tmp, select_name, subquery) == SUCCESS)
            return;
        if (check_checkbox(tmp) == SUCCESS)
            return;
        get_select_name(tmp, select_name);
        fputs(tmp, stdout);
    } else {
        fprintf(stdout, "%*.*s", l, l, start);
    }
}

2. mknmzからのcompress.plフィルターでzcat: stdin: not in gzip format Broken pipeと
   出て止まる。hoge.Zが壊れていたり、Windowsで使われている.Zだったりすると発生します。
   止まってしまうので、signalで引っかけて、とりあえず以下のようにしてみました。
   (ほんとうならエラーを返すようにしたほうがいいと思うのですが・・・)

------------- compress.pl 56行目から -----------------

sub intr()
{
    my($sigName) = @_;

    print "signal($sigName)\n";
}

sub filter ($$$$$) {
    my ($orig_cfile, $cont, $weighted_str, $headings, $fields)
      = @_;

    $SIG{'PIPE'} = \&intr;
    my $tmpfile = util::tmpnam('NMZ.compr');

    util::vprint("Processing compress file ... (using  '$zcatpath')\n");

    my $fh = util::efopen("|$zcatpath > $tmpfile");
    print $fh $$cont;
    undef $fh;
    $fh = util::efopen("$tmpfile");
    my $size = util::filesize($fh);
    if ($size > $conf::FILE_SIZE_MAX) {
        $SIG{'PIPE'} = 'DEFAULT';
        return 'too_large_gzipped_file';
    }
    $$cont = util::readfile($fh);
    undef $fh;
    unlink $tmpfile;
    $SIG{'PIPE'} = 'DEFAULT';
    return undef;
}
-------------------------------------------------------------------------

3. mknmzで一部のmhonarcのファイルがSegmentation faultで落ちる。
   これは、私のほうの環境にあるmhonarcのリソースをかなり書き換えしているのが
   問題でした。mhonarc.plの108行目
   $$contref =~ s!^(<LI>)(.*?)(</LI>$)!$1 . lftospace($2) . $3!gemsi;
   ここで、LIを見つけることができずに落ちていたようです。
   ちゃんと見つけられるように書き直しをしたら問題無くなりました。
   バグ追跡システムのincomingにあるID:106 mknmz segfaultsも
   もしかすると同じ問題かもしれませんね。

ということで、これからも頑張ってどんどん機能アップして下さい。
楽しみにしています。
#個人的には、サーチの時に"中井"をサーチしたら、中井でもNakaiでも引っかかるような
#機能があるといいかな・・・Kakasiがあるから簡単な気がするけど・・・

P.S.
xlhtmlってバグだらけな気がしますね・・・まだ0.4だから仕方がないのかな〜
-- 
-------------------------------------------------------
 Hiroki Nakai
 INTER-LINK INC. / HOTSTUFF NAGOYA / SKYWAVE INC.
 nakai@xxxxxxxxxxxxxxxxxx   nakai@xxxxxxxxxxxxx
 ilk003@xxxxxxxxxxxxxxxx   GAF11321@xxxxxxxxxxxxxxxx
-------------------------------------------------------