HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > a > argz_add - ライブラリコールの説明

argz_add - ライブラリコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. バグ
  6. 準拠
  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 - argz リストを操作するための関数群

書式


"#include <argz.h>"
error_targz_add(char **argz, size_t *argz_len, const char *str);
error_targz_add_sep(char **argz, size_t *argz_len,const char *str, int delim);
error_targz_append(char **argz, size_t *argz_len,const char *buf, size_t buf_len);
size_targz_count(const char *argz, size_t argz_len);
error_targz_create(char * const argv[], char **argz,size_t *argz_len);
error_targz_create_sep(const char *str, int sep, char **argz,size_t *argz_len);
error_targz_delete(char **argz, size_t *argz_len, char *entry);
voidargz_extract(char *argz, size_t argz_len, char **argv);
error_targz_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_targz_replace(char **argz, size_t *argz_len, const char *str,const char *with, unsigned int *replace_count);
voidargz_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_lenは buf_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 ベクトルを作成する。 配列 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()の反対の操作を行う。 末尾の NULL バイト以外の全ての NULL バイト ('\0') を sepで置き換えて、 argz vector を通常の文字列に変換する。

返り値

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

バグ

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

準拠

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

関連項目

envz(3)

Linux Tips 関連記事
Linux Tips(目次)
Linux ディストリビューション一覧
rpm のファイル名にあるi386とかi686とは
自分のマシンの情報を調べる
cron の設定
ssh の root ログインを禁止する
ssh を、ユーザ、IPでアクセス制限
鍵交換方式によるssh接続
鍵交換方式によるssh接続( windowsから )
複数ファイル内の文字列を置換して上書き保存する
あるグループをイニシャルグループとするユーザー一覧出力
複数ファイルのファイル名を一括変換する
連番ファイルをコマンド一発で作成する
中身がランダムなファイルを任意のサイズで作成する
Linux ユーザーアカウントをロック・アンロックする