ONC+ 開発ガイド

配列変換サンプルプログラム 1

ネットワークに接続したマシンのユーザは、次の 3 つの項目によって識別できます。(a) マシン名。たとえば、krypton。(b) ユーザの UID。これについては、geteuid のマニュアルページを参照してください。(c) ユーザが所属するグループ番号。これについては、getgroups のマニュアルページを参照してください。これらの識別情報を持つ構造体と、それに対する XDR ルーチンは例 A-7 のようにコーディングできます。


例 A-7 配列変換のサンプルプログラム 1

struct netuser {
 	char  *nu_machinename;
 	int   nu_uid;
 	u_int nu_glen;
 	int   *nu_gids;
 };
#define NLEN 255       /* マシン名は 255 文字以下 */
#define NGRPS 20       /* ユーザが所属するグループ数は 20 以下 */

bool_t
xdr_netuser(xdrs, nup)
 	XDR *xdrs;
 	struct netuser *nup;
{
 	return(xdr_string(xdrs, &nup->nu_machinename, NLEN) &&
 		    xdr_int(xdrs, &nup->nu_uid) &&
 		    xdr_array(xdrs, &nup->nu_gids, &nup->nu_glen, NGRPS,
		               sizeof (int), xdr_int));
}