SETALIASENT(3) | Linux Programmer's Manual | SETALIASENT(3) |
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 ファイルで変更できる。
この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース | 属性 | 値 |
setaliasent(), endaliasent(), getaliasent_r(), getaliasbyname_r() | Thread safety | MT-Safe locale |
getaliasent(), getaliasbyname() | Thread safety | MT-Unsafe |
このルーチンは 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);
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。
2020-06-09 | GNU |