1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
.\" 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 <amotoki@dd.iij4u.or.jp>
.\"
.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 <envz.h>\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 <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\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/ に書かれている。
|