.\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de) .\" .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) .\" Distributed under GPL .\" %%%LICENSE_END .\" .\" based on the description in glibc source and infopages .\" .\" Corrections and additions, aeb .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI, all rights reserved. .\" Translated Mon Feb 2 2003 by Akihiro MOTOKI .\" .TH ENVZ_ADD 3 2020\-11\-01 "" "Linux Programmer's Manual" .SH 名前 envz_add, envz_entry, envz_get, envz_merge, envz_remove, envz_strip \- 環境変数文字列の操作 .SH 書式 .nf \fB#include \fP .PP \fBerror_t envz_add(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB,\fP \fB const char *\fP\fIname\fP\fB, const char *\fP\fIvalue\fP\fB);\fP .PP \fBchar *envz_entry(const char *\fP\fIenvz\fP\fB, size_t \fP\fIenvz_len\fP\fB, const char *\fP\fIname\fP\fB);\fP .PP \fBchar *envz_get(const char *\fP\fIenvz\fP\fB, size_t \fP\fIenvz_len\fP\fB, const char *\fP\fIname\fP\fB);\fP .PP \fBerror_t envz_merge(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB,\fP \fB const char *\fP\fIenvz2\fP\fB, size_t \fP\fIenvz2_len\fP\fB, int \fP\fIoverride\fP\fB);\fP .PP \fBvoid envz_remove(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB, const char *\fP\fIname\fP\fB);\fP .PP \fBvoid envz_strip(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB);\fP .fi .SH 説明 これらの関数は glibc 固有である。 .PP argz vector は長さ情報付きの文字バッファーへのポインターである。 \fBargz_add\fP(3) を参照のこと。 envz vector は、文字列が "name=value (名前=値)" の形式になっている特別な argz vector である。 最初の \(aq=\(aq 以降はすべて値とみなされる。\(aq=\(aq がなければ、 値は NULL と解釈される。(文字列の一番最後の文字が \(aq=\(aq の場合、値は空文字列 "" と解釈される。) .PP これらの関数は envz vector を操作するためのものである。 .PP \fBenvz_add\fP() は、文字列 "\fIname\fP=\fIvalue\fP" (\fIvalue\fP が NULL でない場合) または "\fIname\fP" (\fIvalue\fP が NULL の場合) を envz vector (\fI*envz\fP,\ \fI*envz_len\fP) に追加し、 \fI*envz\fP と \fI*envz_len\fP を更新する。 \fIname\fP と同じ名前を持つエントリーがあった場合、元のエントリーは削除される。 .PP \fBenvz_entry\fP() は、envz vector (\fIenvz\fP,\ \fIenvz_len\fP) から名前が \fIname\fP のエントリーを検索する。 見つかった場合はそのエントリーを返し、見つからなかった場合は NULL を返す。 .PP \fBenvz_get\fP() は、envz vector (\fIenvz\fP,\ \fIenvz_len\fP) から名前が \fIname\fP のエントリーを検索する。 見つかった場合はエントリーの値を返し、見つからなかった場合は NULL を返す。 (値は NULL の場合もあることに注意すること。名前が \fIname\fP のエントリーに \(aq=\(aq 符号がない場合が該当する。) .PP \fBenvz_merge\fP() は、 \fBenvz_add\fP() と同じように \fIenvz2\fP の各エントリーを \fI*envz\fP に追加する。 \fIoverride\fP が真の場合、 \fIenvz2\fP の値で \fI*envz\fP 内の同じ名前をもつ値は上書きされる。 偽の場合は上書きされない。 .PP \fBenvz_remove\fP() は、名前が \fIname\fP のエントリーがあれば (\fI*envz\fP,\ \fI*envz_len\fP) から削除する。 .PP \fBenvz_strip\fP() は、値が NULL のエントリーをすべて削除する。 .SH 返り値 メモリー割り当てを行う envz 関数群はすべて \fIerror_t\fP 型 (integer 型) の返り値を持つ。 成功した場合は 0 を返し、割り当てエラーが発生した場合は \fBENOMEM\fP を返す。 .SH 属性 この節で使用されている用語の説明については、 \fBattributes\fP(7) を参照。 .TS allbox; lbw27 lb lb l l l. インターフェース 属性 値 T{ \fBenvz_add\fP(), \fBenvz_entry\fP(), .br \fBenvz_get\fP(), \fBenvz_merge\fP(), .br \fBenvz_remove\fP(), \fBenvz_strip\fP() T} Thread safety MT\-Safe .TE .sp 1 .SH 準拠 これらの関数は GNU による拡張である。 .SH 例 .EX #include #include #include 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\en", str); str = envz_get(*envp, e_len, "HOME"); printf("%s\en", str); exit(EXIT_SUCCESS); } .EE .SH 関連項目 \fBargz_add\fP(3) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は \%https://www.kernel.org/doc/man\-pages/ に書かれている。