XtResolvePathname(3) 標準的な置き換えを使ってファイルを探す

書式

String XtResolvePathname(display, type, filename, suffix, path, substitutions, num_substitutions, predicate)

      Display *display;

      String typefilenamesuffixpath;

      Substitution substitutions;

      Cardinal num_substitutions;

      XtFilePredicate predicate;

引き数

display
Specifies the display to use to find the language for language substitutions.
type

filename

suffix
パスで置き換える値を指定。
path
ファイル指定のリスト、あるいは NULL を指定。
substitutions
パスに行う追加的な置き換えのリスト、あるいは NULL を指定。
num_substitutions
substitutions のエントリー数を指定。
predicate
ファイル名の各候補を判定するために呼ぶ手続き、あるいは NULL を指定。

説明

XtResolvePathname で指定した置き換えは、 指定したディスプレイに対する XtDisplayInitialize で取得した言語文字列の値から決められる。 どのアプリケーションに対しても、リソースデータベースにおいて ``*xnlLanguage: lang'' を指定することで言語を設定することができ る。 言語文字列のフォーマットと内容は実装定義である。記法の例を挙げると、言 語文字列は3つのパートを組み合わせて作ることができる。これは「言語パー ト」「地域パート」「コードセットパート」である。この組み合わせを行う方 法は実装定義であり、以下で説明する置き換えに使う以外にはイントリンシク スはパートの解釈は行わない。

XtResolvePathname は、呼び出し側が渡したものに加えて以下の置き換えを使って XtFindFile を呼び出し、 XtFindFile が返した値を返す。

%N
filename パラメータの値。 filename が NULL ならばアプリケーションのクラス名。
%T
type パラメータの値。
%S
suffix パラメータの値。
%L
指定したディスプレイに関連づけられた言語文字列。
%l
ディスプレイの言語文字列の言語パート。
%t
ディスプレイの言語文字列の地域パート。
%c
ディスプレイの言語文字列のコードセットパート。
%C
display に対応づけられたリソースデータベースから取得したカスタマ イズ文字列。
%D
実装固有であるデフォルトのパスの値。

パスが XtResolvePathname に渡される場合、これは XtFindFile に渡される。 引き数 path が NULL ならば、環境変数 XFILESEARCHPATH の値が XtFindFile に渡される。 XFILESEARCHPATH が定義されていない場合、少なくとも6つのエントリーを持つ実装固有のデフォ ルトのパスが使われる。このエントリーは以下の置き換えを含まなければなら ない:

1. %C, %N, %S, %T, %L    または%C, %N, %S, %T, %l, %t, %c
2. %C, %N, %S, %T, %l
3. %C, %N, %S, %T
4. %N, %S, %T, %L   または%N, %S, %T, %l, %t, %c
5. %N, %S, %T, %l
6. %N, %S, %T

パスにおける6つのエントリーの順序は上記のままでなければならない。 与えられたエントリーにおける置き換えの順序と使用は実装依存である。 パスがコロンで始まる場合、その前には %N%S が置かれる。パス中でコロンが 2つ続いている場合には、その間に %N%S が挿入される。

type パラメータはファイルのカテゴリーを示すためのものであり、通 常はパス名内でディレクトリに置換される。これは ``app-defaults'', ``help'', ``bitmap'' 等の値を持つ。

suffix パラメータはファイル名に追加されるものである。 これは ``.txt'', ``.dat'', ``.bm'' 等の値を持つ。

POSIX 準拠のシステムにおけるデフォルトのパスの値の例を挙げる。

<XRoot>/lib/X11/%L/%T/%N%C%S:<XRoot>/lib/X11/%l/%T/%N%C%S:\
<XRoot>/lib/X11/%T/%N%C%S:<XRoot>/lib/X11/%L/%T/%N%S:\
<XRoot>/lib/X11/%l/%T/%N%S:<XRoot>/lib/X11/%T/%N%S

ここで <XRoot> は X11 のインストールツリーのルート(例えば /usr/X11R6) に置き換えられる。

この例を使ってユーザが言語を指定した場合には、これは他のファイルを探す ための <XRoot>/lib/X11 のサブディレクトリとして使われる。求めるサイズ がそこで見つからない場合、指定の言語パートだけを使って次の検索が行われ る。それでも見つからない場合には、<XRoot>/lib/X11 が検索される。 type パラメータは言語ディレクトリのサブディレクトリまたは <XRoot>/lib/X11 のサブディレクトリとして使われ、suffix がファイ ル名に追加される。

%D による置き換えを使うと、実行固有のデフォルトパスにパス要素の追加を 行うことができる。特に、システムディレクトリにおけるリソース発見を妨げ ることなく追加のディレクトリを検索することができる。例えば、ユーザがディ レクトリ ``ourdir'' にリソースファイルをインストールした場合、 XFILESEARCHPATH は %D:ourdir/%T/%N%C:ourdir/%T/%N のようにセットされる。

カスタマイズ文字列は、ディスプレイに現在関連づけられているリソースデー タベース( XrmGetDatabase が返すデータベース)に対してリソース application_name.customization やクラス application_class.Customization を問い合わせることで取得できる。 ここで application_nameapplication_classXtGetApplicationNameAndClass が返す値である。 データベース中に値が指定されていない場合には、空文字列が使われる。

返された文字列が不要になったとき、 XtFree を使ってこの文字列を解放するのは呼び出し側の責任である。