GETOBJFORMAT(3)

名称
getobjformat - 優先オブジェクトファイルフォーマットの取得

書式
#include <objformat.h> int getobjformat(char *buf, size_t bufsize, int *argcp, char **argv)

解説
getobjformat() はいくつかの情報源に問い合わせて、 優先オブジェクトファイルフォーマットを決め、呼び出し元によって設定された バッファにその名前をコピーします。

オブジェクトファイルフォーマットは、次のように決定されます。 argv が NULL でなく、 -aout または -elf のような明示的なコマンドライン引数が存在する場合は、 その引数がオブジェクトファイルフォーマットを決めます。

そうでない場合、環境に変数 OBJFORMAT が設定されていれば、 その変数の値からオブジェクトファイルフォーマットがとられます。

そうでない場合、ファイル /etc/objformat の読み取りが可能で、 ‘OBJFORMAT=xxx’ という形式の行が含まれていれば、オブジェクトファイルフォーマット はそこからとられます。

そうでない場合、 組み込みのシステムデフォルトのオブジェクトファイルフォーマットが返ります。

buf は、オブジェクトファイルフォーマットの名前がそこにコピーされる、 ユーザ指定のバッファを示します。 bufsize は、バッファの大きさをバイト数で与えます。 buf に置かれる文字列は常にヌルで終わります。 ヌルで終わるバッファ名を保持するためにはバッファが小さすぎる場合、 エラーになります。

argv は、オブジェクトフォーマットのオプションがスキャンされる、 NULL で終わる引数ベクトルを示します。引数ベクトルがスキャンしない場合は、 argv を NULL にすることができます。

argcp が NULL でなければ、すべてのオブジェクトフォーマットオプションは引数 ベクトルから削除され、更新された引数カウントが、 argcp で参照される整数に格納されます。 argcp が NULL ならば、引数ベクトルは変更されないでそのまま残ります。

戻り値
成功した場合 getobjformat() は、終わりのヌルを含まない オブジェクトファイルフォーマット名の長さを返します。 オブジェクトファイルフォーマットおよび終わりのヌルを保持するためには、 指定のバッファが小さすぎる場合、 getobjformat() は -1 を返します。 その場合 バッファおよび、呼び出し元によって指定された引数ベクトルの内容は不定です。

環境変数

OBJFORMAT
    環境変数 OBJFORMAT が設定されると、デフォルトのオブジェクトファイルフォーマットに優先します。 OBJFORMAT は /etc/objformat に優先します。

関連ファイル
/etc/objformat
    存在すればこれが、使用するオブジェクトファイルフォーマットを指定します。構文は ‘OBJFORMAT=xxx’ です。

関連項目
objformat(1)

歴史
getobjformat() 関数は FreeBSD 3.0 で最初に取り入れられました。