.\" Copyright (c) 1998 John D. Polstra .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/lib/libc/gen/getobjformat.3,v 1.3.2.5 2001/12/14 18:33:51 ru Exp % .\" .\" $FreeBSD$ .Dd September 7, 1998 .Dt GETOBJFORMAT 3 .Os .Sh 名称 .Nm getobjformat .Nd 優先オブジェクトファイルフォーマットの取得 .Sh ライブラリ .Lb libc .Sh 書式 .In objformat.h .Ft int .Fn getobjformat "char *buf" "size_t bufsize" "int *argcp" "char **argv" .Sh 解説 .Fn getobjformat はいくつかの情報源に問い合わせて、 優先オブジェクトファイルフォーマットを決め、呼び出し元によって設定された バッファにその名前をコピーします。 .Pp オブジェクトファイルフォーマットは、次のように決定されます。 .Va argv が .Dv NULL でなく、 .Fl aout または .Fl elf のような明示的なコマンドライン引数が存在する場合は、 その引数がオブジェクトファイルフォーマットを決めます。 .Pp そうでない場合、環境に変数 .Ev OBJFORMAT が設定されていれば、 その変数の値からオブジェクトファイルフォーマットがとられます。 .Pp そうでない場合、ファイル .Pa /etc/objformat の読み取りが可能で、 .Ql OBJFORMAT=xxx という形式の行が含まれていれば、オブジェクトファイルフォーマット はそこからとられます。 .Pp そうでない場合、 組み込みのシステムデフォルトのオブジェクトファイルフォーマットが返ります。 .Pp .Va buf は、オブジェクトファイルフォーマットの名前がそこにコピーされる、 ユーザ指定のバッファを示します。 .Va bufsize は、バッファの大きさをバイト数で与えます。 .Va buf に置かれる文字列は常にヌルで終わります。 ヌルで終わるバッファ名を保持するためにはバッファが小さすぎる場合、 エラーになります。 .Pp .Va argv は、オブジェクトフォーマットのオプションがスキャンされる、 .Dv NULL で終わる引数ベクトルを示します。引数ベクトルがスキャンしない場合は、 .Va argv を .Dv NULL にすることができます。 .Pp .Va argcp が .Dv NULL でなければ、すべてのオブジェクトフォーマットオプションは引数 ベクトルから削除され、更新された引数カウントが、 .Va argcp で参照される整数に格納されます。 .Va argcp が .Dv NULL ならば、引数ベクトルは変更されないでそのまま残ります。 .Sh 戻り値 成功した場合 .Fn getobjformat は、終わりのヌルを含まない オブジェクトファイルフォーマット名の長さを返します。 オブジェクトファイルフォーマットおよび終わりのヌルを保持するためには、 指定のバッファが小さすぎる場合、 .Fn getobjformat は -1 を返します。 その場合 バッファおよび、呼び出し元によって指定された引数ベクトルの内容は不定です。 .Sh 環境変数 .Bl -tag -width OBJFORMAT .It Ev OBJFORMAT 環境変数 .Ev OBJFORMAT が設定されると、デフォルトのオブジェクトファイルフォーマットに優先します。 .Ev OBJFORMAT は .Pa /etc/objformat に優先します。 .El .Sh 関連ファイル .Bl -tag -width /etc/objformat -compact .It Pa /etc/objformat 存在すればこれが、使用するオブジェクトファイルフォーマットを指定します。構文は .Ql OBJFORMAT=xxx です。 .El .Sh 関連項目 .Xr objformat 1 .Pp .Sh 歴史 .Fn getobjformat 関数は .Fx 3.0 ではじめて登場しました。