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);
getgrent(3),
getpwent(3),
getspent(3),
aliases(5)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。