XSetErrorHandler(3X11)

名前
XSetErrorHandler, XGetErrorText, XDisplayName, XSetIOErrorHandler, XGetErrorDatabaseText - デフォルトのエラーハンドラ

書式
int (*XSetErrorHandler(handler))()
      int (*handler)(Display *, XErrorEvent *)

XGetErrorText(display, code, buffer_return, length)
      Display *display;
      int code;
      char *buffer_return;
      int length;

char *XDisplayName(string)
      char *string;

int (*XSetIOErrorHandler(handler))()
      int (*handler)(Display *);

XGetErrorDatabaseText(display, name, message, default_string, buffer_return, length)
      Display *display;
      char *name, *message;
      char *default_string;
      char *buffer_return;
      int length;

引き数

buffer_return
    エラー記述が返される。

code
    エラー記述を得ようとするエラーコードを指定。

default_string
    データベースで none になっている場合のデフォルトのエラーメッセージを指 定。

display
    X サーバへの接続を指定。

handler
    プログラムで与えるエラーハンドラを指定。

length
    バッファのサイズを指定。

message
    エラーメッセージのタイプを指定。

name
    アプリケーションの名前を指定。

string
    文字列を指定。

説明
一般的に Xlib は、エラーを受け取ったときは必ずプログラムが与えたエラー ハンドラを呼び出す。 ただし、 プロトコルリクエストからの エラーや プロトコルリクエストからの エラーに対してはエラーハンドラの呼び出しは行われない。 一般的にはこれらのエラーは、手続きインタフェースを通してプログラムに返 される。 この状態は致命的ではないと考えられるので、エラーハンドラから復帰するこ とは認められる。返り値は無視される。 しかし、エラーハンドラはディスプレイに対してプロトコルリクエストを生成 したり入力イベントを求めたりする関数を(直接にも間接にも)呼び出してはな らない。 このような場合、前のエラーハンドラから復帰する。

は指定したエラーコードを説明する NULL で終わる文字列を指定したバッファ にコピーする。 返される文字列は、現在のロケールのエンコーディングになっている。 Xlib の拡張によりエラーコードやエラー文字列が定義されるかもしれないの で、エラーの説明を得るためにはこの関数を使うことが推奨されている。

関数 は が使おうとするディスプレイの名前を返す。 NULL 文字列が指定された場合には はディスプレイについての環境変数を調べ、 が使おうとするディスプレイの名前を返す。 この関数により、最初の接続の試みが失敗した時に、プログラムがどのディス プレイを開こうとしていたのかをユーザに簡単に知らせることができる。

は致命的な I/O エラーのハンドラを設定する。 Xlib はシステムコールのエラー(例えば、サーバへの接続が失われた)が発生 した場合に、ユーザが与えたエラーハンドラを呼び出す。 これは致命的な状態と考えられるので、呼び出されたルーチンからは復帰すべ きではない。 エラーハンドラから復帰をした場合でも、クライアントプロセスは終了する。

先に挙げたエラーハンドラは復帰することに注意せよ。

関数 は、エラーメッセージのデータベースより NULL で終わるメッセージ(あるい はデフォルトのメッセージ)を返す。 引き数 default_string 内のテキストは現在のロケールのエンコーディングであ り、buffer_return 引き数に格納されるテキストも現在のロケールのエンコーディ ングであると想定される。

引き数 name は一般的にアプリケーションの名前である。 引き数 message では必要なメッセージのタイプを示すべきである。 name と message のエンコーディングがホストポータブル文字エンコーディン グでない場合、実行結果は実装依存である。 Xlib はエラーを報告するために3つの予め定義された``アプリケーション名'' を使用する。 これらの名前については、大文字と小文字は区別される。

XProtoError
    プロトコルエラー番号は、引き数 message に対する文字列として使用される。

XlibMessage
    これらは、ライブラリによって内部的に使用されるメッセージ文字列である。

XRequest
    コアプロトコルリクエストに対して、メジャーリクエストプロトコル番号は引き数 message に対して使用される。 拡張リクエストに対して、ピリオド(.)前にある拡張名( で与えられる )とマイナーリクエストプロトコル番号は引き数 message に対し て使用される。 エラーデータベースで文字列が見つからない場合には、default_strin が引き数 buffer に返される。

関連項目
XOpenDisplay(3X11), XSynchronize(3X11)
Xlib - C Language X Interface