[Glue!] サーバからの戻り値の解釈


GlueLogicAccess 関数が返してくる、 サーバに対する名前のアクセス結果を含んだ戻り値は、 ASCII 文字列としては特殊な構造を持っている。
この戻り値を先頭から順に処理して、名前とその値を示す文字列に変換するために、 GlueLogicParseTuple 関数が用意されている。


GlueLogicParseTuple 関数には、 第一引数に parse しようとする文字列を指すポインタを入れた変数へのポインタを与える。 この変数の内容は文字列の parse に連れ、残っている部分を示して変化する。 与えられた文字列の中に名前と値の組が存在する場合には、 戻り値として 1 を、全ての処理が終っている場合には 0 を返す。
名前と値の組が存在する場合には、同時に引数を介して名前と値とを示すポインタを返す。 引数は、これを介して値を戻せるようにするため、 char ** というデータ型で定義されている。 一般には引数には、char * で定義されたポインタ変数を、 その変数のアドレスで指定する。


GlueLogicAccess 関数が戻して来る値には、 エラーなどを示す診断メッセージと、名前と値との対との両方が含まれる。 GlueLogicParseTuple 関数が解釈した要素が診断メッセージであった場合には、 名前を示すポインタには NULL が返される。

GlueLogicParseTuple 関数の一般的な利用法は、以下のようになる。

char line[1024], *p, *n, *v;

if (p = GlueLogicAccess( line, 1024, ..., NULL ) {
    while ( GlueLogicParseTuple( &p, &n, &v ) ) {
	if ( n ) {
	    printf( "name:[%s], value:[%s]; ", n, v );
	} else {
	    printf( "diagnostics:[%s]; ", v );
	}
    }
}


 [M.T. HomePage]  [written & copyrighted by Masayuki Takata]