Scroll to navigation

MAGIC(3) Library Functions Manual MAGIC(3)

名前

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

ライブラリ

Magic Number Recognition Library (libmagic, -lmagic)

書式

<magic.h> magic_t (int flags) void magic_close(magic_t cookie) const char * magic_error(magic_t cookie) int magic_errno(magic_t cookie) 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_load(magic_t cookie, const char *filename)

説明

これらの関数は magic(4) に記述されている magic データベースファイルを操作する。

関数 () はマジッククッキーポインタを生成して返す。 マジッククッキーの割り当てにエラーがあった場合、 この関数は NULL を返す。 flags 引き数は、他のマジック関数の挙動を指定する。

特別な処理を行わない。
標準エラー出力にデバッグメッセージを表示する。
クエリしたファイルがシンボリックリンクであった場合は、それを辿る。
ファイルが圧縮されていた場合は、展開して内容を読み込む。
ファイルがブロックスペシャルデバイスまたは キャラクタスペシャルデバイスであった場合、 デバイスをオープンして内容を読み込もうとする。
説明文ではなく mime 文字列を返す。
最初にマッチしたものだけではなく、マッチした全てを返す。
magic データベースの整合性をチェックし、 標準エラー出力に警告を表示する。
utime(2) または utimes(2) をサポートするシステムでは、 解析されたファイルのアクセス時刻を保存しようとする。
印刷不能文字を \ooo のような 8 進数表現に変換しない。
ファイルやシンボリックリンクをオープンしようとしている間に OS のエラーが起こった場合、 マジックバッファにエラーを表示せず、実際のエラーとして扱う。

() 関数は magic(4) データベースをクローズして、使用されている全てのリソースを解放する。

() 関数は最後に発生したエラーの説明文を返す。 エラーがない場合は NULL を返す。

() 関数はシステムコールによって最後に発生した OS エラーの番号 (errno(3)) を返す。

() 関数は filename 引き数で指定されたファイルの内容についての説明文を返す。 エラーが起った場合は NULL を返す。 filename が NULL の場合は標準入力を使う。

() 関数はバイトサイズ length の引き数 buffer の内容について、説明文を返す。

() 関数は上記の flags を設定する。

() 関数を使って、データベースファイルのエントリが有効であるかを検証できる。 検証されるデータベースは、コロン区切りのファイルリストの形式で、 filename で指定される。 filename が NULL の場合はデフォルトのデータベースを検証する。 検証が成功した場合は 0 を返し、 失敗した場合は -1 を返す。

() 関数を使って、データベースをコンパイルできる。 コンパイルされるデータベースは、コロン区切りのファイルリストの形式で、 filename で指定される。 filename が NULL の場合は、デフォルトのデータベースがコンパイルされる。 コンパイルが成功した場合は 0 を返し、 失敗した場合は -1 を返す。 コンパイルして生成されたファイルの名前は、 各ファイル引き数に basename(1) を適用して ".mgc" を追加したものになる。

何かマジッククエリを実行する前には、 () 関数を使ってデータベースファイルをロードしなければならない。 ロードするデータベースは、コロン区切りのファイルリストの形式で、 filename で指定される。 filename が NULL の場合は、デフォルトのデータベースがロードされる。

デフォルトのデータベースファイルは、 環境変数 MAGIC によって名前が指定される。 この環境変数が設定されない場合、 デフォルトのデータベースファイル名は /usr/share/file/magic である。

() データベースファイル名に ".mime" と ".mgc" を適宜追加する (どちらか一方の場合もある)。

返り値

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

ファイル

/usr/share/file/magic.mime
コンパイルされていないデフォルトの magic mime データベース。
/usr/share/file/magic.mime.mgc
コンパイル済みのデフォルトの magic mime データベース。
/usr/share/file/magic
コンパイルされていないデフォルトの magic データベース。
/usr/share/file/magic.mgc
コンパイル済みのデフォルトの magic データベース。

関連項目

file(1), magic(4)

著者

Mans Rullgard が最初の libmagic の実装と構成を行った。 Christos Zoulas は API を整理し、 エラーコードと (マジッククッキーの) 割り当てを実装した。

March 22, 2003 Linux 5.14.0-427.18.1.el9_4.x86_64