ARGZ_ADD

Section: Linux Programmer's Manual (3)
Updated: 2007-05-18
Index JM Home Page roff page
 

名前

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 は長さ情報付きの文字バッファへのポインタである。 文字バッファでは、複数の文字列が NULL バイト ('\0') で区切られており、 文字列の配列として解釈されるようになっている。 長さが 0 でない場合、バッファの最後のバイトは NULL バイトでなければならない。

これらの関数は argz vector を操作するためのものである。 ペア (NULL,0) は argz vector であり、逆に言えば 長さ 0 の argz vectorは NULL ポインタを持たなければならない。 空でない 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_lenbuf_len だけ増加する。)

argz_count() は (argz,argz_len) 内の文字列の数を数える。実際には NULL バイト ('\0') の数を数えている。

argz_create() は、Unix 流の引き数ベクトルである argv ((char *) 0 で終端される) を、argz vector (*argz,*argz_len) に変換する。

argz_create_sep() は、NULL 終端された文字列 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 ベクトルを作成する。 配列 argvargz_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() の反対の操作を行う。 末尾の NULL バイト以外の全ての NULL バイト ('\0') を sep で置き換えて、 argz vector を通常の文字列に変換する。  

返り値

メモリ割り当てを行う argz 関数群はすべて error_t 型の返り値を持つ。 成功した場合は 0 を返し、割り当てエラーが発生した場合は ENOMEM を返す。  

準拠

これらの関数は GNU による拡張である。注意して使用すること。  

バグ

NULL バイトで終端されていない argz vector を使用した場合、 segmentation fault を起こすかもしれない。  

関連項目

envz(3)


 

Index

名前
書式
説明
返り値
準拠
バグ
関連項目

This document was created by man2html, using the manual pages.
Time: 04:31:31 GMT, November 19, 2007