kazmax - Linux で自宅サーバー

setaliasent - ライブラリコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. ファイル
  5. 返り値
  6. 準拠
  7. 関連項目

名前

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;
};

ファイル

デフォルトのエイリアスデータベースは、ファイル /etc/aliases である。 これは /etc/nsswitch.conf ファイルで変更できる。

返り値

関数 getaliasent_r ()と getaliasbyname_r ()は、エラーの場合に 0 以外の値を返す。

以下の例は "gcc example.c -o example" でコンパイルできる。 これはエイリアスデータベースにある全ての名前をダンプする。

#include <aliases.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>


int main() { 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); }

準拠

このルーチンは glibc 固有のものである。 NeXT には同様のルーチンがある。

#include <aliasdb.h>
void alias_setent(void);
void alias_endent(void);
alias_ent *alias_getent(void);
alias_ent *alias_getbyname(char *name);

関連項目

  getgrent (3),   getpwent (3),  getspent (3),  aliases (5)