OSDN Git Service

56dbe228231d33f9e7c5e4bbba5dedc527e0ee1a
[linuxjm/LDP_man-pages.git] / release / man3 / envz_add.3
1 .\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de)
2 .\" Distributed under GPL
3 .\" based on the description in glibc source and infopages
4 .\"
5 .\" Corrections and additions, aeb
6 .\"
7 .\" Japanese Version Copyright (c) 2002 Akihiro MOTOKI, all rights reserved.
8 .\" Translated Mon Feb  2 2003 by Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
9 .\"
10 .TH ENVZ_ADD 3 2007-05-18 "" "Linux Programmer's Manual"
11 .SH 名前
12 envz_add, envz_entry, envz_get, envz_merge,
13 envz_remove, envz_strip \- 環境変数文字列の操作
14 .SH 書式
15 .nf
16 .B "#include <envz.h>"
17
18 .BI "error_t envz_add(char **" envz ", size_t *" envz_len ,
19 .ti 20n
20 .BI "const char *" name ", const char *" value );
21
22 .BI "char *envz_entry(const char *" envz ", size_t *" envz_len \
23 ", const char *" name );
24
25 .BI "char *envz_get(const char *" envz ", size_t *" envz_len \
26 ", const char *" name );
27
28 .BI "error_t envz_merge(char **" envz ", size_t *" envz_len ,
29 .ti 20n
30 .BI "const char *" envz2 ", size_t " envz2_len ", int " override );
31
32 .BI "void envz_remove(char **" envz ", size_t *" envz_len \
33 ", const char *" name );
34
35 .BI "void envz_strip(char **" envz ", size_t *" envz_len );
36 .fi
37 .SH 説明
38 これらの関数 glibc 固有である。
39 .LP
40 argz vector は長さ情報付きの文字バッファへのポインタである。
41 .BR argz_add (3)
42 を参照のこと。
43 envz vector は、文字列が "name=value (名前=値)" の形式になっている特別な
44 argz vector である。
45 最初の \(aq=\(aq 以降はすべて値とみなされる。\(aq=\(aq がなければ、
46 値は NULL と解釈される。(文字列の一番最後の文字が \(aq=\(aq の場合、値は空文字列
47 "" と解釈される。)
48 .LP
49 これらの関数は envz vector を操作するためのものである。
50 .LP
51 .BR envz_add ()
52 は、文字列
53 .RI \&" name = value \&"
54 .RI ( value
55 が NULL でない場合) または
56 .RI \&" name \&"
57 .RI ( value
58 が NULL の場合) を
59 envz vector
60 .RI ( *envz ,\  *envz_len )
61 に追加し、
62 .I *envz
63
64 .I *envz_len
65 を更新する。
66 .I name
67 と同じ名前を持つエントリがあった場合、元のエントリは削除される。
68 .LP
69 .BR envz_entry ()
70 は、envz vector
71 .RI ( envz ,\  envz_len )
72 から名前が
73 .I name
74 のエントリを検索する。
75 見つかった場合はそのエントリを返し、見つからなかった場合は NULL を返す。
76 .LP
77 .BR envz_get ()
78 は、envz vector
79 .RI ( envz ,\  envz_len )
80 から名前が
81 .I name
82 のエントリを検索する。
83 見つかった場合はエントリの値を返し、見つからなかった場合は NULL を返す。
84 (値は NULL の場合もあることに注意すること。名前が
85 .I name
86 のエントリに \(aq=\(aq 符号がない場合が該当する。)
87 .LP
88 .BR envz_merge ()
89 は、
90 .BR envz_add ()
91 と同じように
92 .I envz2
93 の各エントリを
94 .I *envz
95 に追加する。
96 .I override
97 が真の場合、
98 .I envz2
99 の値で
100 .I *envz
101 内の同じ名前をもつ値は上書きされる。
102 偽の場合は上書きされない。
103 .LP
104 .BR envz_remove ()
105 は、名前が
106 .I name
107 のエントリがあれば
108 .RI ( *envz ,\  *envz_len )
109 から削除する。
110 .LP
111 .BR envz_strip ()
112 は、値が NULL のエントリをすべて削除する。
113 .SH 返り値
114 メモリ割り当てを行う envz 関数群はすべて \fIerror_t\fP 型の返り値を持つ。
115 成功した場合は 0 を返し、割り当てエラーが発生した場合は
116 \fBENOMEM\fP を返す。
117 .SH 準拠
118 これらの関数は GNU による拡張である。注意して使用すること。
119 .SH 例
120 .nf
121 #include <stdio.h>
122 #include <stdlib.h>
123 #include <envz.h>
124
125 int
126 main(int argc, char *argv[], char *envp[])
127 {
128     int i, e_len = 0;
129     char *str;
130
131     for (i = 0; envp[i] != NULL; i++)
132         e_len += strlen(envp[i]) + 1;
133
134     str = envz_entry(*envp, e_len, "HOME");
135     printf("%s\en", str);
136     str = envz_get(*envp, e_len, "HOME");
137     printf("%s\en", str);
138     exit(EXIT_SUCCESS);
139 }
140 .fi
141 .SH 関連項目
142 .BR argz_add (3)