名 前
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/ に 書 か れ て い る 。