typedef struct xauth { unsigned short family; unsigned short address_length; char *address; unsigned short number_length; char *number; unsigned short name_length; char *name; unsigned short data_length; char *data; } Xauth; char *XauFileName () Xauth *XauReadAuth (auth_file) FILE *auth_file; int XauWriteAuth (auth_file, auth) FILE *auth_file; Xauth *auth; Xauth *XauGetAuthByAddr (family, address_length, address, number_length, number) unsigned short family; unsigned short address_length; char *address; unsigned short number_length; char *number; Xauth *XauGetBestAuthByAddr (family, address_length, address, number_length, number, types_length, types, type_lengths) unsigned short family; unsigned short address_length; char *address; unsigned short number_length; char *number; int types_length; char **types; int *type_lengths; int XauLockAuth (file_name, retries, timeout, dead) char *file_name; int retries; int timeout; long dead; int XauUnlockAuth (file_name) char *file_name; XauDisposeAuth (auth) Xauth *auth;
XauFileName はデフォルトの認証ファイル名を生成する。 まず最初に環境変数 XAUTHORITY がセットされていればこれを調べ、なければ $HOME/.Xauthority を返す。この名前は静的に割り当てられているので、解 放してはならない。
XauReadAuth は auth_file から次のエントリを取得する。 エントリは静的には割り当てられていないので、XauDisposeAuth を呼び出して解放しなければならない。
XuWriteAuth は認証エントリを auth_file に書き出す。 この関数は成功時には1を、失敗時には0を返す。
XauGetAuthByAddr は与えられた ネットワークアドレス/ディスプレイ番号のペアに一致するエントリを検索する。 エントリは静的に割り当てられないので、XauDisposeAuth を呼んで 解放しなければならない。
XauGetBestAuthByAddr は、許される認証方法のリストが指定される点 が異なる点を除き、 XauGetAuthByAddr とほぼ同じである。Xau は、こ のリスト中で最も早いエントリに一致したファイルエントリを選択する(例え ば、最も安全な認証方法)。引き数 types は文字列の配列であり、一つの 文字列がそれぞれの認証方法に対応する。types_length は、配列 types にいくつ要素があるかを指定する。 types_lengths はそれぞれの文字列の長さを表す整数の配列である。
XauLockAuth は、認証ファイルを同期して更新するために必要な仕事を 行う。この関数はまず2つのファイル名を生成する。1つは file_name に ``-c'' を追加したものであり、もう1つは ``-l'' を追加したものである。 もし ``-c'' が追加されたファイルが存在し、これが dead 秒以上古い 場合には、XauLockAuth はこのファイルとこれに対応する ``-l'' が追 加されたファイルを削除する。NFS による同期の問題を避けるため、 dead の値が 0 ならばファイルを削除する。XauLockAuth は ファイル名の生成とリンク作成を retries 回試みる。この試行の間に は timeout 秒休止する。XauLockAuth は結果によって決まる値 の集合を返す。
LOCK_ERROR システムエラーが発生した。ファイル名が長すぎる か、システムコールが予期しない失敗をした。errno が役に 立つと思われる。 LOCK_TIMEOUT retries 回試みが失敗した LOCK_SUCCESS ロックに成功した。
XauUnlockAuth は、``-c'' と ``-l'' が加えられたファイル名を両方 削除することにより、 XauLockAuth の結果を取り消す。
XauDisposeAuth は、認証エントリを格納している、割り当てられた メモリを解放する。