OSDN Git Service

(split) LDP: draft snapshot generated from latest ja.po files.
[linuxjm/LDP_man-pages.git] / draft / 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 .\"
8 .\" This file was generated with po4a. Translate the source file.
9 .\"
10 .\"*******************************************************************
11 .TH ENVZ_ADD 3 2007\-05\-18 "" "Linux Programmer's Manual"
12 .SH 名前
13 envz_add, envz_entry, envz_get, envz_merge, envz_remove, envz_strip \-
14 環境変数文字列の操作
15 .SH 書式
16 .nf
17 \fB#include <envz.h>\fP
18
19 \fBerror_t envz_add(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB,\fP
20 .ti 20n
21 \fBconst char *\fP\fIname\fP\fB, const char *\fP\fIvalue\fP\fB);\fP
22
23 \fBchar *envz_entry(const char *\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB, const char *\fP\fIname\fP\fB);\fP
24
25 \fBchar *envz_get(const char *\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB, const char *\fP\fIname\fP\fB);\fP
26
27 \fBerror_t envz_merge(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB,\fP
28 .ti 20n
29 \fBconst char *\fP\fIenvz2\fP\fB, size_t \fP\fIenvz2_len\fP\fB, int \fP\fIoverride\fP\fB);\fP
30
31 \fBvoid envz_remove(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB, const char *\fP\fIname\fP\fB);\fP
32
33 \fBvoid envz_strip(char **\fP\fIenvz\fP\fB, size_t *\fP\fIenvz_len\fP\fB);\fP
34 .fi
35 .SH 説明
36 これらの関数は glibc 固有である。
37 .LP
38 argz vector は長さ情報付きの文字バッファへのポインタである。 \fBargz_add\fP(3)  を参照のこと。 envz vector
39 は、文字列が "name=value (名前=値)" の形式になっている特別な argz vector である。 最初の \(aq=\(aq
40 以降はすべて値とみなされる。\(aq=\(aq がなければ、 値は NULL と解釈される。(文字列の一番最後の文字が \(aq=\(aq
41 の場合、値は空文字列 "" と解釈される。)
42 .LP
43 これらの関数は envz vector を操作するためのものである。
44 .LP
45 \fBenvz_add\fP()  は、文字列 "\fIname\fP=\fIvalue\fP" (\fIvalue\fP が NULL でない場合) または
46 "\fIname\fP" (\fIvalue\fP が NULL の場合) を envz vector (\fI*envz\fP,\ \fI*envz_len\fP)
47 に追加し、 \fI*envz\fP と \fI*envz_len\fP を更新する。 \fIname\fP
48 と同じ名前を持つエントリがあった場合、元のエントリは削除される。
49 .LP
50 \fBenvz_entry\fP()  は、envz vector (\fIenvz\fP,\ \fIenvz_len\fP)  から名前が \fIname\fP
51 のエントリを検索する。 見つかった場合はそのエントリを返し、見つからなかった場合は NULL を返す。
52 .LP
53 \fBenvz_get\fP()  は、envz vector (\fIenvz\fP,\ \fIenvz_len\fP)  から名前が \fIname\fP
54 のエントリを検索する。 見つかった場合はエントリの値を返し、見つからなかった場合は NULL を返す。 (値は NULL
55 の場合もあることに注意すること。名前が \fIname\fP のエントリに \(aq=\(aq 符号がない場合が該当する。)
56 .LP
57 \fBenvz_merge\fP()  は、 \fBenvz_add\fP()  と同じように \fIenvz2\fP の各エントリを \fI*envz\fP に追加する。
58 \fIoverride\fP が真の場合、 \fIenvz2\fP の値で \fI*envz\fP 内の同じ名前をもつ値は上書きされる。 偽の場合は上書きされない。
59 .LP
60 \fBenvz_remove\fP()  は、名前が \fIname\fP のエントリがあれば (\fI*envz\fP,\ \fI*envz_len\fP)  から削除する。
61 .LP
62 \fBenvz_strip\fP()  は、値が NULL のエントリをすべて削除する。
63 .SH 返り値
64 メモリ割り当てを行う envz 関数群はすべて \fIerror_t\fP 型の返り値を持つ。 成功した場合は 0 を返し、割り当てエラーが発生した場合は
65 \fBENOMEM\fP を返す。
66 .SH 準拠
67 これらの関数は GNU による拡張である。注意して使用すること。
68 .SH 例
69 .nf
70 #include <stdio.h>
71 #include <stdlib.h>
72 #include <envz.h>
73
74 int
75 main(int argc, char *argv[], char *envp[])
76 {
77     int i, e_len = 0;
78     char *str;
79
80     for (i = 0; envp[i] != NULL; i++)
81         e_len += strlen(envp[i]) + 1;
82
83     str = envz_entry(*envp, e_len, "HOME");
84     printf("%s\en", str);
85     str = envz_get(*envp, e_len, "HOME");
86     printf("%s\en", str);
87     exit(EXIT_SUCCESS);
88 }
89 .fi
90 .SH 関連項目
91 \fBargz_add\fP(3)