argz_add, argz_add_sep, argz_append, argz_count, argz_create, argz_create_sep,
  argz_delete, argz_extract, argz_insert, argz_next, argz_replace,
  argz_stringify - argz
  リストを操作するための関数群
#include <argz.h>
error_t argz_add(char **argz, size_t *argz_len, const char *str);
error_t argz_add_sep(char **argz, size_t *argz_len,
                     const char *str, int delim);
error_t argz_append(char **argz, size_t *argz_len,
                     const char *buf, size_t buf_len);
size_t argz_count(const char *argz, size_t argz_len);
error_t argz_create(char * const argv[], char **argz,
                     size_t *argz_len);
error_t argz_create_sep(const char *str, int sep, char **argz,
                     size_t *argz_len);
error_t argz_delete(char **argz, size_t *argz_len, char *entry);
void argz_extract(char *argz, size_t argz_len, char  **argv);
error_t argz_insert(char **argz, size_t *argz_len, char *before,
                     const char *entry);
char *argz_next(char *argz, size_t argz_len, const char *entry);
error_t argz_replace(char **argz, size_t *argz_len, const char *str,
                     const char *with, unsigned int *replace_count);
void argz_stringify(char *argz, size_t len, int sep);
これらの関数は glibc
  固有である。
argz vector
  は長さ情報付きの文字バッファへのポインタである。
  文字バッファでは、複数の文字列がヌルバイト
  ('\0')
  で区切られており、
  文字列の配列として解釈されるようになっている。
  長さが 0
  でない場合、バッファの最後のバイトはヌルバイトでなければならない。
これらの関数は argz vector
  を操作するためのものである。
  ペア (NULL,0) は argz vector
  であり、逆に言えば
  長さ 0 の argz
  vectorはヌルポインタを持たなければならない。
  空でない argz vector
  の割り当ては 
malloc(3)
  を使って行われる。したがって、argz
  vector を解放するのに 
free(3)
  を使うことができる。
argz_add() は、文字列 
str
  を配列 
*argz
  の末尾に追加し、 
*argz
  と 
*argz_len を更新する。
argz_add_sep()
  も同様の動作をするが、区切り文字
  
delim
  にしたがって文字列
  
str
  を複数の文字列に分割する点が異なる。
  例えば、区切り文字 ':'
  を指定して、UNIX
  サーチ・パスに対して
  この関数を使うことができるだろう。
argz_append() は argz vector (
buf, 
buf_len)
  の後ろに ( 
*argz, 
*argz_len)
  を付け加え、 
*argz と
  
*argz_len を更新する。
  (したがって、 
*argz_len は
  
buf_len だけ増加する。)
argz_count() は (
argz, 
argz_len)
  内の文字列の数を数える。実際にはヌルバイト
  ('\0')
  の数を数えている。
argz_create() は、UNIX
  流の引き数ベクトルである
  ( 
(char *) 0
  で終端される) 
argv
  を、argz vector ( 
*argz, 
*argz_len)
  に変換する。
argz_create_sep()
  は、ヌル終端された文字列
  
str を区切り文字 
sep
  が現れる毎に分割しながら、argz
  vector (* 
argz, 
*argz_len)
  に変換する。
argz_delete() は、 
entry
  で指し示された文字列を
  argz vector ( 
*argz, 
*argz_len)
  から削除し、 
*argz と
  
*argz_len を更新する。
argz_extract() は 
argz_create()
  の反対の操作を行う。argz
  vector ( 
argz, 
argz_len) を調べ、
  
argv
  から始まる配列をサブ文字列へのポインタで埋めていき、
  一番最後に NULL
  を入れて、UNIX 流の argv
  ベクトルを作成する。
  配列 
argv は
  
argz_count(
argz,
argz_len) + 1
  個のポインタを収容できる空間を持っていなければならない。
argz_insert() は 
argz_delete()
  の反対の操作を行う。argz
  vector ( 
*argz, 
*argz_len) の位置
  
before に引き数 
entry
  を挿入し、 
*argz と
  
*argz_len を更新する。
  
before が NULL の場合、 
entry
  は末尾に挿入される。
argz_next() は argz vector
  を順番に調べるための関数である。
  
entry が NULL
  の場合、最初のエントリを返す。
  そうでない場合、次のエントリを返す。
  次のエントリがない場合、NULL
  を返す。
argz_replace() は、 
str
  をすべて 
with
  で置き換える
  (必要に応じて argz
  の再割り当てを行う)。
  
replace_count が NULL
  でない場合、 
*replace_count
  を置き換えを行った数だけ増やす。
argz_stringify() は 
argz_create_sep()
  の反対の操作を行う。
  末尾の
  ヌルバイト以外の全てのヌルバイト
  ('\0') を 
sep
  で置き換えて、 argz vector
  を通常の文字列に変換する。
返り値¶
メモリ割り当てを行う
  argz 関数群はすべて 
error_t
  型の返り値を持つ。
  成功した場合は 0
  を返し、割り当てエラーが発生した場合は
  
ENOMEM を返す。
これらの関数は GNU
  による拡張である。注意して使用すること。
ヌルバイトで終端されていない
  argz vector を使用した場合、
  segmentation fault
  を起こすかもしれない。
関連項目¶
envz_add(3)
この文書について¶
この man ページは Linux 
man-pages
  プロジェクトのリリース
  3.65 の一部
  である。プロジェクトの説明とバグ報告に関する情報は
  
http://www.kernel.org/doc/man-pages/
  に書かれている。