setaliasent

Autres langues

Langue: ja

Version: 2003-09-09 (mandriva - 01/05/08)

Section: 3 (Bibliothèques de fonctions)

名前

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)