2.11.2.2 安全/危険なエンコード名
TPMBENC
で指定する安全または危険なエンコード名という考えは、これらのエンコードのマルチバイト文字データにNULLが埋め込まれているかどうかで決まります。_mbspresend()
関数はstrlen()
を使用してデータの長さを決めるので、NULLが埋め込まれていると、データの長さが不適切になり、誤ったデータ・バイト数が送られてしまいます。
sendlen0_unsafe_tpmbenc
のデフォルト・リストには、NULLが埋め込まれている可能性がある(便宜上、大文字および小文字の)マルチバイトUnicodeエンコード名があります。アプリケーション管理またはパフォーマンスを考慮すると、このリストを変更する必要があります。
- ファイルがあっても空の場合は、
MBSTRING
自己記述処理ですべてのエンコード名が安全なものとみなされます。 - ファイルがない場合は、
MBSTRING
自己記述処理ですべてのエンコード名が危険なものとみなされます(tperrno
はTPEINVAL
になります)。 - ファイルがあり、名前のリストを格納している場合は、このファイルが(
_mbsinit()
で)一度読み取られ、Tuxedoの内部にリストが格納されます。mbsinit()
の実行中に、格納されているリストとTPMBENC
名が比較され、バッファが安全または危険に設定されます。_mbspresend()
が呼び出され(sendlen
引数がゼロに設定されている状態)、バッファが安全とマークされると、データの長さはTuxedoの内部で設定されます。
親トピック: MBSTRINGを自己記述型にする