ARGZ_ADD

Section: Linux Programmer's Manual (3)
Updated: 2020-11-01
Index JM Home 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);

void argz_delete(char **argz, size_t *argz_len, char *entry);

void argz_extract(const 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(const 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 型 (integer 型) の返り値を持つ。 成功した場合は 0 を返し、割り当てエラーが発生した場合は ENOMEM を返す。  

属性

この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース 属性 値
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()
Thread safety MT-Safe

 

準拠

これらの関数は GNU による拡張である。  

バグ

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

関連項目

envz_add(3)  

この文書について

この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

関連キーワード

argz   vector   size   create   count   ヌルバイト   delete   replace   操作   append   extract   insert   next   stringify   割り当て   バッファー   ポインター   末尾   終端   反対   エントリー   複数   最後   区切り文字   分割

Linux マニュアル 一覧

関連するコマンド・関数

argz.3   argz_add.3   argz_add_sep.3   argz_append.3   argz_count.3   argz_create.3
 

Index

名前
書式
説明
返り値
属性
準拠
バグ
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:11 GMT, October 11, 2026