Provided by: manpages-ja-dev_0.5.0.0.20140515+dfsg-2_all bug

名前

       xdr - 外部データ表現(XDR)のためのライブラリ・ルーティン

書式と説明

       これらのルーティンは C プログラマーがマシン非依存な形式で 任意のデータ構造体を記述すること
       を可能にする。 リモート・プロシジャ・コールのためのデータはこれらのルーティンを 使用して送
       信される。

       以下に示すプロトタイプ宣言は <rpc/xdr.h> で行われており、その中では次の型が使用される。

           typedef int bool_t;

           typedef bool_t (*xdrproc_ti) (XDR *, void *,...);

       XDR 型の宣言については、 <rpc/xdr.h> を参照。

       bool_t xdr_array(XDR *xdrs, char **arrp, unsigned int *sizep,
                        unsigned int maxsize, unsigned int elsize,
                        xdrproc_t elproc);

              可変長の配列とそれに対応する外部表現とを変換する基本フィルター。 引き数 arrp は配列
              へのポインターのアドレスであり、 sizep は配列の要素数のアドレスである。  これらの要
              素数は  maxsize を超えてはならない。 引き数 elsize は各配列の要素の sizeof であり、
              elproc は配列要素を C 形式からその外部表現に変換するための  XDR  フィルターである。
              このルーティンは成功した場合には 1 を返す。 失敗した場合にはゼロを返す。

       bool_t xdr_bool(XDR *xdrs, bool_t *bp);

              真偽値(C  の  int)とその外部表現とを変換する基本フィルター。 データをエンコードする
              時、このフィルターは 1 また 0 の値を生成する。  このルーティンは成功した場合には  1
              を返す。 失敗した場合には 0 を返す。

       bool_t xdr_bytes(XDR *xdrs, char **sp, unsigned int *sizep,
                        unsigned int maxsize);

              ある長さのバイト文字列とその外部表現とを変換する基本フィルター。 引き数 sp は文字列
              ポインターのアドレスである。文字列の長さは sizep のアドレスに置く。文字列は maxsize
              より長くてはいけない。 このルーティンは成功した場合には 1 を返す。 失敗した場合には
              0 を返す。

       bool_t xdr_char(XDR *xdrs, char *cp);

              C の文字(char)とその外部表現との間を変換する基本フィルター。 このルーティンは成功し
              た場合には  1 を返す。 失敗した場合には 0 を返す。 注意: エンコードされたデータは詰
              め込まれておらず、それぞれ  4  バイトを  占める。文字の配列の場合には  xdr_bytes(),
              xdr_opaque(), xdr_string()  などを考慮した方が良い。

       void xdr_destroy(XDR *xdrs);

              このマクロは  XDR ストリーム xdrs に関連付けられた破壊ルーティンを呼び出す。 破壊に
              は通常、ストリームに関連付けられた私的データ構造体の解放が含まれている。
              xdr_destroy()  の呼び出しの後に xdrs を使用することは未定義である。

       bool_t xdr_double(XDR *xdrs, double *dp);

              C  の 倍精度数 (double) とその外部表現との変換を行なう基本フィルター。 このルーティ
              ンは成功した場合は 1 を返す。 失敗した場合は 0 を返す。

       bool_t xdr_enum(XDR *xdrs, enum_t *ep);

              C の enum (実際には int)とその外部表現との変換を行なう基本フィルター。 このルーティ
              ンは成功した場合は 1 を返す。 失敗した場合は 0 を返す。

       bool_t xdr_float(XDR *xdrs, float *fp);

              C  の  浮動小数点数 (float) とその外部表現との変換を行なう基本フィルター。 このルー
              ティンは成功した場合は 1 を返す。 失敗した場合は 0 を返す。

       void xdr_free(xdrproc_t proc, char *objp);

              汎用解放(free)ルーティン。最初の引き数はオブジェクトを解放するための XDR ルーティン
              である。二番目の引き数はそのオブジェクト自身へのポインター  である。注意:  このルー
              ティンに渡されるポインターは  解放されない  が、このポインターの指すデータは(再帰的
              に)  解放されるunsigned int xdr_getpos(XDR *xdrs);

              このマクロは  XDR ストリーム xdrs に関連付けられた位置取得ルーティンを呼び出す。 こ
              のルーティンは XDR バイト・ストリームの位置を指示する符号無し整数を返す。 XDR  スト
              リームの機能としてこの数値で単純な算術作業ができることが 期待されてるいる。しかしな
              がら XDR ストリームの実体はこれを保証する必要はない。

       long *xdr_inline(XDR *xdrs, int len);

              このマクロは XDR ストリーム xdrs に関連付けられた内部(inline)ルーティンを呼び出す。
              ルーティンはストリームのバッファーの連続する断片へのポインターを返す。 len は要求す
              るバッファーのバイト長である。 注意: ポインターは long * にキャストされる。

              警告: xdr_inline()   はバッファーの連続する断片を割り当てることができなかった場合に
              は  NULL (0)を返すかもしれない。 どの場合もその動作はストリームの実体によって変化す
              るかもしれない。 これは効率化のために存在している。

       bool_t xdr_int(XDR *xdrs, int *ip);

              C の整数(int)とその外部表現とを変換するための基本フィルター。  このルーティンは成功
              した場合は 1 を返す。 失敗した場合はゼロを返す。

       bool_t xdr_long(XDR *xdrs, long *lp);

              C の long 整数とそのその外部表現とを変換するための基本フィルター。 このルーティンは
              成功した場合は 1 を返す。 失敗した場合はゼロを返す。

       void xdrmem_create(XDR *xdrs, char *addr, unsigned int size,
                          enum xdr_op op);

              このルーティンは xdrs によって指されている  XDR  ストリーム・オブジェクトを初期化す
              る。  ストリームのデータは addr 位置にあるメモリーの塊から読み書きされる。 その長さ
              はバイト単位で size 超えてはいけない。  op  は  XDR  ストリームの変換方向を決定する
              (XDR_ENCODE, XDR_DECODE, XDR_FREE のどれか)。

       bool_t xdr_opaque(XDR *xdrs, char *cp, unsigned int cnt);

              固定長の不明データとその外部表現との変換を行なう基本フィルター。 引き数 cp は不明オ
              ブジェクトのアドレスであり cnt はそのバイト単位の大きさである。  このルーティンは成
              功した場合は 1 を返す。 失敗した場合はゼロを返す。

       bool_t xdr_pointer(XDR *xdrs, char **objpp,
                          unsigned int objsize, xdrproc_t xdrobj);

              xdr_reference()          と同様であるが、これがヌルポインターを番号化するのに対して
              xdr_reference() はそうしない点が異なっている。これにより、 xdr_pointer()   は二分木
              や連結リストのような再帰的なデータ構造体を 表現できる。

       void xdrrec_create(XDR *xdrs, unsigned int sendsize,
                          unsigned int recvsize, char *handle,
                          int (*readit) (char *, char *, int),
                          int (*writeit) (char *, char *, int));

              このルーティンは  xdrs  で指された  XDR ストリーム・オブジェクトを初期化する。 スト
              リームのデータは大きさ sendsize  のバッファへ書き込まれる。  sendsize  をゼロにする
              と、システムに適切なデフォルトを使用するように指示する。 ストリームのデータは大きさ
              recvsize のバッファから読み込まれる。これもゼロを渡すことで適切なデフォルトに  設定
              することができる。   ストリームの出力バッファが一杯の場合は   writeit  が呼び出され
              る。同様にストリーム入力バッファが空の場合には readit  が呼び出される。これらの二つ
              のルーティンの動作はシステムコールの  read(2)  や write(2) と似ているが、前者のルー
              ティンは最初の引き数として handle が渡される点で異なっている。 注意: XDR ストリーム
              の op は呼び出し側で設定しなければならない。

              警告:  この XDR ストリームは中間レコード・ストリームを実装している。 レコード境界の
              情報を提供するためにストリームには余分なバイトが存在する。

       bool_t xdrrec_endofrecord(XDR *xdrs, int sendnow);

              このルーティンは xdrrec_create()   によって作成されたストリームに対してのみ呼び出す
              ことができる。  出力バッファのデータは完全なレコードとして印され、 sendnow がゼロで
              ない場合には出力バッファは書き出される。  このルーティンは成功した場合は   1   を返
              す。失敗した場合はゼロを返す。

       bool_t xdrrec_eof(XDR *xdrs);

              このルーティンは  xdrrec_create()  によって作成されたストリームに対してのみ呼び出す
              ことができる。 ストリームの現在のレコードの残りを消費した後に、  ストリームに入力が
              残っていない場合には 1 を返す。 それ以外の場合はゼロを返す。

       bool_t xdrrec_skiprecord(XDR *xdrs);

              このルーティンは  xdrrec_create()  によって作成されたストリームに対してのみ呼び出す
              ことができる。  XDR  の実装にそのストリームの入力バッファーの現在のレコードの残りを
              捨てるように伝える。このルーティンは成功した場合は  1 を返す。 失敗した場合はゼロを
              返す。

       bool_t xdr_reference(XDR *xdrs, char **pp, unsigned int size,
                            xdrproc_t proc);

              構造体へのポインター追跡を提供する基本ルーティン。 引き数 pp はポインターのアドレス
              である。  size*pp が指している構造体の sizeof である。 proc はその構造体の C 形
              式と外部表現との変換を行なう XDR プロシジャである。 このルーティンは成功した場合  1
              を返す。 失敗した場合はゼロを返す。

              警告:              このルーティンはヌルポインターを理解することができない。かわりに
              xdr_pointer()  を使用すること。

       xdr_setpos(XDR *xdrs, unsigned int pos);

              このマクロは XDR ストリーム xdrs に関連付けられた位置設定ルーティンを呼び出す。引き
              数 posxdr_getpos() によって取得される位置数値である。 このルーティンは XDR スト
              リームの位置の変更ができた場合には 1 を返す。 それ以外の場合は 0 を返す。

              警告: ある種の XDR ストリームの場合は位置の変更を行なうことが困難である。  それでこ
              のルーティンはある種のストリームの場合には成功し、別の種類の 場合には失敗するかもし
              れない。

       bool_t xdr_short(XDR *xdrs, short *sp);

              C の short 整数とその外部表現との変換を行なう基本フィルター。  このルーティンは成功
              すると 1 を返す。 失敗した場合はゼロを返す。

       void xdrstdio_create(XDR *xdrs, FILE *file, enum xdr_op op);

              このルーティンは  xdrs で指された XDR ストリーム・オブジェクトを初期化する。 XDR ス
              トリームに読み書きれたデータは stdio ストリーム file が使用される。 op 引き数は XDR
              ストリームの変換方向を決定する (XDR_ENCODE, XDR_DECODE, XDR_FREE のどれか)。

              警告: このような XDR ストリームに関連付けられた破壊ルーティンは file ストリームに対
              して fflush(3)  を呼び出すが fclose(3)  を呼び出すことはない。

       bool_t xdr_string(XDR *xdrs, char **sp, unsigned int maxsize);

              C    の文字列とそれに対応する外部表現とを変換するための基本フィルター。    文字列は
              maxsize より長くはできない。 注意: sp は文字列へのポインターのアドレスである。 この
              ルーティンは成功した場合は 1 を返す。 失敗した場合はゼロを返す。

       bool_t xdr_u_char(XDR *xdrs, unsigned char *ucp);

              C の 符号無し文字 (unsigned char)  とその外部表現とを変換する基本フィルター。  この
              ルーティンは成功した場合は 1 を返す。 失敗した場合はゼロを返す。

       bool_t xdr_u_int(XDR *xdrs, unsigned *up);

              C  の  符号無し整数  (unsigned) とその外部表現を変換するための基本フィルター。 この
              ルーティンは成功した場合は 1 を返す。 失敗した場合はゼロを返す。

       bool_t xdr_u_long(XDR *xdrs, unsigned long *ulp);

              C の unsigned long 整数とその外部表現を変換するための基本フィルター。  このルーティ
              ンは成功した場合は 1 を返す。 失敗した場合はゼロを返す。

       bool_t xdr_u_short(XDR *xdrs, unsigned short *usp);

              C の unsigned short 整数とその外部表現を変換するための基本フィルター。 このルーティ
              ンは成功した場合は 1 を返す。 失敗した場合はゼロを返す。

       bool_t xdr_union(XDR *xdrs, int *dscmp, char *unp,
                        struct xdr_discrim *choices,
                        xdrproc_t defaultarm);     /* may equal NULL */

              分別可能な C の 共用体  (union)  とその外部形式とを変換する基本フィルター。  最初に
              dscmp として与えられた共用体の分別要素が変換される。 この分別要素は常に enum_t であ
              る。 次に unp の位置の共用体が変換される。引き数 choicesxdr_discrim()  構造体の
              配列へのポインターである。各構造体は [value,proc] の順序付きペアを格納している。 も
              し共用体の分別要素が関連付けられた  value  と等しい場合には、共用体を変換するために
              proc  が呼び出される。 xdr_discrim()  構造体の配列の最後は、値 NULL のルーティン を
              指定することで示される。   分別要素が   choices    配列の中に見つからなかった場合、
              defaultarm  が (NULL でなければ) 呼び出される。 成功した場合は 1 を返す。失敗した場
              合はゼロを返す。

       bool_t xdr_vector(XDR *xdrs, char *arrp, unsigned int size,
                         unsigned int elsize, xdrproc_t elproc);

              固定長の配列とそれらが対応する外部表現とを変換する基本フィルター。 引き数 arrp は配
              列へのポインターのアドレスである。一方で  size は配列の要素数そのものである。引き数
              elsize は配列の各要素の sizeof で、 elproc は配列の要素を C  形式からその外部表現へ
              と変換する  XDR フィルターである。 このルーティンは成功した場合 1 を返す。 失敗した
              場合はゼロを返す。

       bool_t xdr_void(void);

              このルーティンは常に 1 を返す。 これは何も行なわないが、関数引き数が必要な RPC ルー
              ティンに渡すことができる。

       bool_t xdr_wrapstring(XDR *xdrs, char **sp);

              xdr_string(xdrs,    sp,   MAXUN.UNSIGNED   );   を呼び出す基本ルーティン。   ここで
              MAXUN.UNSIGNED は符号無し整数(unsigned int)の最大値である。 xdr_wrapstring()   は、
              RPC   パッケージは二つの  XDR  ルーティンの最大値を引き数として渡すため便利である。
              xdr_string() は最も頻繁に利用される基本ルーティンであるが三つを要求する。  成功した
              場合は 1 を返す、失敗した場合はゼロを返す。

関連項目

       rpc(3)

       以下のマニュアル:
              eXternal Data Representation Standard: Protocol Specification
              eXternal Data Representation: Sun Technical Notes
              XDR:  External  Data  Representation  Standard,  RFC 1014,  Sun Microsystems, Inc.,
              USC-ISI.

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 3.65 の一部  である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。

                                            2007-12-30                                     XDR(3)