mdnconvはネームサーバの設定ファイル named.conf や
ゾーンマスタファイルのためのコードセット (エンコーディング) 変換ツールです。
mdnconvは引数で指定されたファイル、あるいは標準入力からテキストを入力し、
mDNkit の設定ファイル (mdn.conf) やオプションで指定された
エンコーディング変換および正規化を実行し、結果を標準出力に書き出します。
具体的な使い方に関しては利用者ガイドの
named.conf、
ゾーンマスタファイルの作成の項をご覧ください。
なお、mdnconv は 環境変数 MDN_DISABLE の設定を明示的に無視するため、 MDN_DISABLE が設定されているかどうかにかかわらず、ドメイン名の変換処理を 行います。
mdnconv を起動する際の、コマンド行の形式は次の通りです。
% mdnconv [オプション...] [ファイル名...]
mdnconvのオプションには、mDNkitの設定ファイル (mdn.conf)
のエントリと同じ設定機能を持っているものが多数あります。
設定ファイル内のエントリとオプションの両方を指定している場合、
その設定項目が複数回定義できるもの (例えば nameprep-map
エントリとそれに相当する -map オプション) であれば、指
定は両方とも有効になります。正確には、設定ファイルの定義内容がまず設定
され、オプションで指定した内容が追加されます。
また、設定項目が一つしか定義できないもの (例えば idn-encoding
とそれに相当する-out オプション) については、両方指定する
とオプションの方が優先されます。
mdnconv が認識するオプションは、次の通りです。 よく使われると思われるオプションに関しては、短縮形として1文字のオプション を用意してあります。
-in <in-code>
-i <in-code>
  -reverseオプションが指定されている場合には
  mDNkit 設定ファイルの
  idn-encoding
  エントリの設定がデフォルトとなります。
-out <out-code>
-o <out-code>
  idn-encoding
  エントリに指定されたエンコーディングです。
  ただし後述する-reverseオプションが指定されている場合には
  アプリケーションの
  ローカルエンコーディング
  がデフォルトとなります。
-conf <path>
-c <path>
  mdn.conf) のパス名を指定します。
  オプション -conf、-noconf のいずれも指定しな
  かった場合は、デフォルトの設定ファイルを読み込みます。
-noconf
-C
  mdn.conf) を読み込まないようにします。
-reverse
-r
  -nameprep <version>
-n <version>
  nameprepエントリ
  に相当します。
-nonameprep
-N
  -nounassigncheck の効果も合わせ持っています。
-map <scheme>
  nameprep-map
  エントリに相当します。
  このオプションは複数回指定することが可能です。
-normalize <scheme>
  nameprep-normalize
  エントリに相当します。
  このオプションは複数回指定することが可能です。
-prohibit <set>
  nameprep-prohibit
  エントリに相当します。
  このオプションは複数回指定することが可能です。
-unassigned <set>
  nameprep-unassigned
  エントリに相当します。
  このオプションは複数回指定することが可能ですが、-nonameprep
  もしくは -nounassigncheck が指定されたときは無視されます。
-nounassigncheck
-U
  -delimiter <codepoint>
  .') 以外にドメイン名の区切りと見なしたい
  文字を指定します。
  mDNkit の設定ファイルの
  delimiter-map
  エントリに相当します。
  このオプションは複数回指定することが可能ですが、-reverse
  オプションが指定されたとき、あるいは-delimitermap が指定
  されなかったときは無視されます。
-localmap <map>
  local-map
  エントリで、トップレベルドメイン `.' に対するマッピング
  を指定することに相当します。
  このオプションは複数回指定することが可能ですが、-reverse
  オプションが指定されたとき、あるいは-nolocalmap が指定
  されたときは無視されます。
-nolocalmap
-L
  -reverseオプションが指定されたときは無視されます。
-delimitermap
-d
  .') 以外の文字を、ピリオドにマッピングし
  ます。このオプションを指定しなければ、通常このマッピングは行いません。
  -reverseオプションが指定されたときは、無視されます。
-whole
-w
  -alias path
-a path
  encoding-alias-file
  エントリに相当します。
-flush
  -version
-v
  
mdnconv の順方向変換 (-reverse オプション無指定時の動作)
では、入力データに対して一行ずつ次のような処理が行われます。
-whole オプションをつけて mdnconv を実行し、かつ
  出力エンコーディングが Punycode や RACE など ASCII 互換
  エンコーディングの場合に、改行コードも Punycode や RACE で
  エンコードされてしまい、改行がなくなってしまうのを避けるためです。
-whole オプションが指定されていない場合は、次のような
  特別な処理を行います。
  これは、入力行中にスペース等の ACE には含まれない文字が入っていると、
  変換できずにエラーになってしまうためです。
  -whole オプションが指定されていれば、行全体を
  一つのドメイン名とみなして取り出します。指定されていなければ、次の条件に
  該当する部分文字列を多言語ドメイン名とみなして、一つずつ取り出します。
  .') に変換します。
  ただし、-delimitermapが指定されている場合、この処理は
  飛ばします。
-nolocalmapが指定されている場合、この処理は
  飛ばします。
-nonameprepが指定されている場合、これらの正規化処理
  は一切行わないようにします。また、-nounassigncheck が指定
  されている場合は、未割り当てコードポイントの検査だけを行わないようにします。
-out で指定された出力
  エンコーディングに変換します。
mdnconv の逆方向変換 (-reverse オプション指定時の動作)
では、入力データに対して一行ずつ次のような処理が行われます。
-whole オプションが指定されている場合は、行全体
  を一つの多言語ドメイン名とみなして取り出します。
  それ以外の場合は、行の中から正しい ASCII ドメイン名と解釈できる
  部分文字列 (英数字とハイフン、ピリオドだけから構成される部分、ただし
  先頭は英数字のみ、末尾はハイフン以外の文字) をすべて探し出します。
  そして、見つかった個々の文字列に対して、入力 ACE エンコーディングから
  UTF-8 への変換を試み、成功すればその文字列を多言語ドメイン名とみなして
  取り出します。
  このような処理を行うことにより、行の途中に ACE でエンコードされた
  文字列が混ざっている場合にもかなり高い確率で正しく多言語ドメイン名を
  取り出すことができます。
-nonameprepが指定されている場合、これらの検査は
  一切行わないようにします。-nounassigncheckが指定されている
  場合は、未割り当てコードポイントの検査だけを行わないようにします。
-out で指定された
  出力エンコーディングに変換します。