続analog6

agent_logみてたら結構いろいろなブラウザを使ってるのを見て統計を取ってみようと思ってBROWSERREPとOSREPをONにしてみた。ブラウザレポートは単にエージェントがそのまま出るのであまり面白みが無いのですけど、agent_logを眺めるより統計的にわかりやすいから満足しました。OSレポートを見たら最近増えてる携帯ゲームとかPS3などが不明に含まれてるので分けてみようと思いました。
analogのソースを展開してWindowsでgrepしてみるとtree.cで判定してるのがわかりました。Pnextname関数で判定してるらしく、wholeにagentが入ってくるので、strstr関数で拾えたらOS名とも言える文字列をnameへセットすればいいらしい。とりあえず、Atariの判定の後、Unknownの前に下記を追加。
else if (strstr(whole, “PSP”) != NULL)
*name = “PlayStationPortable”;
else if (strstr(whole, “PLAYSTATION 3”) != NULL)
*name = “PlayStation3”;
else if (strstr(whole, “Nintendo Wii”) != NULL)
*name = “Nintendo Wii”;
あとで気づいたのですが、WindowsとかUnix系はWindows:Windows2000とかで戻せば前の文字列でのサマリー、後者文字列でのサマリーが取れるっぽい。つーことは、”Sony:PSP”、”Sony:PlayStation3″、”Nintendo:Wii”とかにすればPSPとPS3をあわせたカウントを出せるって事ですね。任天堂は別に変更しなくてもいいけどね。
そういえば、コンパイルでちょっとハマった。Gentooは設定ファイルを/etc/analog/analog.cfg、言語ファイルは/usr/share/analog/langに格納してますが、ソースをそのままコンパイルすると/usr/binを参照してしまいました。emergeでパッチを適用したら停止させ、作業ディレクトリをコピーして手直しというのもいいですけど、設定を書き直しました。コンパイルはconfigureは無いので、付属のMakefileの調整とヘッダの手直しです。デフォルトのコンパイルオプションは-O2だったので特に変更なし。コンパイラもデフォルトがgccだった。src/anlghead.hのDEFAULTCONFIGFILEを/etc/analog/analog.cfgへ変更。それとLANGDIRを/usr/share/analog/lang/にしました。後ろのスラッシュが入ってないとlangを無視してしまうので要注意です。いろいろデフォルトを指定できるけど、いじったのはそれだけ。あとはanalog.cfgで上書きすればいいし。
現在調査中はリクエストレポートでアンカーが入るのと入らない差がどの設定かわからん。ソースを読むのは疲れるので設定でいけるなら何とかしたいです。どうもディレクトリへのアクセスとindex.htmlを含むアクセスはアンカーが入るみたいですけど。後日だね。