GETNETGRENT(3)

名称
getnetgrent, innetgr, setnetgrent, endnetgrent - ネットグループデータベースの操作

書式
int getnetgrent(char **host, char **user, char **domain) int innetgr(const char *netgroup, const char *host, const char *user, const char *domain) void setnetgrent(const char *netgroup) void endnetgrent(void)

解説
これらの関数はいずれも、 netgroup(5) に記述されたネットグループデータベースのファイル /etc/netgroup を操作します。データベースはネットグループの集合を定義しますが、 ネットグループはぞれぞれ、1 つまたは複数の次のような 3 つ組で構成されます。

    (host, user, domain)

それぞれ、ホスト、ユーザおよびドメインの組み合わせを定義します。 3 つのフィールドのどれにも、あらゆるストリングに適合する `'ワイルドカード' を指定可能です。

関数 getnetgrent() は、現在のネットグループの次のメンバの、文字列に対する 3 つのポインタ引数を設定します。文字列ポインタのどれかが (char *)0 だと、そのフィールドはワイルドカードと見なされます。

関数 setnetgrent() は現在のネットグループを設定し、 endnetgrent() は現在のネットグループを終了します。 前の呼び出しとは違うネットグループに対して setnetgrent() が呼び出された場合、暗黙に endnetgrent() が実行されます。 setnetgrent() はまた、ネットグループの最初のメンバのオフセットを設定します。

関数 innetgr() は適合するものがあるかどうか、指定したグループにあるすべての フィールドを検索します。 host user domain 引数のどれかが (char *)0 の場合、そのフィールドは指定されたネットグループメンバのあらゆる 文字列値に適合します。

戻り値
関数 getnetgrent() は ``それ以上ネットグループメンバがない'' 場合には 0 を返し、 その他の場合は 1 を返します。 関数 innetgr() は、適合するフィールドがあった場合は 1 を、 その他の場合は 0 を返します。 関数 setnetgrent() および endnetgrent() には戻り値がありません。

関連ファイル
/etc/netgroup
    ネットグループデータベースファイル

関連項目
netgroup(5)

互換性
ネットグループメンバには、他のベンダによる実装との互換性を維持するために 3 つの文字列フィールドがありますが、 domain 文字列の BSD 内での使用法が明らかではありません。

バグ
関数 getnetgrent() は、動的に割り振られたデータ領域のポインタを返しますが、 関数 endnetgrent() が呼び出されるとそのデータ領域は解放されます。