月曜日, 11月 19, 2007

GAWK 3.1.4でスクリプトの表示がおかしくなる

 BBSで、拒絶ログソーティングスクリプトの表示がおかしくなるという申告をいただいた。GAWKのバージョンは3.1.4で、クライアントのFQDNとIPアドレスが表示されないことがあるとのこと。
 私は今までGAWK 3.1.0を使っていて、何も問題なかった。3.1.4をインストールしてみたら、確かに所々でFQDNとIPアドレスが表示されなくなる。どういう場合にそうなるかの規則性はつかめなかった。問題を起こしているのは

client=substr($0, match($0, /from [^]]+\]/)+5, RLENGTH-5)

という式の中のmatch関数らしい。その人は

client=substr($0, match($0, /from .+\]: /)+5, RLENGTH-7)

と書き直して回避したとのこと。
 しかし、3.1.5にバージョンアップしたら問題は起こらなかった。3.1.4特有のバグと思われる。こんな簡単な正規表現で発現するバグとはお粗末ではないかと思うが。
 なお、最新版は3.1.6だが、私の環境ではなぜかmakeでエラーになってインストールできなかった。

0 件のコメント: