Provided by: manpages-ja-dev_0.5.0.0.20161015+dfsg-1_all
名前
setaliasent, endaliasent, getaliasent, getaliasent_r, getaliasbyname, getaliasbyname_r - エイリアスエントリーを読み込む
書式
#include <aliases.h> void setaliasent(void); void endaliasent(void); struct aliasent *getaliasent(void); int getaliasent_r(struct aliasent *result, char *buffer, size_t buflen, struct aliasent **res); struct aliasent *getaliasbyname(const char *name); int getaliasbyname_r(const char *name, struct aliasent *result, char *buffer, size_t buflen, struct aliasent **res);
説明
ネームサービススイッチ (Name Service Switch, NSS) で 利用可能なデータベースの 1 つとして、 メールエイリアスを保持するエイリアスデータベースがある。 (どのデータベースがサポートされて いるかを調べるには、 getent --help を実行すること。) エイリアスデータベースにアクセスする ために、 6 つの関数が提供されている。 getaliasent() 関数はエイリアスデータベースから取り出した グループ情報を含む構造体へのポイ ンターを返す。 1 回目に関数が呼ばれたときには、最初のエントリーを返す; それ以降はその後の エントリーを返す。 setaliasent() 関数はファイルポインターをエイリアスデータベースの先頭に巻き戻す。 endaliasent() 関数はエイリアスデータベースをクローズする。 getaliasent_r() 関数は上記の関数のリエントラント版である。 要求された構造体は第 1 引き数 に格納されるが、 プログラマは他の引き数も埋めてやる必要がある。 充分な領域が与えられない と、この関数は失敗する。 関数 getaliasbyname() は name 引き数をとり、エイリアスデータベースを検索する。 エントリー は struct aliasent へのポインターとして返される。 getaliasbyname_r() は上記の関数のリエントラント版である。 要求された構造体は第 2 引き数に 格納されるが、 プログラマは他の引き数も埋めてやる必要がある。 充分な領域が与えられない と、この関数は失敗する。 struct aliasent は <aliases.h> で定義されている。 struct aliasent { char *alias_name; /* エイリアス名 */ size_t alias_members_len; char **alias_members; /* エイリアス名のリスト */ int alias_local; };
返り値
関数 getaliasent_r() と getaliasbyname_r() は、エラーの場合に 0 以外の値を返す。
ファイル
デフォルトのエイリアスデータベースは、ファイル /etc/aliases である。 これは /etc/nsswitch.conf ファイルで変更できる。
準拠
このルーチンは glibc 固有のものである。 NeXT システムには同様のルーチンがある。 #include <aliasdb.h> void alias_setent(void); void alias_endent(void); alias_ent *alias_getent(void); alias_ent *alias_getbyname(char *name);
例
以下の例は gcc example.c -o example でコンパイルできる。 これはエイリアスデータベースにあ る全ての名前をダンプする。 #include <aliases.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> int main(void) { struct aliasent *al; setaliasent(); for (;;) { al = getaliasent(); if (al == NULL) break; printf("Name: %s\n", al->alias_name); } if (errno) { perror("reading alias"); exit(EXIT_FAILURE); } endaliasent(); exit(EXIT_SUCCESS);
関連項目
getgrent(3), getpwent(3), getspent(3), aliases(5)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。