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

名称

magic_open, magic_close, magic_error, magic_descriptor, magic_buffer, magic_setflags, magic_check, magic_compile, magic_loadマジックナンバ認識ライブラリ

ライブラリ

Magic Number Recognition Library (libmagic, -lmagic)

書式

#include < magic.h>

magic_t
magic_open( int flags);

void
magic_close( magic_t cookie);

const char *
magic_error( magic_t cookie);

int
magic_errno( magic_t cookie);

const char *
magic_descriptor( magic_t cookie, int fd);

const char *
magic_file( magic_t cookie, const char *filename);

const char *
magic_buffer( magic_t cookie, const void *buffer, size_t length);

int
magic_setflags( magic_t cookie, int flags);

int
magic_check( magic_t cookie, const char *filename);

int
magic_compile( magic_t cookie, const char *filename);

int
magic_list( magic_t cookie, const char *filename);

int
magic_load( magic_t cookie, const char *filename);

解説

これらの関数は、 magic(5) で説明されるマジックデータベースファイルを操作します。

関数 magic_open() は、マジッククッキーポインタを作成して、それを返します。マジッククッキーの割り付けエラーがあるなら、 NULL を返します。 flags 引数は、他のマジック関数がどうように振る舞うべきであるかを指定します:

MAGIC_NONE
特別な操作はありません。
MAGIC_DEBUG
stderr (標準エラー) にデバッグメッセージを印刷 (表示) します。
MAGIC_SYMLINK
問い合わせされたファイルがシンボリックリンクであるなら、それをたどります。
MAGIC_COMPRESS
ファイルが圧縮されているなら、それを展開 (unpack) して、内容を調べます。
MAGIC_DEVICES
ファイルがブロックまたはキャラクタ特殊デバイスであるなら、デバイスをオープンして、その内容を調べようと試みます。
MAGIC_MIME_TYPE
テキストの記述の代わりに MIME タイプの文字列を返します。
MAGIC_MIME_ENCODING
テキストの記述の代わりに MIME エンコードを返します。
MAGIC_MIME
MAGIC_MIME_TYPE | MAGIC_MIME_ENCODING のための省略表現。
MAGIC_CONTINUE
最初だけではなく、すべての一致を返します。
MAGIC_CHECK
一貫性についてマジックデータベースをチェックして、 stderr (標準エラー) に警告を印刷 (表示) します。
MAGIC_PRESERVE_ATIME
utime(3) または utimes(2) をサポートするシステムでは、解析されたファイルのアクセス時間を維持することを試みます。
MAGIC_RAW
印刷不可能な文字を\ooo 8 進表現に変換しません。
MAGIC_ERROR
マジックバッファにそれらを印刷することの代わりに、本当のエラーとしてファイルをオープンして、シンボリックリンクをたどるようにしている間に、オペレーティングシステムエラーを取り扱います。
MAGIC_APPLE
Apple 作成者とタイプを返します。
MAGIC_NO_CHECK_APPTYPE
EMX アプリケーションタイプ (EMX のみ) をチェックしません。
MAGIC_NO_CHECK_CDF
MS 合成文書ファイル (MS Composite Document Files) に関する特別の情報を取得しません。
MAGIC_NO_CHECK_COMPRESS
圧縮されたファイルの中を見ません。
MAGIC_NO_CHECK_ELF
ELF の詳細を印刷 (表示) しません。
MAGIC_NO_CHECK_ENCODING
テキストのエンコーディングをチェックしません。
MAGIC_NO_CHECK_SOFT
マジックファイルを調べません。
MAGIC_NO_CHECK_TAR
tar ファイルを調べません。
MAGIC_NO_CHECK_TEXT
様々なタイプのテキストファイルをチェックしません。
MAGIC_NO_CHECK_TOKENS
ASCII ファイル中で知られているトークンを検索しません。

magic_close() 関数は、 magic(5) データベースをクローズし、使用したどんなリソースも割り付けを解放します。

magic_error() 関数は、最後のエラーのテキスト形式の説明を返し、エラーがなかったなら、 NULL を返します。

magic_errno() 関数は、システムコールで遭遇した、最後のオペレーティングシステムのエラー番号 ( errno(2)) を返します。

magic_file() 関数は、 filename 引数の内容のテキスト形式の説明を返し、エラーが発生したなら、 NULL を返します。 filenameNULL であるなら、stdin (標準入力) が使用されます。

magic_descriptor() 関数は、 fd 引数の内容のテキスト形式の記述を返し、エラーが生じたなら、 NULL を返します。

magic_buffer() 関数は、 length バイトサイズの buffer 引数の内容のテキスト形式の説明を返します。

magic_setflags() 関数は、上記に説明された flags を設定します。また、両方の MIME フラグを一緒に使用すると文字セットに関する特別の情報を返すことができることに注意してください。

magic_check() 関数は、 filename で渡される、またはデフォルトのデータベースであるなら NULL で渡される、コロンで分離されたデータベースファイルのエントリの妥当性をチェックするために使用することができます。成功すれば 0、失敗すれば-1 を返します。

magic_compile() 関数は、 filename で渡される、またはデフォルトのデータベースであるなら NULL で渡される、データベースファイルのコロンで分離されたリストをコンパイルするために使用することができます。成功すれば 0、失敗すれば-1 を返します。作成されたコンパイルファイルは、それに“.mgc”が付けられたそれぞれのファイル引数の basename(1) の状態で名前が付けられます。

magic_list() 関数は、バイナリファイルと対してマッチするエントリを最初にダンプし、次にテキストファイルとマッチするものをダンプし、人間に読み込み可能な形式ですべてのマジックエントリをダンプします。データベースファイルのコロンで分離されたリストである省略可能な filename 引数、またはデータベースファイルのための NULL を取ります。

magic_load() 関数は、任意のマジックの問い合わせが実行される前に filename で渡される、またはデフォルトのデータベースであるなら NULL で渡される、データベースファイルのコロンで分離されたリストをロードするために使用されなければなりません。

デフォルトのデータベースファイルは、MAGIC 環境変数によって指定されます。その変数が設定されていないなら、デフォルトデータベースファイル名は、 /usr/share/misc/magic です。 magic_load() は、必要に応じて“.mgc”をデータベースファイル名に追加します。

戻り値

関数 magic_open() は、成功すればマジッククッキーを返し、失敗すれば、適切な値に errno を設定して NULL を返します。サポートされない値のフラグが与えられたなら、errno に EINVAL を設定します。 magic_list(), magic_load(), magic_compile() と magic_check() 関数は、成功すれば 0、失敗すれば-1 を返します。 magic_buffer(), magic_getpath() と magic_file() 関数は、成功すれば文字列を返し、失敗すれば NULL を返します。 magic_error() 関数は、上記の関数のエラーのテキスト形式の説明を返し、エラーがなければ NULL を返します。最後に、 magic_setflags() は、 MAGIC_PRESERVE_ATIME が設定されるとき、 utime(3) または utimes(2) をサポートしないシステムで-1 を返します。

関連ファイル

/usr/share/misc/magic
コンパイルされていないデフォルトのマジックデータベース。
/usr/share/misc/magic.mgc
コンパイルされたデフォルトのマジックデータベース。

関連項目

file(1), magic(5)

作者

Måns Rullgård は、最初に libmagic を実装し設定しました。 Christos Zoulas は、API のクリーンアップ、エラーコードと割り付け操作を行いました。
December 19, 2011 FreeBSD