EN JA
FPARSELN(3)
FPARSELN(3) FreeBSD Library Functions Manual FPARSELN(3)

名称

fparselnストリームから次の論理的な行を返す

ライブラリ

System Utilities Library (libutil, -lutil)

書式

#include < stdio.h>
#include < libutil.h>

char *
fparseln( FILE *stream, size_t *len, size_t *lineno, const char delim[3], int flags);

解説

fparseln() 関数は、 stream によって参照されるストリームから次の論理的な行へのポインタを返します。この文字列は、ヌル文字で終了しています。また、それは、各呼び出し時にダイナミックに割り付けられます。ポインタを解放するのは、呼び出し側の責任です。

デフォルトでは、文字がエスケープされる場合、それおよび前のエスケープ文字の両方は返された文字列の中に存在します。様々な flags は、この振る舞いを変更します。

引数の意味は、次のとおりです。

stream
読み込みストリーム。
len
NULL でない場合、文字列の長さは、それが指すメモリ位置に格納されます。
lineno
NULL でない場合、指されるメモリ位置の値は、ファイルから実際に読まれた行の数によって増加させられます。
delim
エスケープ、継続およびコメント文字を含んでいます。文字がヌル文字である場合、その文字のための処理は無効になります。 NULL の場合、すべての文字は、次に指定された値のデフォルトとなります。 delim の内容、次のとおりです。
delim[0]
エスケープ文字 (デフォルトは、 \ です) は、次の文字からどんな特別の意味を取り除くために使われます。
delim[1]
継続文字 (デフォルトは、 \ です) は、この文字が現在の行の最後の文字でエスケープされない場合に、次の行が現在の行と連結されるべきであることを示すために使われます。
delim[2]
コメント文字 (デフォルトは、 # です) は、エスケープされていなければ、現在の行の終了まで拡張するコメントの始まりを示します。
flags
0 でない場合、 fparseln() の操作を変更します。ともに or (論理和) される様々なフラグは、次のとおりです。
FPARSELN_UNESCCOMM
エスケープされたコメントに先行するエスケープを削除します。
FPARSELN_UNESCCONT
エスケープされた継続に先行するエスケープを削除します。
FPARSELN_UNESCESC
エスケープされたエスケープに先行するエスケープを削除します。
FPARSELN_UNESCREST
他の文字に先行するエスケープを削除します。
FPARSELN_UNESCALL
上記のものすべて。

戻り値

成功して終了すれば解析された行へのポインタが返されます。そうでなければ、 NULL が返されます。

fparseln() 関数は、内部の fgetln(3) を使用します。したがって、 fgetln(3) に当てはまるエラー条件は、すべて fparseln() に当てはまります。さらに、 fparseln() は、 errnoENOMEM を設定します。また、それがメモリ不足の場合、 NULL を返します。

関連項目

fgetln(3)

歴史

fparseln() 関数は、 NetBSD 1.4FreeBSD 4.0 ではじめて登場しました。
December 1, 1997 FreeBSD