cliのmain関数を探してみる
「phpのコマンドラインオプション」d:id:maru_cc:20080214:1203007176 で調べたコマンドラインのオプションだが、実際にCのソースがどうなってるのか疑問に思ったので探してみた。
やはり、Cなのでmain関数を探す必要があるんだろうなーと、cscopeの Find this text stringでmainと打ってみたが、案の定すごい数がヒットしてしまった。。
* 904 more lines - press the space bar to display more *
とか出てる。
一通り見たが、それらしい箇所を見つけられない。というか数が多くて無理だ。
他の文字やディレクトリを絞ってみてみたりとかしたが、うまく見つけられない。。
text以外の検索では?と思い、Find this C symbolに mainとして検索したところ、それらしいものがヒットした!
php_cli.c main 588 int main(int argc, char *argv[])
それっぽい。
開いてみると
/* {{{ main */ #ifdef PHP_CLI_WIN32_NO_CONSOLE int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) #else int main(int argc, char *argv[]) #endif {
Windowsの場合と、それ以外で関数名を変えるような設定がしてあった。
下のほうをずいーっと見ていくと、結構 #ifdefのコンパイル指定がいくつもあった。
738行目あたりのwhile文で、コマンドラインオプションの挙動が書いてあった。
ヘルプに書かれている内容と実際のソースを見比べてみよう。