ENVZ_ADD

Section: Linux Programmer's Manual (3)
Updated: 2020-11-01
Index JM Home Page
 

名前

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 (envz, envz_len) から名前が name のエントリーを検索する。 見つかった場合はそのエントリーを返し、見つからなかった場合は NULL を返す。

envz_get() は、envz vector (envz, envz_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 型 (integer 型) の返り値を持つ。 成功した場合は 0 を返し、割り当てエラーが発生した場合は ENOMEM を返す。  

属性

この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース 属性 値
envz_add(), envz_entry(),
envz_get(), envz_merge(),
envz_remove(), envz_strip()
Thread safety MT-Safe

 

準拠

これらの関数は GNU による拡張である。  

例

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

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


    for (int 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 プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

関連キーワード

envz   エントリー   size   vector   entry   envp   merge   remove   strip   操作   argz   解釈   割り当て   printf   環境   変数   固有   バッファー   ポインター   最初   一番   最後   符号   該当   メモリー

Linux マニュアル 一覧

関連するコマンド・関数

envz.3   envz_add.3   envz_entry.3   envz_get.3   envz_merge.3   envz_remove.3
 

Index

名前
書式
説明
返り値
属性
準拠
例
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:21 GMT, October 11, 2026