tail head cat sleep
QR code linking to this page

manページ  — GETSUBOPT

名称

getsubopt – 引数からサブオプションを取得

内容

ライブラリ

Standard C Library (libc, -lc)

書式

#include <unistd.h>
extern char *suboptarg;

int
getsubopt(char **optionp, char * const *tokens, char **valuep);

解説

getsubopt() 関数は、 1 つまたは複数のタブ、スペースまたはコンマ (‘amp;,’) キャラクタによって区切られたトークンが含まれる文字列を解析します。 ユーティリティのコマンドラインの一部として入力される、 オプション引数のまとまりを解析するのに使用するのが目的です。

引数 optionp は、文字列へのポインタを指すポインタです。 引数 tokens は、文字列へのポインタを持つ、 NULL で終わる配列を指すポインタです。

getsubopt() 関数は、文字列の最初のトークンに適合する文字列を参照する tokens 配列中のポインタの、0 始まりのオフセットを返します。 文字列にトークンが一切含まれない、または tokens 中に適合する文字列が含まれない場合には -1 を返します。

トークンの形式が ``name=value'' である場合、 valuep で参照される先は、 トークンの ``value'' の部分の先頭を指すように設定されます。

getsubopt() から戻った時、 optionp が文字列の次のトークンの先頭を指すように設定されます。 または、それ以上のトークンがない場合には、 文字列の終わりの null を指します。 外部変数 suboptarg は、現在のトークンの先頭を指すように設定されます。 トークンがなかった場合は、 NULL となります。 引数 valuep は、トークンの ``value'' の部分を示すように設定されます。 または、``value'' 部分がなかった場合は NULL となります。

使用例

char *tokens[] = {
        #define ONE     0
                "one",
        #define TWO     1
                "two",
        NULL
};

amp;...

extern char *optarg, *suboptarg; char *option, *value;

while ((ch = getopt(argc, argv, "ab:")) != -1) {         switch(ch) {         case 'a':                 /* ``a'' オプションを処理 */                 break;         case 'b':                 option = optarg;                 while (*option) {                         switch(getsubopt(&option, tokens, &value)) {                         case ONE:                                 /* ``one'' サブオプションを処理 */                                 break;                         case TWO:                                 /* ``two'' サブオプションを処理 */                                 if (!value)                                         error("no value for two");                                 i = atoi(value);                                 break;                         case -1:                                 if (suboptarg)                                         error("illegal sub option %s",                                          suboptarg);                                 else                                         error("missing sub option");                                 break;                 }                 break;         }

関連項目

getopt(3), strsep(3)

歴史

getsubopt() 関数は BSD 4.4 ではじめて登場しました。

GETSUBOPT (3) June 9, 1993

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.