御回答ありがとうございます。 From: HIGASHI Taku <ool...@cslab.co.jp> Subject: [FreeBSD-users-jp 92593] Re: w -n? Date: Tue, 17 Nov 2009 15:28:46 +0900
> 私のところ(FreeBSD 7.2-RELEASE-p4)では問題無いです。 FreeBSD 7.2-RELEASE-p4 i386 で試しましたが、 w -n でもホスト名が表示されてしまいました。 何が違うのでしょうね? > ざっくりソースを眺めましたが、-nが指定されたときに設定される > nflagが未初期化(初期値不定)であることから、以下の処理に > 入ってしまうのではないでしょうか。 > > if (!nflag) { > /* 逆引き処理 */ > } ちょっと gdb で追いかけてみました。 nflag は global 変数なので 0 で初期化されているはずです。 また問題なのは -n 指定時なので、nflag は必ず 1 に設定され、 上記コードは実行されません。 どうも /var/run/utmp からして既にホスト名で入ってるようなので、 ep->utmp.ut_host にはホスト名が入ることになります。 それで FreeBSD 4.11 の w.c は -n 指定時わざわざそれを gethostbyname(3) して inet_ntoa(3) して表示しています。 -n の動作は「逆引きしない」ではなく「正引きして表示する」が実情なようです。 7.2R のコードではその部分がそっくり存在しないような気がします。 神田