.\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de) .\" Distributed under GPL .\" based on glibc infopages .\" polished - aeb .\" .\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI .\" all rights reserved. .\" Translated 2005-02-20, Akihiro MOTOKI .\" .TH SETNETGRENT 3 2007-07-26 "GNU" "Linux Programmer's Manual" .SH 名前 setnetgrent, endnetgrent, getnetgrent, getnetgrent_r, innetgr \- ネットワーク・グループのエントリを操作する .SH 書式 .nf .B #include .BI "int setnetgrent(const char *" netgroup ); .B "void endnetgrent(void);" .BI "int getnetgrent(char **" host ", char **" user ", char **" domain ); .BI "int getnetgrent_r(char **" host ", char **" user "," .BI " char **" domain ", char *" buf ", int " buflen ); .BI "int innetgr(const char *" netgroup ", const char *" host "," .BI " const char *" user ", const char *" domain ); .fi .sp .in -4n glibc 向けの機能検査マクロの要件 .RB ( feature_test_macros (7) 参照): .in .sp .ad l .BR setnetgrent (), .BR endnetgrent (), .BR getnetgrent (), .BR getnetgrent_r (), .BR innetgr (): _BSD_SOURCE || _SVID_SOURCE .ad b .SH 説明 .I netgroup は SunOS で考案されたものである。ネットグループのデータベースの エントリは、 3 つの文字列のリスト .RI ( hostname ", " username ", " domainname ) もしくはネットグループ名である。 前記のリストの各要素は空であってもよい。 空は何とでも一致することを意味する。 本ページで説明する関数を使うことで、ネットグループのデータベースに アクセスすることができる。どのデータベースが検索されるかは .I /etc/nsswitch.conf ファイルで定義されている。 .PP .BR setnetgrent () コールは、この後で呼ばれる .BR getnetgrent () コールが検索するネットグループを定める。 .BR getnetgrent () 関数はネットグループの次のエントリを取得し、 .IR host , .IR user , .I domain にポインタを入れて返る。 NULL ポインタは、対応するエントリがどんな文字列とも一致することを意味する。 得られたポインタは、ネットグループ関係の関数のいずれかが呼ばれるまでの 間だけ有効である。この問題を避けるためには GNU 拡張の関数 .BR getnetgrent_r () を使うとよい。この関数は呼び出し側が用意したバッファに 文字列を格納する。割り当て済のバッファを全て解放するには .BR endnetgrent () を使用する。 .PP ほとんどの場合、 .RI ( hostname ", " username ", " domainname ) の3要素の組がネットグループのメンバーかどうかを確認したいだけであろう。 .BR innetgr () 関数を使うと、上記の3つの関数を呼び出さずにこの目的を達成できる。 もう一度書いておくが、NULL ポインタはワイルドカードであり、 あらゆる文字列と一致する。この関数はスレッドセーフである。 .SH 返り値 これらの関数は成功すると 1 を、失敗すると 0 を返す。 .SH ファイル .I /etc/netgroup .br .I /etc/nsswitch.conf .SH 準拠 これらの関数は POSIX.1-2001 にはないが、 setnetgrent (), endnetgrent (), getnetgrent (), innetgr () はほとんどの UNIX システムで利用可能である。 .BR getnetgrent_r () は広く他のシステムで利用できるわけではない。 .\" getnetgrent_r() is on Solaris 8 and AIX 5.1, but not the BSDs. .SH 注意 BSD の実装では .BR setnetgrent () は void を返す。 .SH 関連項目 .BR sethostent (3), .BR setprotoent (3), .BR setservent (3)