寺西です。
(2013/03/12 16:28), NOKUBI Takatsugu wrote:
> このSERVER_SOFTWAREを見る処理はどういう経緯でついたんでしたっけ。
> ChangeLog, CVSのログには記述が見当たらないのでちょっとわからないでいます。
私が開発に参加する前のことなので、詳しいことは分かりませんが、
cgi を cgi として起動した場合か否かのチェックだと思います。
通常、QUERY_STRING が NULL になるはずですが、
一部の(とは言えなくなっているかもしれませんが)Webサーバだと
/cgi-bin/namazu.cgi と呼び出すと、QUERY_STRING が NULL に
なるものがあります。
(/cgi-bin/namazu.cgi? だと QUERY_STRING が "" になる)
そのため、QUERY_STRING が NULL だから cgi として起動していない
とは判断できないため、SERVER_SOFTWARE でそういう Web サーバ
かどうかを補助的にチェックしているということかと思います。
(SERVER_SOFTWARE に何か設定されていればという判定でも
よさそうですが、ま、そこは念のため動作が確認されているもの
だけ許可しているという感じなのだと思います。)
> とりあえず、assertで終了するだけでなく、SERVER_SOFTWAREが定義されてい
> たらその中身も出力するようにした方がいいかな、と思いました。
char *server = getenv("SERVER_SOFTWARE");
if (!server) {
nmz_warn_printf("unknown SERVER_SOFTWARE : %s\n", server);
}
assert(0);
って感じですかね。
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI) [email protected]
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint = 474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E
_______________________________________________
Namazu-users-ja mailing list
[email protected]
http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-users-ja