カテゴリ: Subversion, プログラミング
クライアントアプリを作る為にSubversionのCLIクライアントを解析してみよう第1回。まずはmain()関数を調べて、クライアントアプリ実行に先だって必要な処理やコンテキストの生成について調べてみたい。コンテキスト的なものがあるはずという予想は、認証に関しての処理がサブコマンドの処理内に存在しない事による。認証が必要かどうかはサーバ等にアクセスしてみない限り分からないが、libsvn_clientが独自に処理してしまうと、任意の認証インターフェースを実装する事が困難になる。それができるとドキュメントで明言されている以上、認証処理用のコールバックの情報を保持したコンテキスト状のものをlibsvn_clientに渡しているはずに違いないという予測が立てられる。
main()関数内の処理の大半はコマンドライン引数に関する処理で分かりづらいが、やっている事を大ざっぱにまとめるとこんな感じになるようだ。
- トップレベルのAPRメモリプール生成
- svnライブラリ系の初期化
- コマンドライン引数の解析および関連処理
- svn client_content生成
- svn client_contentのauth_baton設定
- サブコマンド処理呼び出し
- APRメモリプール破棄
これだけ見ると簡単な感じがするのだが、ここから先が大変なのだ。なにしろAPRもSubversionも基本的にはAPIリファレンスしかない。client_contentに何が保持できるか、auth_batonに何を設定しなければならないのかは個々のAPIの説明を見ても分からない。前途多難な予感。