Manpages

名 前

getnetent_r, getnetbyname_r, getnetbyaddr_r − ネ ッ ト ワ ー ク エ ン ト リ ー を 取 得 す る (リ エ ン ト ラ ン ト 版 )

書 式

#include <netdb.h>

int getnetent_r(struct netent *result_buf, char *buf,
size_t
buflen, struct netent **result,
int *
h_errnop);

int getnetbyname_r(const char *name,
struct netent *
result_buf, char *buf,
size_t
buflen, struct netent **result,
int *
h_errnop);

int getnetbyaddr_r(uint32_t net, int type,
struct netent *
result_buf, char *buf,
size_t
buflen, struct netent **result,
int *
h_errnop);

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 (feature_test_macros(7) 参 照 ):

getnetent_r(), getnetbyname_r(), getnetbyaddr_r():

_BSD_SOURCE || _SVID_SOURCE

説 明

関 数 getnetent_r(), getnetbyname_r(), getnetbyaddr_r() は 、 そ れ ぞ れ getnetent(3), getnetbyname(3), getnetbynumber(3) の リ エ ン ト ラ ン ト 版 で あ る 。 netent 構 造 体 の 返 し 方 と 、 関 数 呼 び 出 し 時 の 引 き 数 と 返 り 値 が 異 な る 。 こ の マ ニ ュ ア ル ペ ー ジ で は 、 リ エ ン ト ラ ン ト で な い 関 数 と の 違 い だ け を 説 明 す る 。 こ れ ら の 関 数 は 、 関 数 の 結 果 と し て 静 的 に 割 り 当 て ら れ た netent 構 造 体 へ の ポ イ ン タ ー を 返 す の で は な く 、 netent 構 造 体 を result_buf が 指 す 場 所 に コ ピ ー す る 。 配 列 buf は 、 返 さ れ る netent 構 造 体 が 指 す 文 字 列 フ ィ ー ル ド を 格 納 す る の に 使 用 さ れ る (リ エ ン ト ラ ン ト で な い 関 数 の 場 合 は 、 こ れ ら の 文 字 列 は 静 的 な 領 域 に 格 納 さ れ る )。 こ の 配 列 の 大 き さ は buflen で 指 定 さ れ る 。 buf が 小 さ す ぎ る 場 合 、 関 数 呼 び 出 し は エ ラ ー ERANGE で 失 敗 し 、 呼 び 出 し 側 で は も っ と 大 き な バ ッ フ ァ ー で 再 度 呼 び 出 す 必 要 が あ る (ほ と ん ど の ア プ リ ケ ー シ ョ ン で は 、 長 さ 1024 バ イ ト の バ ッ フ ァ ー で 十 分 な は ず で あ る )。 関 数 呼 び 出 し で ネ ッ ト ワ ー ク レ コ ー ド の 取 得 に 成 功 す る と 、 *resultresult_buf を 指 す よ う に 設 定 さ れ る 。 そ れ 以 外 の 場 合 は *result に NULL が 設 定 さ れ る 。

h_errnop が 指 す バ ッ フ ァ ー は 、 リ エ ン ト ラ ン ト で な い 関 数 で は グ ロ ー バ ル 変 数 h_errno に 格 納 さ れ て い た 値 を 返 す の に 使 用 さ れ る 。

返 り 値

成 功 す る と 、 こ れ ら の 関 数 は 0 を 返 す 。 エ ラ ー の 場 合 、 「 エ ラ ー 」 の 節 の リ ス ト に あ る 正 の エ ラ ー 番 号 の い ず れ か を 返 す 。 エ ラ ー の 場 合 、 レ コ ー ド が 見 つ か ら な か っ た 場 合 (getnetbyname_r(), getnetbyaddr_r()) や こ れ 以 上 レ コ ー ド が な い 場 合 (getnetent_r())、 result に は NULL が 設 定 さ れ る 。

エ ラ ー

ENOENT

(getnetent_r()) デ ー タ ベ ー ス に こ れ 以 上 レ コ ー ド が な い 。

ERANGE

buf が 小 さ す ぎ る 。 も っ と 大 き な バ ッ フ ァ ー に し て (ま た は buflen を 増 や し て ) 再 度 呼 び 出 す こ と 。

準 拠

こ れ ら の 関 数 は GNU に よ る 拡 張 で あ る 。 他 の シ ス テ ム に も 同 様 の 名 前 の 関 数 が 存 在 す る 場 合 が あ る が 、 通 常 は 関 数 の 引 き 数 が 異 な る 。

関 連 項 目

getnetent(3), networks(5)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。