Namazu-win32-users-ja(旧)


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

RE: 対象の除外について



竹迫です。

Toshitaka Kishimoto <tkishimoto@xxxxxxxxxxx> said:
>エラーが発生するため
>conf.plを以下のようにして、特定のファイルを対象外にしようとしているのですが、
>$DENY_FILE = ".*\\.(gif|png|jpg|jpeg)|.*\\.tar\\.gz|core|.*\\.bak|.*~|\\..*|\x23.*|送付指示表.doc";
>”コンサル会社.doc”等は除外できるのですが、ファイル名に”表”が含まれると
>正しく除外されません。これは私の環境だけなのでしょうか?

ファイルシステムの日本語が Shift_JIS でエンコーディングされている場合、

$DENY_FILE = "〜途中省略〜|送付指示表\\\\.doc";  # 表のうしろに\\を付ける
$DENY_FILE = "〜途中省略〜|\Q送付指示表\.doc\E"; # \Q〜\E でエスケープする

のように記述することによって、'送付指示表.doc' というファイル名を
検索対象から除外することができます。

>又この他にも判定されない漢字があるのでしょうか?

上記の例では、Shift_JIS でエンコードされたときに「表」という漢字の
2バイト目が '\'(16進数で 0x5c) となっているため、不具合が発生します。
他にも「Shift_JIS でエンコードした時 2バイト目に '\' のつく文字」は、

―ソЫ噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭

などがあります。

また、Shift_JIS のエンコーディングでは、2バイト目に正規表現のメタ文字と
重なる場合があるので、実際には不具合が起きる文字はさらに多くなります。
$DENY_FILE での日本語を EUC-JP で記述できれば少しは問題が減るのですが、
現在の Namazu 2.0.4 for Win32 ではまだ対応はされていないようです。

>お手上げだったので、conf.plでやっているのですが、

mknmzrc でも $DENY_FILE は指定できますよ。

--
   広島市立大学 情報科学部 情報機械システム工学科
     竹迫 良範 <takesako@xxxxxxxxx>