Manpages

名 前

envz_add, envz_entry, envz_get, envz_merge, envz_remove, envz_strip − 環 境 変 数 文 字 列 の 操 作

書 式

#include <envz.h>

error_t envz_add(char **envz, size_t *envz_len,
const char *
name, const char *value);

char *envz_entry(const char *envz, size_t envz_len, const char *name);

char *envz_get(const char *envz, size_t envz_len, const char *name);

error_t envz_merge(char **envz, size_t *envz_len,
const char *
envz2, size_t envz2_len, int override);

void envz_remove(char **envz, size_t *envz_len, const char *name);

void envz_strip(char **envz, size_t *envz_len);

説 明

こ れ ら の 関 数 は glibc 固 有 で あ る 。

argz vector は 長 さ 情 報 付 き の 文 字 バ ッ フ ァ ー へ の ポ イ ン タ ー で あ る 。 argz_add(3) を 参 照 の こ と 。 envz vector は 、 文 字 列 が "name=value (名 前 =値 )" の 形 式 に な っ て い る 特 別 な argz vector で あ る 。 最 初 の '=' 以 降 は す べ て 値 と み な さ れ る 。 '=' が な け れ ば 、 値 は NULL と 解 釈 さ れ る 。 (文 字 列 の 一 番 最 後 の 文 字 が '=' の 場 合 、 値 は 空 文 字 列 "" と 解 釈 さ れ る 。 ) こ れ ら の 関 数 は envz vector を 操 作 す る た め の も の で あ る 。

envz_add() は 、 文 字 列 "name=value" (value が NULL で な い 場 合 ) ま た は "name" (value が NULL の 場 合 ) を envz vector (*envz*envz_len) に 追 加 し 、 *envz*envz_len を 更 新 す る 。 name と 同 じ 名 前 を 持 つ エ ン ト リ ー が あ っ た 場 合 、 元 の エ ン ト リ ー は 削 除 さ れ る 。

envz_entry() は 、 envz vector (envzenvz_len) か ら 名 前 が name の エ ン ト リ ー を 検 索 す る 。 見 つ か っ た 場 合 は そ の エ ン ト リ ー を 返 し 、 見 つ か ら な か っ た 場 合 は NULL を 返 す 。

envz_get() は 、 envz vector (envzenvz_len) か ら 名 前 が name の エ ン ト リ ー を 検 索 す る 。 見 つ か っ た 場 合 は エ ン ト リ ー の 値 を 返 し 、 見 つ か ら な か っ た 場 合 は NULL を 返 す 。 (値 は NULL の 場 合 も あ る こ と に 注 意 す る こ と 。 名 前 が name の エ ン ト リ ー に '=' 符 号 が な い 場 合 が 該 当 す る 。 )

envz_merge() は 、 envz_add() と 同 じ よ う に envz2 の 各 エ ン ト リ ー を *envz に 追 加 す る 。 override が 真 の 場 合 、 envz2 の 値 で *envz 内 の 同 じ 名 前 を も つ 値 は 上 書 き さ れ る 。 偽 の 場 合 は 上 書 き さ れ な い 。

envz_remove() は 、 名 前 が name の エ ン ト リ ー が あ れ ば (*envz*envz_len) か ら 削 除 す る 。

envz_strip() は 、 値 が NULL の エ ン ト リ ー を す べ て 削 除 す る 。

返 り 値

メ モ リ ー 割 り 当 て を 行 う envz 関 数 群 は す べ て error_t 型 の 返 り 値 を 持 つ 。 成 功 し た 場 合 は 0 を 返 し 、 割 り 当 て エ ラ ー が 発 生 し た 場 合 は ENOMEM を 返 す 。

準 拠

こ れ ら の 関 数 は GNU に よ る 拡 張 で あ る 。 注 意 し て 使 用 す る こ と 。

#include <stdio.h>
#include <stdlib.h>
#include <envz.h>

int
main(int argc, char *argv[], char *envp[])
{
int i, e_len = 0;
char *str;

for (i = 0; envp[i] != NULL; i++)
e_len += strlen(envp[i]) + 1;

str = envz_entry(*envp, e_len, "HOME");
printf("%s\n", str);
str = envz_get(*envp, e_len, "HOME");
printf("%s\n", str);
exit(EXIT_SUCCESS); }

関 連 項 目

argz_add(3)

こ の 文 書 に つ い て

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