summaryrefslogtreecommitdiffstats
path: root/docs/manual/developer
diff options
context:
space:
mode:
authorYoshiki Hayashi <yoshiki@apache.org>2004-08-01 08:24:10 +0200
committerYoshiki Hayashi <yoshiki@apache.org>2004-08-01 08:24:10 +0200
commit945ba7b37b350b81d7a9b082440891aed01a7a14 (patch)
treef1533f9f2bdbab4c1b0ffd82a7a40f190292e79a /docs/manual/developer
parentRemove deprecated APR_STATUS_IS_SUCCESS() macro in favor of direct test against (diff)
downloadapache2-945ba7b37b350b81d7a9b082440891aed01a7a14.tar.xz
apache2-945ba7b37b350b81d7a9b082440891aed01a7a14.zip
Convert to XHTML.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@104440 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'docs/manual/developer')
-rw-r--r--docs/manual/developer/modules.html.ja.euc-jp383
-rw-r--r--docs/manual/developer/modules.xml.ja270
-rw-r--r--docs/manual/developer/modules.xml.meta2
3 files changed, 473 insertions, 182 deletions
diff --git a/docs/manual/developer/modules.html.ja.euc-jp b/docs/manual/developer/modules.html.ja.euc-jp
index f16af7b210..7cea010639 100644
--- a/docs/manual/developer/modules.html.ja.euc-jp
+++ b/docs/manual/developer/modules.html.ja.euc-jp
@@ -1,119 +1,119 @@
<?xml version="1.0" encoding="EUC-JP"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
-
- <title>モジュールの Apache 1.3 から Apache 2.0 への移植</title>
- </head>
- <!-- English revision: 1.8 -->
- <!-- Background white, links blue (unvisited), navy (visited), red (active) -->
-
- <body bgcolor="#FFFFFF" text="#000000" link="#0000FF"
- vlink="#000080" alink="#FF0000">
- <div align="center">
- <img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]" />
-
- <h3>Apache HTTP Server Version 2.1</h3>
- </div>
-
-
-
- <h1 align="center">モジュールを Apache 1.3 から Apache 2.0 へ</h1>
-
- <p>この文書は mod_mmap_static モジュールを Apache 2.0 用に移植した時に
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><!--
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ This file is generated from xml source: DO NOT EDIT
+ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ -->
+<title>モジュールの Apache 1.3 から Apache 2.0 への移植 - Apache HTTP サーバ</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p>
+<p class="apache">Apache HTTP サーバ バージョン 2.1</p>
+<img alt="" src="../images/feather.gif" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP サーバ</a> &gt; <a href="http://httpd.apache.org/docs-project/">ドキュメンテーション</a> &gt; <a href="../">バージョン 2.1</a> &gt; <a href="./">Developer Documentation</a></div><div id="page-content"><div id="preamble"><h1>モジュールの Apache 1.3 から Apache 2.0 への移植</h1>
+<div class="toplang">
+<p><span>Available Languages: </span><a href="../en/developer/modules.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../ja/developer/modules.html" title="Japanese">&nbsp;ja&nbsp;</a></p>
+</div>
+
+ <p>この文書は <code>mod_mmap_static</code> モジュールを Apache 2.0 用に移植した時に
学んだ経験をもとに書いた、最初の手引き書です。まだまだ完全じゃないし、
ひょっとすると間違っている部分もあるかもしれませんが、
取っ掛りにはなるでしょう。</p>
- <hr />
-
- <h2>簡単な変更点…</h2>
-
- <h3>クリーンナップ ルーチン</h3>
-
- <p>クリーンナップルーチンは apr_status_t 型である必要があります。
- そして、apr_status_t 型の値を返さなくてはなりません。
- クリーンナップ中のエラーを通知する必要がなければ、返り値は普通、
- ARP_SUCCESS です。たとえエラーを通知したとしても、
- すべてのコードがその通知をチェックしたり、
- エラーに応じた動作をするわけではないことに気をつけてください。</p>
-
- <h3>初期化ルーチン</h3>
+</div>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#easy">簡単な変更点</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#messy">もっと厄介な変更点…</a></li>
+</ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="easy" id="easy">簡単な変更点</a></h2>
+
+ <h3><a name="cleanup" id="cleanup">クリーンナップ ルーチン</a></h3>
+ <p>クリーンナップルーチンは <code>apr_status_t</code> 型である必要があります。
+ そして、apr_status_t 型の値を返さなくてはなりません。
+ クリーンナップ中のエラーを通知する必要がなければ、返り値は普通、
+ <code>ARP_SUCCESS</code> です。たとえエラーを通知したとしても、
+ すべてのコードがその通知をチェックしたり、
+ エラーに応じた動作をするわけではないことに気をつけてください。</p>
+
+
+
+ <h3><a name="init" id="init">初期化ルーチン</a></h3>
<p>初期化ルーチンは処理全体から見てしっくりくるような意味を表すように、
- 名前が変更されました。ですから、mmap_init から mmap_post_config
+ 名前が変更されました。ですから、<code>mmap_init</code> から <code>mmap_post_config</code>
のようにちょっと変更されました。
渡される引数は大幅に変更され、次のようになりました。</p>
- <ul style="list-style:none">
- <li>apr_pool_t *p,</li>
-
- <li>apr_pool_t *plog,</li>
-
- <li>apr_pool_t *ptemp,</li>
-
- <li>server_rec *s</li>
- </ul>
-
- <h3>データ型</h3>
-
- <p>データ型のほとんどは APR に移されました。つまり、
- いくつかの名前が前述のように変更されています。
- 施すべき変更点の簡単な一覧を以下に示します。</p>
-
- <ul style="list-style:none">
- <li>pool は apr_pool_t になります</li>
-
- <li>table は apr_table_t になります</li>
- </ul>
-
- <hr />
-
- <h2><em>もっと厄介な</em>変更点…</h2>
-
- <h3>フックの登録</h3>
-
- <p>新しいアーキテクチャでは作成した関数を呼び出すのに
- 一連のフックを使用します。このフックは、新しい関数
- static void register_hooks(void) を使って登録するよう、
- モジュールに書き足さなくてはなりません。
- この関数は、なにをすべきか一旦理解してしまえば、
- 十分にわかりやすいものです。
- リクエストの処理のあるステージで呼び出さなくてはならない
- 関数は登録する必要があります。ハンドラは登録する必要はありません。
- 関数を登録できるフェーズはたくさんあります。
- それぞれのフェーズで、関数を呼び出す相対的な順番は、
- かなりの程度制御できます。</p>
-
- <p>以下は、mod_mmap_static に追加したコードです:</p>
-
-<pre>
+ <ul>
+ <li><code>apr_pool_t *p</code></li>
+ <li><code>apr_pool_t *plog</code></li>
+ <li><code>apr_pool_t *ptemp</code></li>
+ <li><code>server_rec *s</code></li>
+ </ul>
+
+
+ <h3><a name="datatypes" id="datatypes">データ型</a></h3>
+ <p>データ型のほとんどは <a href="http://apr.apache.org/">APR</a> に移されました。つまり、
+ いくつかの名前が前述のように変更されています。
+ 施すべき変更点の簡単な一覧を以下に示します。</p>
+
+ <ul>
+ <li><code>pool</code> becomes <code>apr_pool_t</code></li>
+ <li><code>table</code> becomes <code>apr_table_t</code></li>
+ </ul>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="messy" id="messy">もっと厄介な変更点…</a></h2>
+
+ <h3><a name="register-hooks" id="register-hooks">フックの登録</a></h3>
+ <p>新しいアーキテクチャでは作成した関数を呼び出すのに
+ 一連のフックを使用します。このフックは、新しい関数
+ <code>static void register_hooks(void)</code> を使って登録するよう、
+ モジュールに書き足さなくてはなりません。
+ この関数は、なにをすべきか一旦理解してしまえば、
+ 十分にわかりやすいものです。
+ リクエストの処理のあるステージで呼び出さなくてはならない
+ 関数は登録する必要があります。ハンドラは登録する必要はありません。
+ 関数を登録できるフェーズはたくさんあります。
+ それぞれのフェーズで、関数を呼び出す相対的な順番は、
+ かなりの程度制御できます。</p>
+
+ <p>以下は、<code>mod_mmap_static</code> に追加したコードです:</p>
+
+ <div class="example"><pre>
static void register_hooks(void)
{
static const char * const aszPre[]={ "http_core.c",NULL };
ap_hook_post_config(mmap_post_config,NULL,NULL,HOOK_MIDDLE);
ap_hook_translate_name(mmap_static_xlat,aszPre,NULL,HOOK_LAST);
-};
-</pre>
+};</pre></div>
<p>ここでは呼びだすべき二つの関数を登録しています。一つは
- post_config ステージ用 (ほとんどすべてのモジュールはこれが必要です) で、
- もう一つは translate_name フェーズ用です。
+ <code>post_config</code> ステージ用 (ほとんどすべてのモジュール
+ はこれが必要です) で、もう一つは <code>translate_name</code> フェーズ用です。
それぞれの関数は名前は違うけれども形式は同じであることに注意してください。
それでは、形式はどのようになっているでしょうか?</p>
- <p><code><strong>ap_hook_[フェーズ名](関数名, 先行, 後行, 位置);</strong></code></p>
-
- <p>3つの位置が定義されています…</p>
+ <div class="example"><p><code>
+ ap_hook_<var>phase_name</var>(<var>function_name</var>,
+ <var>predecessors</var>, <var>successors</var>, <var>position</var>);
+ </code></p></div>
- <ul style="list-style:none">
- <li>HOOK_FIRST</li>
+ <p>三つの位置が定義されています…</p>
- <li>HOOK_MIDDLE</li>
-
- <li>HOOK_LAST</li>
- </ul>
+ <ul>
+ <li><code>HOOK_FIRST</code></li>
+ <li><code>HOOK_MIDDLE</code></li>
+ <li><code>HOOK_LAST</code></li>
+ </ul>
<p>位置を定義するには、上記の「位置」を指定し、
修飾子である「先行」と「後行」で手を加えます。
@@ -121,133 +121,154 @@ static void register_hooks(void)
「先行」は関数の実行前に呼ばれるもので、
「後行」は実行後に呼ばれるものです。</p>
- <p>mod_mmap_static の場合、post_config ステージでは必要ありませんが、
- mmap_static_xlat が core モジュールが名前の変換を実行した後に
- 呼ばれなければなりません。
- そこで aszPre を使って HOOK_LAST の修飾子を定義しています。</p>
-
- <h3>モジュールの定義</h3>
+ <p><code>mod_mmap_static</code> の場合、<code>post_config</code>
+ ステージでは必要ありませんが、
+ <code>mmap_static_xlat</code> が core モジュールが名前の変換を実行した後に
+ <strong>呼ばれなければなりません</strong>。
+ そこで aszPre を使って <code>HOOK_LAST</code> の修飾子を定義しています。</p>
+
- <p>モジュールの定義を作成する際に注意しなければならない
- ステージの数は激減しています。古い定義は次のようになっていました。</p>
+ <h3><a name="moddef" id="moddef">モジュールの定義</a></h3>
+ <p>モジュールの定義を作成する際に注意しなければならない
+ ステージの数は激減しています。古い定義は次のようになっていました。</p>
-<pre>
-module MODULE_VAR_EXPORT [モジュール名]_module =
+ <div class="example"><pre>
+module MODULE_VAR_EXPORT <var>module_name</var>_module =
{
STANDARD_MODULE_STUFF,
- /* 初期化関数 */
- /* ディレクトリ設定作成関数 */
- /* ディレクトリ設定マージ関数 ― デフォルトは「上書き」 */
- /* サーバ設定作成関数 */
- /* サーバ設定マージ関数 */
- /* コマンド・ハンドラ */
- /* ハンドラ */
- /* ファイル名変換 */
+ /* initializer */
+ /* dir config creater */
+ /* dir merger --- default is to override */
+ /* server config */
+ /* merge server config */
+ /* command handlers */
+ /* handlers */
+ /* filename translation */
/* check_user_id */
- /* 認証チェック */
- /* アクセス制限チェック */
- /* MIME 型チェック */
- /* 調整 */
- /* ログ出力 */
- /* ヘッダパーサ */
- /* 子プロセス初期化 */
- /* 子プロセス終了 */
- /* read-request 後 */
-};
-</pre>
+ /* check auth */
+ /* check access */
+ /* type_checker */
+ /* fixups */
+ /* logger */
+ /* header parser */
+ /* child_init */
+ /* child_exit */
+ /* post read-request */
+};</pre></div>
<p>新しい構造体はとってもシンプルです…</p>
-
-<pre>
-module MODULE_VAR_EXPORT [モジュール名]_module =
+ <div class="example"><pre>
+module MODULE_VAR_EXPORT <var>module_name</var>_module =
{
STANDARD20_MODULE_STUFF,
- /* ディレクトリ毎設定構造体作成 */
- /* ディレクトリ毎設定構造体マージ */
- /* サーバ毎設定構造体作成 */
- /* サーバ毎設定構造体作成マージ */
- /* コマンド・ハンドラ */
- /* ハンドラ */
- /* フック登録 */
- };
-</pre>
+ /* create per-directory config structures */
+ /* merge per-directory config structures */
+ /* create per-server config structures */
+ /* merge per-server config structures */
+ /* command handlers */
+ /* handlers */
+ /* register hooks */
+};</pre></div>
<p>このうちのいくつかは古いものから新しいものに直接読み替えられるもので、
いくつかはそうではありません。どうすればいいのかを要約してみます。</p>
<p>直接読み替えられるステージ:</p>
- <ul style="list-style:none">
- <li>/* ディレクトリ設定作成関数 */ ==&gt;
- /* ディレクトリ毎設定構造体作成 */</li>
+ <dl>
+ <dt><code>/* ディレクトリ設定作成関数 */</code></dt>
+ <dd><code>/* ディレクトリ毎設定構造体作成 */</code></dd>
- <li>/* サーバ設定作成関数 */ ==&gt; /* サーバ毎設定構造体作成 */</li>
+ <dt><code>/* サーバ設定作成関数 */</code></dt>
+ <dd><code>/* サーバ毎設定構造体作成 */</code></dd>
- <li>/* ディレクトリ設定マージ関数 */ ==&gt;
- /* ディレクトリ毎設定構造体マージ */</li>
+ <dt><code>/* ディレクトリ設定マージ関数 */</code></dt>
+ <dd><code>/* ディレクトリ毎設定構造体マージ */</code></dd>
- <li>/* サーバ設定マージ関数 */ ==&gt;
- /* サーバ毎設定構造体作成マージ */</li>
+ <dt><code>/* サーバ設定マージ関数 */</code></dt>
+ <dd><code>/* サーバ毎設定構造体作成マージ */</code></dd>
- <li>/* コマンド・テーブル */ ==&gt; /* コマンド apr_table_t */</li>
+ <dt><code>/* コマンド・テーブル */</code></dt>
+ <dd><code>/* コマンド apr_table_t */</code></dd>
- <li>/* ハンドラ */ ==&gt; /* ハンドラ */</li>
- </ul>
+ <dt><code>/* ハンドラ */</code></dt>
+ <dd><code>/* ハンドラ */</code></dd>
+ </dl>
<p>古い関数の残りのものはフックとして登録されるべきです。
現時点で次のようなフック・ステージが定義されています…</p>
- <ul style="list-style:none">
- <li>ap_hook_post_config <em>(以前の _init ルーチンが登録されるべき場所です)</em></li>
-
- <li>ap_hook_http_method <em>(リクエストから HTTP メソッドを取得します (互換用))</em></li>
-
- <li>ap_hook_open_logs <em>(特定のログのオープン)</em></li>
-
- <li>ap_hook_auth_checker <em>(リソースが権限を必要とするかどうかの確認)</em></li>
-
- <li>ap_hook_access_checker <em>(モジュール固有の制約の確認)</em></li>
-
- <li>ap_hook_check_user_id <em>(ユーザ ID とパスワードの確認)</em></li>
+ <dl>
+ <dt><code>ap_hook_post_config</code></dt>
+ <dd>(以前の <code>_init</code> ルーチンが登録されるべき場所です)</dd>
- <li>ap_hook_default_port <em>(サーバのデフォルト・ポートの取得)</em></li>
+ <dt><code>ap_hook_http_method</code></dt>
+ <dd>(リクエストから HTTP メソッドを取得します (互換用))</dd>
- <li>ap_hook_pre_connection <em>(処理の直前に必要なことを実行。ただし accept 直後に呼ばれる)</em></li>
+ <dt><code>ap_hook_open_logs</code></dt>
+ <dd>(特定のログのオープン)</dd>
- <li>ap_hook_process_connection <em>(プロトコルの処理)</em></li>
+ <dt><code>ap_hook_auth_checker</code></dt>
+ <dd>(リソースが権限を必要とするかどうかの確認)</dd>
- <li>ap_hook_child_init <em>(子プロセル起動直後)</em></li>
+ <dt><code>ap_hook_access_checker</code></dt>
+ <dd>(モジュール固有の制約の確認)</dd>
- <li>ap_hook_create_request <em>(??)</em></li>
+ <dt><code>ap_hook_check_user_id</code></dt>
+ <dd>(ユーザ ID とパスワードの確認)</dd>
- <li>ap_hook_fixups <em>(応答内容の生成を変更するラスト・チャンス)</em></li>
+ <dt><code>ap_hook_default_port</code></dt>
+ <dd>(サーバのデフォルト・ポートの取得)</dd>
- <li>ap_hook_handler <em>(応答内容の生成)</em></li>
+ <dt><code>ap_hook_pre_connection</code></dt>
+ <dd>(処理の直前に必要なことを実行。ただし accept 直後に呼ばれる)</dd>
- <li>ap_hook_header_parser <em>(モジュールにヘッダの照会をさせる。ほとんどのモジュールでは使われません。post_read_request を使います)</em></li>
+ <dt><code>ap_hook_process_connection</code></dt>
+ <dd>(プロトコルの処理)</dd>
- <li>ap_hook_insert_filter <em>(フィルタ・チェインにフィルタを挿入)</em></li>
+ <dt><code>ap_hook_child_init</code></dt>
+ <dd>(子プロセル起動直後)</dd>
- <li>ap_hook_log_transaction <em>(リクエストについての情報を記録する)</em></li>
+ <dt><code>ap_hook_create_request</code></dt>
+ <dd>(??)</dd>
- <li>ap_hook_optional_fn_retrieve <em>(オプションとして登録された関数の取得)</em></li>
+ <dt><code>ap_hook_fixups</code></dt>
+ <dd>(応答内容の生成を変更するラスト・チャンス)</dd>
- <li>ap_hook_post_read_request <em>(リクエストを読みこんだ後、他のフェーズの前に呼ばれる)</em></li>
+ <dt><code>ap_hook_handler</code></dt>
+ <dd>(応答内容の生成)</dd>
- <li>ap_hook_quick_handler <em>(??)</em></li>
+ <dt><code>ap_hook_header_parser</code></dt>
+ <dd>(モジュールにヘッダの照会をさせる。ほとんどのモジュールでは使われません。post_read_request を使います)</dd>
- <li>ap_hook_translate_name <em>(URI をファイル名に変換する)</em></li>
+ <dt><code>ap_hook_insert_filter</code></dt>
+ <dd>(フィルタ・チェインにフィルタを挿入)</dd>
- <li>ap_hook_type_checker <em>(文書型の決定と設定。あるいはその片方)</em></li>
- </ul>
- <hr />
+ <dt><code>ap_hook_log_transaction</code></dt>
+ <dd>(リクエストについての情報を記録する)</dd>
- <h3 align="center">Apache HTTP Server Version 2.1</h3>
- <a href="./"><img src="../images/index.gif" alt="Index" /></a>
- <a href="../"><img src="../images/home.gif" alt="Home" /></a>
+ <dt><code>ap_hook_optional_fn_retrieve</code></dt>
+ <dd>(オプションとして登録された関数の取得)</dd>
+ <dt><code>ap_hook_post_read_request</code></dt>
+ <dd>(リクエストを読みこんだ後、他のフェーズの前に呼ばれる)</dd>
+ <dt><code>ap_hook_quick_handler</code></dt>
+ <dd>リクエストの処理が始まる前に呼ばれる。キャッシュモジュールが
+ 使用している</dd>
- </body>
-</html>
+ <dt><code>ap_hook_translate_name</code></dt>
+ <dd>(URI をファイル名に変換する)</dd>
+ <dt><code>ap_hook_type_checker</code></dt>
+ <dd>(文書型の決定と設定。あるいはその片方)</dd>
+ </dl>
+
+</div></div>
+<div class="bottomlang">
+<p><span>Available Languages: </span><a href="../en/developer/modules.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../ja/developer/modules.html" title="Japanese">&nbsp;ja&nbsp;</a></p>
+</div><div id="footer">
+<p class="apache">Copyright 1999-2004 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p></div>
+</body></html> \ No newline at end of file
diff --git a/docs/manual/developer/modules.xml.ja b/docs/manual/developer/modules.xml.ja
new file mode 100644
index 0000000000..51bf250390
--- /dev/null
+++ b/docs/manual/developer/modules.xml.ja
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="iso-2022-jp"?>
+<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
+<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
+
+<!--
+ Copyright 2003-2004 The Apache Software Foundation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<manualpage metafile="modules.xml.meta">
+<parentdocument href="./">Developer Documentation</parentdocument>
+
+<title>$B%b%8%e!<%k$N(B Apache 1.3 $B$+$i(B Apache 2.0 $B$X$N0\?"(B</title>
+
+<summary>
+ <p>$B$3$NJ8=q$O(B <code>mod_mmap_static</code> $B%b%8%e!<%k$r(B Apache 2.0 $BMQ$K0\?"$7$?;~$K(B
+ $B3X$s$@7P83$r$b$H$K=q$$$?!":G=i$N<j0z$-=q$G$9!#$^$@$^$@40A4$8$c$J$$$7!"(B
+ $B$R$g$C$H$9$k$H4V0c$C$F$$$kItJ,$b$"$k$+$b$7$l$^$;$s$,!"(B
+ $B<h$C3]$j$K$O$J$k$G$7$g$&!#(B</p>
+</summary>
+
+<section id="easy"><title>$B4JC1$JJQ99E@(B</title>
+
+ <section id="cleanup"><title>$B%/%j!<%s%J%C%W(B $B%k!<%A%s(B</title>
+ <p>$B%/%j!<%s%J%C%W%k!<%A%s$O(B <code>apr_status_t</code> $B7?$G$"$kI,MW$,$"$j$^$9!#(B
+ $B$=$7$F!"(Bapr_status_t $B7?$NCM$rJV$5$J$/$F$O$J$j$^$;$s!#(B
+ $B%/%j!<%s%J%C%WCf$N%(%i!<$rDLCN$9$kI,MW$,$J$1$l$P!"JV$jCM$OIaDL!"(B
+ <code>ARP_SUCCESS</code> $B$G$9!#$?$H$(%(%i!<$rDLCN$7$?$H$7$F$b!"(B
+ $B$9$Y$F$N%3!<%I$,$=$NDLCN$r%A%'%C%/$7$?$j!"(B
+ $B%(%i!<$K1~$8$?F0:n$r$9$k$o$1$G$O$J$$$3$H$K5$$r$D$1$F$/$@$5$$!#(B</p>
+ </section>
+
+
+ <section id="init"><title>$B=i4|2=%k!<%A%s(B</title>
+
+ <p>$B=i4|2=%k!<%A%s$O=hM}A4BN$+$i8+$F$7$C$/$j$/$k$h$&$J0UL#$rI=$9$h$&$K!"(B
+ $BL>A0$,JQ99$5$l$^$7$?!#$G$9$+$i!"(B<code>mmap_init</code> $B$+$i(B <code>mmap_post_config</code>
+ $B$N$h$&$K$A$g$C$HJQ99$5$l$^$7$?!#(B
+ $BEO$5$l$k0z?t$OBgI}$KJQ99$5$l!"<!$N$h$&$K$J$j$^$7$?!#(B</p>
+
+ <ul>
+ <li><code>apr_pool_t *p</code></li>
+ <li><code>apr_pool_t *plog</code></li>
+ <li><code>apr_pool_t *ptemp</code></li>
+ <li><code>server_rec *s</code></li>
+ </ul>
+ </section>
+
+ <section id="datatypes"><title>$B%G!<%?7?(B</title>
+ <p>$B%G!<%?7?$N$[$H$s$I$O(B <a
+ href="http://apr.apache.org/">APR</a> $B$K0\$5$l$^$7$?!#$D$^$j!"(B
+ $B$$$/$D$+$NL>A0$,A0=R$N$h$&$KJQ99$5$l$F$$$^$9!#(B
+ $B;\$9$Y$-JQ99E@$N4JC1$J0lMw$r0J2<$K<($7$^$9!#(B</p>
+
+ <ul>
+ <li><code>pool</code> becomes <code>apr_pool_t</code></li>
+ <li><code>table</code> becomes <code>apr_table_t</code></li>
+ </ul>
+ </section>
+</section>
+
+<section id="messy"><title>$B$b$C$HLq2p$JJQ99E@!D(B</title>
+
+ <section id="register-hooks"><title>$B%U%C%/$NEPO?(B</title>
+ <p>$B?7$7$$%"!<%-%F%/%A%c$G$O:n@.$7$?4X?t$r8F$S=P$9$N$K(B
+ $B0lO"$N%U%C%/$r;HMQ$7$^$9!#$3$N%U%C%/$O!"?7$7$$4X?t(B
+ <code>static void register_hooks(void)</code> $B$r;H$C$FEPO?$9$k$h$&!"(B
+ $B%b%8%e!<%k$K=q$-B-$5$J$/$F$O$J$j$^$;$s!#(B
+ $B$3$N4X?t$O!"$J$K$r$9$Y$-$+0lC6M}2r$7$F$7$^$($P!"(B
+ $B==J,$K$o$+$j$d$9$$$b$N$G$9!#(B
+ $B%j%/%(%9%H$N=hM}$N$"$k%9%F!<%8$G8F$S=P$5$J$/$F$O$J$i$J$$(B
+ $B4X?t$OEPO?$9$kI,MW$,$"$j$^$9!#%O%s%I%i$OEPO?$9$kI,MW$O$"$j$^$;$s!#(B
+ $B4X?t$rEPO?$G$-$k%U%'!<%:$O$?$/$5$s$"$j$^$9!#(B
+ $B$=$l$>$l$N%U%'!<%:$G!"4X?t$r8F$S=P$9AjBPE*$J=gHV$O!"(B
+ $B$+$J$j$NDxEY@)8f$G$-$^$9!#(B</p>
+
+ <p>$B0J2<$O!"(B<code>mod_mmap_static</code> $B$KDI2C$7$?%3!<%I$G$9(B:</p>
+
+ <example><pre>
+static void register_hooks(void)
+{
+ static const char * const aszPre[]={ "http_core.c",NULL };
+ ap_hook_post_config(mmap_post_config,NULL,NULL,HOOK_MIDDLE);
+ ap_hook_translate_name(mmap_static_xlat,aszPre,NULL,HOOK_LAST);
+};</pre>
+ </example>
+
+ <p>$B$3$3$G$O8F$S$@$9$Y$-Fs$D$N4X?t$rEPO?$7$F$$$^$9!#0l$D$O(B
+ <code>post_config</code> $B%9%F!<%8MQ(B ($B$[$H$s$I$9$Y$F$N%b%8%e!<%k(B
+ $B$O$3$l$,I,MW$G$9(B) $B$G!"$b$&0l$D$O(B <code>translate_name</code> $B%U%'!<%:MQ$G$9!#(B
+ $B$=$l$>$l$N4X?t$OL>A0$O0c$&$1$l$I$b7A<0$OF1$8$G$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B
+ $B$=$l$G$O!"7A<0$O$I$N$h$&$K$J$C$F$$$k$G$7$g$&$+(B?</p>
+
+ <example>
+ ap_hook_<var>phase_name</var>(<var>function_name</var>,
+ <var>predecessors</var>, <var>successors</var>, <var>position</var>);
+ </example>
+
+ <p>$B;0$D$N0LCV$,Dj5A$5$l$F$$$^$9!D(B</p>
+
+ <ul>
+ <li><code>HOOK_FIRST</code></li>
+ <li><code>HOOK_MIDDLE</code></li>
+ <li><code>HOOK_LAST</code></li>
+ </ul>
+
+ <p>$B0LCV$rDj5A$9$k$K$O!">e5-$N!V0LCV!W$r;XDj$7!"(B
+ $B=$>~;R$G$"$k!V@h9T!W$H!V8e9T!W$G<j$r2C$($^$9!#(B
+ $B!V@h9T!W!V8e9T!W$O!"8F$P$l$k$Y$-4X?t$N%j%9%H$G$9!#(B
+ $B!V@h9T!W$O4X?t$N<B9TA0$K8F$P$l$k$b$N$G!"(B
+ $B!V8e9T!W$O<B9T8e$K8F$P$l$k$b$N$G$9!#(B</p>
+
+ <p><code>mod_mmap_static</code> $B$N>l9g!"(B<code>post_config</code>
+ $B%9%F!<%8$G$OI,MW$"$j$^$;$s$,!"(B
+ <code>mmap_static_xlat</code> $B$,(B core $B%b%8%e!<%k$,L>A0$NJQ49$r<B9T$7$?8e$K(B
+ <strong>$B8F$P$l$J$1$l$P$J$j$^$;$s(B</strong>$B!#(B
+ $B$=$3$G(B aszPre $B$r;H$C$F(B <code>HOOK_LAST</code> $B$N=$>~;R$rDj5A$7$F$$$^$9!#(B</p>
+ </section>
+
+ <section id="moddef"><title>$B%b%8%e!<%k$NDj5A(B</title>
+ <p>$B%b%8%e!<%k$NDj5A$r:n@.$9$k:]$KCm0U$7$J$1$l$P$J$i$J$$(B
+ $B%9%F!<%8$N?t$O7c8:$7$F$$$^$9!#8E$$Dj5A$O<!$N$h$&$K$J$C$F$$$^$7$?!#(B</p>
+
+ <example><pre>
+module MODULE_VAR_EXPORT <var>module_name</var>_module =
+{
+ STANDARD_MODULE_STUFF,
+ /* initializer */
+ /* dir config creater */
+ /* dir merger --- default is to override */
+ /* server config */
+ /* merge server config */
+ /* command handlers */
+ /* handlers */
+ /* filename translation */
+ /* check_user_id */
+ /* check auth */
+ /* check access */
+ /* type_checker */
+ /* fixups */
+ /* logger */
+ /* header parser */
+ /* child_init */
+ /* child_exit */
+ /* post read-request */
+};</pre>
+ </example>
+
+ <p>$B?7$7$$9=B$BN$O$H$C$F$b%7%s%W%k$G$9!D(B</p>
+ <example><pre>
+module MODULE_VAR_EXPORT <var>module_name</var>_module =
+{
+ STANDARD20_MODULE_STUFF,
+ /* create per-directory config structures */
+ /* merge per-directory config structures */
+ /* create per-server config structures */
+ /* merge per-server config structures */
+ /* command handlers */
+ /* handlers */
+ /* register hooks */
+};</pre>
+ </example>
+
+ <p>$B$3$N$&$A$N$$$/$D$+$O8E$$$b$N$+$i?7$7$$$b$N$KD>@\FI$_BX$($i$l$k$b$N$G!"(B
+ $B$$$/$D$+$O$=$&$G$O$"$j$^$;$s!#$I$&$9$l$P$$$$$N$+$rMWLs$7$F$_$^$9!#(B</p>
+
+ <p>$BD>@\FI$_BX$($i$l$k%9%F!<%8(B:</p>
+
+ <dl>
+ <dt><code>/* $B%G%#%l%/%H%j@_Dj:n@.4X?t(B */</code></dt>
+ <dd><code>/* $B%G%#%l%/%H%jKh@_Dj9=B$BN:n@.(B */</code></dd>
+
+ <dt><code>/* $B%5!<%P@_Dj:n@.4X?t(B */</code></dt>
+ <dd><code>/* $B%5!<%PKh@_Dj9=B$BN:n@.(B */</code></dd>
+
+ <dt><code>/* $B%G%#%l%/%H%j@_Dj%^!<%84X?t(B */</code></dt>
+ <dd><code>/* $B%G%#%l%/%H%jKh@_Dj9=B$BN%^!<%8(B */</code></dd>
+
+ <dt><code>/* $B%5!<%P@_Dj%^!<%84X?t(B */</code></dt>
+ <dd><code>/* $B%5!<%PKh@_Dj9=B$BN:n@.%^!<%8(B */</code></dd>
+
+ <dt><code>/* $B%3%^%s%I!&%F!<%V%k(B */</code></dt>
+ <dd><code>/* $B%3%^%s%I(B apr_table_t */</code></dd>
+
+ <dt><code>/* $B%O%s%I%i(B */</code></dt>
+ <dd><code>/* $B%O%s%I%i(B */</code></dd>
+ </dl>
+
+ <p>$B8E$$4X?t$N;D$j$N$b$N$O%U%C%/$H$7$FEPO?$5$l$k$Y$-$G$9!#(B
+ $B8=;~E@$G<!$N$h$&$J%U%C%/!&%9%F!<%8$,Dj5A$5$l$F$$$^$9!D(B</p>
+
+ <dl>
+ <dt><code>ap_hook_post_config</code></dt>
+ <dd>($B0JA0$N(B <code>_init</code> $B%k!<%A%s$,EPO?$5$l$k$Y$->l=j$G$9(B)</dd>
+
+ <dt><code>ap_hook_http_method</code></dt>
+ <dd>($B%j%/%(%9%H$+$i(B HTTP $B%a%=%C%I$r<hF@$7$^$9(B ($B8_49MQ(B))</dd>
+
+ <dt><code>ap_hook_open_logs</code></dt>
+ <dd>($BFCDj$N%m%0$N%*!<%W%s(B)</dd>
+
+ <dt><code>ap_hook_auth_checker</code></dt>
+ <dd>($B%j%=!<%9$,8"8B$rI,MW$H$9$k$+$I$&$+$N3NG'(B)</dd>
+
+ <dt><code>ap_hook_access_checker</code></dt>
+ <dd>($B%b%8%e!<%k8GM-$N@)Ls$N3NG'(B)</dd>
+
+ <dt><code>ap_hook_check_user_id</code></dt>
+ <dd>($B%f!<%6(B ID $B$H%Q%9%o!<%I$N3NG'(B)</dd>
+
+ <dt><code>ap_hook_default_port</code></dt>
+ <dd>($B%5!<%P$N%G%U%)%k%H!&%]!<%H$N<hF@(B)</dd>
+
+ <dt><code>ap_hook_pre_connection</code></dt>
+ <dd>($B=hM}$ND>A0$KI,MW$J$3$H$r<B9T!#$?$@$7(B accept $BD>8e$K8F$P$l$k(B)</dd>
+
+ <dt><code>ap_hook_process_connection</code></dt>
+ <dd>($B%W%m%H%3%k$N=hM}(B)</dd>
+
+ <dt><code>ap_hook_child_init</code></dt>
+ <dd>($B;R%W%m%;%k5/F0D>8e(B)</dd>
+
+ <dt><code>ap_hook_create_request</code></dt>
+ <dd>(??)</dd>
+
+ <dt><code>ap_hook_fixups</code></dt>
+ <dd>($B1~EzFbMF$N@8@.$rJQ99$9$k%i%9%H!&%A%c%s%9(B)</dd>
+
+ <dt><code>ap_hook_handler</code></dt>
+ <dd>($B1~EzFbMF$N@8@.(B)</dd>
+
+ <dt><code>ap_hook_header_parser</code></dt>
+ <dd>($B%b%8%e!<%k$K%X%C%@$N>H2q$r$5$;$k!#$[$H$s$I$N%b%8%e!<%k$G$O;H$o$l$^$;$s!#(Bpost_read_request $B$r;H$$$^$9(B)</dd>
+
+ <dt><code>ap_hook_insert_filter</code></dt>
+ <dd>($B%U%#%k%?!&%A%'%$%s$K%U%#%k%?$rA^F~(B)</dd>
+
+ <dt><code>ap_hook_log_transaction</code></dt>
+ <dd>($B%j%/%(%9%H$K$D$$$F$N>pJs$r5-O?$9$k(B)</dd>
+
+ <dt><code>ap_hook_optional_fn_retrieve</code></dt>
+ <dd>($B%*%W%7%g%s$H$7$FEPO?$5$l$?4X?t$N<hF@(B)</dd>
+
+ <dt><code>ap_hook_post_read_request</code></dt>
+ <dd>($B%j%/%(%9%H$rFI$_$3$s$@8e!"B>$N%U%'!<%:$NA0$K8F$P$l$k(B)</dd>
+
+ <dt><code>ap_hook_quick_handler</code></dt>
+ <dd>$B%j%/%(%9%H$N=hM}$,;O$^$kA0$K8F$P$l$k!#%-%c%C%7%e%b%8%e!<%k$,(B
+ $B;HMQ$7$F$$$k(B</dd>
+
+ <dt><code>ap_hook_translate_name</code></dt>
+ <dd>(URI $B$r%U%!%$%kL>$KJQ49$9$k(B)</dd>
+
+ <dt><code>ap_hook_type_checker</code></dt>
+ <dd>($BJ8=q7?$N7hDj$H@_Dj!#$"$k$$$O$=$NJRJ}(B)</dd>
+ </dl>
+ </section>
+</section>
+</manualpage>
diff --git a/docs/manual/developer/modules.xml.meta b/docs/manual/developer/modules.xml.meta
index 8ee0297b05..850ae5ce82 100644
--- a/docs/manual/developer/modules.xml.meta
+++ b/docs/manual/developer/modules.xml.meta
@@ -7,6 +7,6 @@
<variants>
<variant>en</variant>
- <variant htmlonly="yes">ja</variant>
+ <variant>ja</variant>
</variants>
</metafile>