1 .\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de)
3 .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
4 .\" Distributed under GPL
7 .\" based on the description in glibc source and infopages
9 .\" Corrections and additions, aeb
10 .\"*******************************************************************
12 .\" This file was generated with po4a. Translate the source file.
14 .\"*******************************************************************
15 .TH ARGZ_ADD 3 2007\-05\-18 "" "Linux Programmer's Manual"
17 argz_add, argz_add_sep, argz_append, argz_count, argz_create,
18 argz_create_sep, argz_delete, argz_extract, argz_insert, argz_next,
19 argz_replace, argz_stringify \- argz リストを操作するための関数群
22 \fB#include <argz.h>\fP
24 \fBerror_t argz_add(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB, const char *\fP\fIstr\fP\fB);\fP
26 \fBerror_t argz_add_sep(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB,\fP
27 \fB const char *\fP\fIstr\fP\fB, int \fP\fIdelim\fP\fB);\fP
29 \fBerror_t argz_append(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB,\fP
30 \fB const char *\fP\fIbuf\fP\fB, size_t \fP\fIbuf_len\fP\fB);\fP
32 \fBsize_t argz_count(const char *\fP\fIargz\fP\fB, size_t \fP\fIargz_len\fP\fB);\fP
34 \fBerror_t argz_create(char * const \fP\fIargv\fP\fB[], char **\fP\fIargz\fP\fB,\fP
35 \fB size_t *\fP\fIargz_len\fP\fB);\fP
37 \fBerror_t argz_create_sep(const char *\fP\fIstr\fP\fB, int \fP\fIsep\fP\fB, char **\fP\fIargz\fP\fB,\fP
38 \fB size_t *\fP\fIargz_len\fP\fB);\fP
40 \fBerror_t argz_delete(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB, char *\fP\fIentry\fP\fB);\fP
42 \fBvoid argz_extract(char *\fP\fIargz\fP\fB, size_t \fP\fIargz_len\fP\fB, char **\fP\fIargv\fP\fB);\fP
44 \fBerror_t argz_insert(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB, char *\fP\fIbefore\fP\fB,\fP
45 \fB const char *\fP\fIentry\fP\fB);\fP
47 \fBchar *argz_next(char *\fP\fIargz\fP\fB, size_t \fP\fIargz_len\fP\fB, const char *\fP\fIentry\fP\fB);\fP
49 \fBerror_t argz_replace(char **\fP\fIargz\fP\fB, size_t *\fP\fIargz_len\fP\fB, const char *\fP\fIstr\fP\fB,\fP
50 \fB const char *\fP\fIwith\fP\fB, unsigned int *\fP\fIreplace_count\fP\fB);\fP
52 \fBvoid argz_stringify(char *\fP\fIargz\fP\fB, size_t \fP\fIlen\fP\fB, int \fP\fIsep\fP\fB);\fP
57 argz vector は長さ情報付きの文字バッファへのポインタである。 文字バッファでは、複数の文字列が NULL バイト (\(aq\e0\(aq)
58 で区切られており、 文字列の配列として解釈されるようになっている。 長さが 0 でない場合、バッファの最後のバイトは NULL
61 これらの関数は argz vector を操作するためのものである。 ペア (NULL,0) は argz vector であり、逆に言えば 長さ 0
62 の argz vectorは NULL ポインタを持たなければならない。 空でない argz vector の割り当ては \fBmalloc\fP(3)
63 を使って行われる。したがって、argz vector を解放するのに \fBfree\fP(3) を使うことができる。
65 \fBargz_add\fP() は、文字列 \fIstr\fP を配列 \fI*argz\fP の末尾に追加し、 \fI*argz\fP と \fI*argz_len\fP
68 \fBargz_add_sep\fP() も同様の動作をするが、区切り文字 \fIdelim\fP にしたがって文字列 \fIstr\fP
69 を複数の文字列に分割する点が異なる。 例えば、区切り文字 \(aq:\(aq を指定して、UNIX サーチ・パスに対して
72 \fBargz_append\fP() appends the argz vector (\fIbuf\fP,\ buf_len\fI)\fP after
73 (\fI*argz\fP,\ *argz_len\fI)\fP and updates \fI*argz\fP and \fI*argz_len\fP. (Thus,
74 \fI*argz_len\fP will be increased by \fIbuf_len\fP.)
76 \fBargz_count\fP() counts the number of strings, that is, the number of null
77 bytes (\(aq\e0\(aq), in (\fIargz\fP,\ argz_len\fI).\fP
79 \fBargz_create\fP() converts a UNIX\-style argument vector \fIargv\fP, terminated
80 by \fI(char\ *)\ 0\fP, into an argz vector (\fI*argz\fP,\ *argz_len\fI).\fP
82 \fBargz_create_sep\fP() converts the null\-terminated string \fIstr\fP into an
83 argz vector (\fI*argz\fP,\ *argz_len\fI)\fP by breaking it up at every occurrence
84 of the separator \fIsep\fP.
86 \fBargz_delete\fP() removes the substring pointed to by \fIentry\fP from the argz
87 vector (\fI*argz\fP,\ *argz_len\fI)\fP and updates \fI*argz\fP and \fI*argz_len\fP.
89 \fBargz_extract\fP() is the opposite of \fBargz_create\fP(). It takes the argz
90 vector (\fIargz\fP,\ argz_len\fI)\fP and fills the array starting at \fIargv\fP with
91 pointers to the substrings, and a final NULL, making a UNIX\-style argv
92 vector. The array \fIargv\fP must have room for
93 \fIargz_count\fP(\fIargz\fP,\fIargz_len\fP) + 1 pointers.
95 \fBargz_insert\fP() is the opposite of \fBargz_delete\fP(). It inserts the
96 argument \fIentry\fP at position \fIbefore\fP into the argz vector (\fI*argz\fP,\ *argz_len\fI)\fP and updates \fI*argz\fP and \fI*argz_len\fP. If \fIbefore\fP is NULL,
97 then \fIentry\fP will inserted at the end.
99 \fBargz_next\fP() は argz vector を順番に調べるための関数である。 \fIentry\fP が NULL
100 の場合、最初のエントリを返す。 そうでない場合、次のエントリを返す。 次のエントリがない場合、NULL を返す。
102 \fBargz_replace\fP() は、 \fIstr\fP をすべて \fIwith\fP で置き換える (必要に応じて argz の再割り当てを行う)。
103 \fIreplace_count\fP が NULL でない場合、 \fI*replace_count\fP を置き換えを行った数だけ増やす。
105 \fBargz_stringify\fP() は \fBargz_create_sep\fP() の反対の操作を行う。 末尾の NULL バイト以外の全ての
106 NULL バイト (\(aq\e0\(aq) を \fIsep\fP で置き換えて、 argz vector を通常の文字列に変換する。
108 メモリ割り当てを行う argz 関数群はすべて \fIerror_t\fP 型の返り値を持つ。 成功した場合は 0 を返し、割り当てエラーが発生した場合は
111 これらの関数は GNU による拡張である。注意して使用すること。
113 NULL バイトで終端されていない argz vector を使用した場合、 segmentation fault を起こすかもしれない。
117 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部
118 である。プロジェクトの説明とバグ報告に関する情報は
119 http://www.kernel.org/doc/man\-pages/ に書かれている。