名前 | 形式 | 機能説明 | 戻り値 | 使用例 | ファイル | 属性 | 関連項目
cc [flag...] file... -ltsol -lDtTsol [library...]
#include <Dt/ModLabel.h> ModLabelData *tsol_lbuild_create(Widget widget void (*event_handler)() ok_callback lbuild_attributes extended_operation, ...., NULL);
void *tsol_lbuild_get(ModLabelData *data, lbuild_attributes extended_operation);
void tsol_lbuild_set(ModLabelData *data lbuild_attributes extended_operation, ...., NULL);
void tsol_lbuild_destroy(ModLabelData *data);
ラベルビルダーのユーザーインタフェースは、エンドユーザーに情報の入力を求めるプロンプトを表示し、アプリケーションを実行しているシステム上の label_encodings(4) ファイルの指定に基づいて、ユーザー入力から有効な機密ラベルまたは認可上限を生成します。エンドユーザーは、テキスト値を入力するか、対話形式でオプションを選択することによって、ラベルまたは認可上限を構築できます。
アプリケーション固有の機能は、OK プッシュボタンのコールバックで実行されます。このコールバックは tsol_lbuild_create() 呼び出しに引き渡され、OK プッシュボタンウィジェットに対応付けられます。
オプションの選択時、ラベルビルダーでは、実行可能ファイルが有効なセットの中に PRIV_SYS_TRANS_LABEL 特権を持つ場合を除いて、ワークスペースの機密ラベルより下位の格付け (と関連コンパートメントおよびマーキング) だけが表示されます。
エンドユーザーがラベルを昇格または降格する承認を持たない場合、ユーザーが構築したラベルがユーザーの認可範囲を超える場合は、OK プッシュボタンとリセットプッシュボタンは灰色表示になっています。これらの制限を無効にする特権はありません。
tsol_lbuild_create() は、グラフィカルユーザーインタフェースを作成し、ユーザーインタフェースについての情報を含む ModLabeldata* タイプのポインタ変数を返します。この情報は、tsol_lbuild_create() 入力パラメータリストに引き渡される値、指定されていない情報のデフォルト値、ラベルビルダーがユーザーインタフェースを 作成するのに使用するウィジェットについての情報の組み合わせです。ウィジェット情報を除くすべての情報には tsol_lbuild_get() ルーチンと tsol_lbuild_set() ルーチンでアクセスします。
ウィジェット情報には、ModLabelData 構造体の次のフィールドを参照すると、直接アクセスできます。
ラベルビルダーダイアログボックス。
OK プッシュボタン。
取消しプッシュボタン。
リセットプッシュボタン。
ヘルププッシュボタン。
tsol_lbuild_create() パラメータリストは次の値をとります。
ダイアログボックスを作成するウィジェット。どの Motif ウィジェットも引き渡せます。
ダイアログボックス上に OK プッシュボタンの動作を実装するコールバック機能。
拡張操作と値の組み合わせから成る NULL で終わるリスト。ラベルビルダーダイアログボックスの特性と動作を定義します。
tsol_lbuild_destroy() は、tsol_lbuild_create() が返す ModLabelData 構造体を破棄します。
tsol_lbuild_get() と tsol_lbuild_set() は、tsol_lbuild_create() が返す ModLabelData 構造体に格納されている情報にアクセスします。
次の拡張操作は、tsol_lbuild_create() に引き渡すとユーザーインタフェースを構築でき、tsol_lbuild_get() に引き渡すとユーザーインタフェースについての情報を検出でき、tsol_lbuild_set() に引き渡すとユーザーインタフェースの情報を変更できます。tsol_lbuild_get() に対してはすべての拡張操作が有効ですが、*WORK* 操作はエンドユーザーからの入力によって設定されるため tsol_lbuild_set() または tsol_lbuild_create() に対しては有効ではありません。これらの例外事項については「機能説明」で解説します。
機密ラベルまたは認可上限のどちらを構築するためのユーザーインタフェースを作成するかを指定します。デフォルト値は LBUILD_MODE_SL です。
機密ラベルを構築します。
認可上限を構築します。
開始機密ラベル。デフォルト値は ADMIN_LOW で、モードが LBUILD_MODE_SL のときに使用されます。
開始認可上限。デフォルト値は ADMIN_LOW で、モードが LBUILD_MODE_CLR のときに使用されます。
ラベルビルダーダイアログボックスの一番上に表示される文字列プロンプト。デフォルト値は NULL です。
ラベルビルダーダイアログボックスの表示と非表示を切り替えます。デフォルト値は FALSE です。
ラベルビルダーダイアログボックスを表示します。
ラベルビルダーダイアログボックスを非表示にします。
ラベルビルダーダイアログボックスの一番上に表示される文字列タイトル。デフォルト値は NULL です。
tsol_lbuild_set()、tsol_lbuild_create() に対しては有効ではありません。エンドユーザーが構築中の機密ラベル。更新プッシュボタンを選択するか、対話形式でオプションを選択すると、値はエンドユーザーの入力値に更新されます。
tsol_lbuild_set()、tsol_lbuild_create() に対しては有効ではありません。エンドユーザーが構築中の認可上限。更新プッシュボタンを選択するか、対話形式でオプションを選択すると、値はエンドユーザーの入力値に更新されます。
画面の左上角を基準として、ラベルビルダーダイアログボックスの左上角の X 位置 (ピクセル数)。ラベルビルダーダイアログボックスは、デフォルトで、画面の中央に配置されます。
画面の左上角を基準として、ラベルビルダーダイアログボックスの左上角の Y 位置 (ピクセル数)。ラベルビルダーダイアログボックスは、デフォルトで、画面の中央に配置されます。
ラベルまたは認可上限を対話形式で構築する際、ユーザーが使用できるラジオボタンとして最下位の格付け (と関連するコンパートメントおよびマーキング)。この値はユーザーの最下位ラベルです。
ラベルまたは認可上限を対話形式で構築する際、ユーザーが使用できるラジオボタンとして最上位の格付け (と関連するコンパートメントおよびマーキング)。指定する値はユーザーの認可範囲内とします。値が指定されない場合、値はユーザーのワークスペース機密ラベルとなります。また、実行可能ファイルに PRIV_SYS_TRANS_LABEL 特権がある場合、 値はユーザーの認可上限になります。
ユーザーが構築し「更新後のラベル」フィールドに入力されたラベルが、ユーザーの認可範囲内にあるかどうかをチェックします。値 1 のときはチェックが行われ、値 0 のときはチェックが行われません。チェックを実行するように指定したとき、ラベルが範囲外であれば、エンドユーザーにエラーメッセージが表示されます。
内部または外部のラベル表現を使用します。デフォルト値は LBUILD_VIEW_EXTERNAL です。
システム内の最上位ラベルと最下位ラベル、ADMIN_HIGH と ADMIN_LOW の内部名を使用します。
ADMIN_LOW ラベルを次に高いラベルに昇格し、ADMIN_HIGH ラベルを次に低いラベルに降格します。
tsol_lbuild_get() は、値を取得できなかった場合、-1 を返します。
tsol_lbuild_create() ルーチンは、tsol_lbuild_create() 入力パラメータリストに指定される情報を含む ModLabelData タイプの変数、指定されていない情報のデフォルト値、ラベルビルダーがユーザーインタフェースを作成するのに使用するウィジェットに関する情報を返します。
(ModLabelData *)lbldata = tsol_lbuild_create(widget0, callback_function, LBUILD_MODE, LBUILD_MODE_SL, LBUILD_TITLE, "Setting Sensitivity Label", LBUILD_VIEW, LBUILD_VIEW_INTERNAL, LBUILD_X, 200, LBUILD_Y, 200, LBUILD_USERFIELD, "Pathname:", LBUILD_SHOW, FALSE, NULL); |
次の例は、tsol_lbuild_get() ルーチンを呼び出して使用中のモードを問い合わせ、tsol_lbuild_set() ルーチンを呼び出してラベルビルダーダイアログボックスが表示されるようにします。
mode = (int)tsol_lbuild_get(lbldata, LBUILD_MODE ); tsol_lbuild_set(lbldata, LBUILD_SHOW, TRUE, NULL); |
次の例は、tsol_lbuild_create() を呼び出したときに返される ModLabelData 変数を破棄します。
tsol_lbuild_destroy(lbldata); |
ラベルビルダー機能用ヘッダーファイル
ラベルエンコーディングファイルには、このシステムの定義済みラベルに対する格付け名、語句、制約、および値が含まれます。
次の属性については、attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWtsu |
MT レベル |
MT-安全 |