Namazu-devel-ja(旧)


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

半角カナ対応パッチの commit



竹迫です。

以前話題になっていた Win32 半角カナ関連のパッチを commit しました。

http://www.namazu.org/ml/namazu-win32-users-ja/msg00619.html
http://www.namazu.org/ml/namazu-devel-ja/msg01234.html

# commit が遅すぎて、既に忘れ去られてしまったとの噂も...(^^;

このパッチは、Namazu 2.0.x for Win32 において mknmz -U としたときに
日本語のファイル名やパス名に半角カナ(JIS X 0201片仮名)を使用していると
全角カナに変換されて、検索結果のリンクが辿れなくなってしまうバグ(仕様)
を改善します。

これを適用することによって、半角カナを含む日本語のファイル名や
パス名を Namazu のインデックスの対象とすることができます。

修正内容は以下の通りです。

---------------------------------------------------------------------------
 * src/namazu-cgi.c: Added #include "usage.h" for prototype 
 of show_version() function.
 show_version() 関数のプロトタイプ宣言のため、
 src/namazu-cgi.c に #include "usage.h" の1行を追加した。

 * nmz/codeconv.c (euctosjis): Do cast for avoiding warning.
 And 'JIS X 0212 HOJO KANJI' EUC-JP charactors converts to 
 Shift_JIS 0x81ac (JIS 0x222e) code.
 コンパイラの警告を抑えるためにキャスト指定を明確にした。
 EUC-JP の JIS X 0212補助漢字は、Shift_JIS にマッピングできないので、
 未定義文字 JIS 0x222e(〓)に変換するようにした。

 * pl/codeconv.pl (chomp_eucjp): Added new function. 
 It removes a garbage EUC-JP 1st charactor at the end.
 EUC-JP の文字列が途中で途切れているかどうかを判定し、
 末尾の余分なコードを削除する関数を新しく追加。

 * scripts/mknmz.in (make_summary, put_field_index): 
 Using new function codeconv::chomp_eucjp().
 新しく追加した codeconv::chomp_eucjp() を使用するようにした。

 * pl/codeconv.pl (eucjp_to_shiftjis): Fixed the problem, that the
 EUC-JP charactor sequence was incorrectly converted into Shift_JIS
 code, if 'JIS X 0201 KATAKANA' was contained.
 JIS X 0201片仮名(いわゆる半角カナ)が含まれている EUC-JP 文字列が、
 Shift_JIS コードに正しく変換されないバグを修正。

 * pl/codeconv.pl (shiftjis_to_eucjp): Stopped automatically
 converting --- 'JIS X 0201 KATAKANA (hankaku)' charactors
 to 'JIS X 0208 KATAKANA (zenkaku)'.
 shiftjis_to_eucjp() の中で、自動的に EUC-JP の JIS X 0201片仮名
 (半角カナ) を JIS X 0208片仮名(全角カナ)に変換しないようにした。

 * pl/codeconv.pl (eucjp_han2zen_kana): Added new function. 
 This function converts 'JIS X 0201 KATAKANA (hankaku)' charactors
 to 'JIS X 0208 KATAKANA (zenkaku)' in EUC-JP.
 EUC-JP の JIS X 0201片仮名(半角カナ) を JIS X 0208片仮名(全角カナ)
 に変換する関数を新しく追加。

 * filter/gfilter.pl (filename_to_title): Using new function 
 codeconv::eucjp_han2zen_kana() for Win32 Shift_JIS filename.
 Win32 の Shift_JIS 環境で、ファイル名に含まれている半角カナを
 全角カナに変換するようにした。

 * nmz/util.h (nmz_iseuc_kana1st): Added new macro. This function 
 distinguishes the 1st byte of 'JIS X 0201 KATAKANA' in EUC-JP.
 EUC-JP の JIS X 0201片仮名の1バイト目を判定するマクロを新しく追加。

 * nmz/util.h (nmz_iseuc_hojo1st): Added new macro. This function 
 distinguishes the 1st byte of 'JIS X 0212 HOJO KANJI' in EUC-JP.
 EUC-JP の JIS X 0212補助漢字の1バイト目を判定するマクロを新しく追加。

 * nmz/codeconv.c (euctosjis): Fixed the problem, that the EUC-JP 
 charactor sequence was incorrectly converted into Shift_JIS code, 
 if 'JIS X 0201 KATAKANA' was contained.
 JIS X 0201片仮名(いわゆる半角カナ)が含まれている EUC-JP 文字列が、
 Shift_JIS コードに正しく変換されないバグを修正。

---------------------------------------------------------------------------

早速なので、LANG=ja な時だけ実行するような test script を作ってみようと
思ったのですが、今日はそこまで時間がとれませんでした。
申し訳ありませんが、もうちょっと時間をください。(^^;

何か問題がありましたら、お知らせいただけると有難いです。

--
  広島市立大学 情報科学部 情報機械システム工学科 知能ロボット講座
     竹迫 良範 <takesako@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>