File: envz_add.3

package info (click to toggle)
manpages-ja 0.5.0.0.20221215%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 29,304 kB
  • sloc: perl: 161; makefile: 61
file content (120 lines) | stat: -rw-r--r-- 5,180 bytes parent folder | download
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/ に書かれている。