Fn sbuf_new 関数は最初の引数で指される Fa sbuf を初期化します。 そのポインタが NULL の場合には、 Fn sbuf_new は Vt struct sbuf 構造体を malloc(9) を使用して割り当てます。 Fa buf 引数は実際に文字列が格納されるバッファへのポインタで、 NULL の場合には、 Fn sbuf_new は malloc(9) を使用してバッファを割り当てます。 Fa length は格納バッファの初期の大きさです。 4 番目の引数 Fa flags は以下のフラグから構成され得ます:
Fa buf が NULL でない場合には、少なくとも Fa length 文字以上の配列を指さなければならないことに注意してください。 sbuf によって使用されている間に直接その配列にアクセスすることの結果は 未定義です。
Fn sbuf_delete 関数は Fa sbuf をクリアして、そのために割り当てられた全てのメモリを開放します。 全ての Fn sbuf_new への呼び出しのための Fn sbuf_delete の呼び出しがなければなりません。 削除された後の sbuf への全てのアクセスの試みは失敗します。
Fn sbuf_clear 関数は Fa sbuf の内容を無効にし、位置を 0 にリセットします。
Fn sbuf_setpos 関数は Fa sbuf の終了位置を、0 と格納バッファの大きさよりも 1 小さい値の間の値である Fa pos に設定します。 結果として、新しい位置において sbuf の先端を切り捨てることになります。
Fn sbuf_bcat 関数はバッファ Fa buf の最初の Fa len バイトを Fa sbuf に追加します。
Fn sbuf_bcopyin 関数は明示されたユーザ空間アドレスから Fa sbuf に Fa len バイトをコピーします。
Fn sbuf_bcpy 関数は Fa sbuf の内容をバッファ Fa buf の最初の Fa len バイトで置き換えます。
Fn sbuf_cat 関数は NUL 文字で終端された文字列 Fa str を Fa sbuf の現在位置に追加します。
Fn sbuf_copyin 関数は NUL 文字で終端された文字列を明示されたユーザ空間アドレスから Fa sbuf にコピーします。 Fa len 引数が 0 でない場合には Fa len 文字を越えない文字 (終端の NUL は数えません) がコピーされ、 そうでない場合には文字列全体、または Fa sbuf に詰め込むことが出来るだけの文字をコピーします。
Fn sbuf_cpy 関数は Fa sbuf の内容を NUL 文字で終端された文字列 Fa str で置き換えます。 これは新しい Fa sbuf で、または Fn sbuf_clear か Fn sbuf_setpos でその位置を 0 にリセットされている Fa sbuf で、 Fn sbuf_cat を呼び出すことと等価です。
Fn sbuf_printf 関数は Fa fmt によって指されているフォーマット文字列に従ってその引数をフォーマットし、 その結果の文字列を Fa sbuf の現在位置に追加します。
Fn sbuf_vprintf 関数は Fn sbuf_printf と同様に振舞いますが、引数が可変長引数リスト Fa ap から取得されることが違います。
Fn sbuf_putc 関数は文字 Fa c を Fa sbuf の現在位置に追加します。
Fn sbuf_trim 関数は末尾の空白を Fa sbuf から除去します。
Fn sbuf_overflowed 関数は Fa sbuf がオーバフローしている場合に 0 以外の値を返します。
Fn sbuf_finish 関数は Fa sbuf をヌルで終端し、これ以上 Fn sbuf_setpos , Fn sbuf_cat , Fn sbuf_cpy , Fn sbuf_printf または Fn sbuf_putc を使用して修正されることが無いことを意味する完了マークを付けます。
Fn sbuf_data および Fn sbuf_len 関数はそれぞれ現在の文字列とその長さを返します。 Fn sbuf_data は完了した Fa sbuf に対してのみ機能します。 Fn sbuf_done はその sbuf が終了した場合には、0 でない値を返します。
Fn sbuf_setpos は Fa pos が不正な場合には -1 を返し、そうでない場合には 0 を返します。
Fn sbuf_cat , Fn sbuf_cpy , Fn sbuf_printf , Fn sbuf_putc , Fn sbuf_trim は全てバッファがオーバフローした場合には -1 を返し、 そうでない場合には 0 を返します。
Fn sbuf_overflowed はバッファがオーバフローしている場合には 0 以外に値を返し、 そうでない場合には 0 を返します。
Fn sbuf_data および Fn sbuf_len はバッファがオーバフローしている場合には、それぞれ NULL および -1 を返します。
このマニュアルページは An Dag-Erling Sm/orgrav Aq des@FreeBSD.org が書きました。