読者です 読者をやめる 読者になる 読者になる

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文で、コマンドラインオプションの挙動が書いてあった。

ヘルプに書かれている内容と実際のソースを見比べてみよう。