Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all
名前
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 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_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 データベースファイルを操作する。 関数 magic_open() はマジッククッキーポインタを生成して返す。 マジッククッキーの割り当てにエ ラーがあった場合、 この関数は NULL を返す。 flags 引き数は、他のマジック関数の挙動を指定す る。 MAGIC_NONE 特別な処理を行わない。 MAGIC_DEBUG 標準エラー出力にデバッグメッセージを表示する。 MAGIC_SYMLINK クエリしたファイルがシンボリックリンクであった場合は、それを辿る。 MAGIC_COMPRESS ファイルが圧縮されていた場合は、展開して内容を読み込む。 MAGIC_DEVICES ファイルがブロックスペシャルデバイスまたは キャラクタスペシャルデバイスで あった場合、 デバイスをオープンして内容を読み込もうとする。 MAGIC_MIME 説明文ではなく mime 文字列を返す。 MAGIC_CONTINUE 最初にマッチしたものだけではなく、マッチした全てを返す。 MAGIC_CHECK magic データベースの整合性をチェックし、 標準エラー出力に警告を表示する。 MAGIC_PRESERVE_ATIME utime(2) または utimes(2) をサポートするシステムでは、 解析されたファイルの アクセス時刻を保存しようとする。 MAGIC_RAW 印刷不能文字を \ooo のような 8 進数表現に変換しない。 MAGIC_ERROR ファイルやシンボリックリンクをオープンしようとしている間に OS のエラーが起 こった場合、 マジックバッファにエラーを表示せず、実際のエラーとして扱う。 magic_close() 関数は magic(4) データベースをクローズして、使用されている全てのリソースを解放 する。 magic_error() 関数は最後に発生したエラーの説明文を返す。 エラーがない場合は NULL を返す。 magic_errno() 関数はシステムコールによって最後に発生した OS エラーの番号 (errno(3)) を返す。 magic_file() 関数は filename 引き数で指定されたファイルの内容についての説明文を返す。 エラー が起った場合は NULL を返す。 filename が NULL の場合は標準入力を使う。 magic_buffer() 関数はバイトサイズ length の引き数 buffer の内容について、説明文を返す。 magic_setflags() 関数は上記の flags を設定する。 magic_check() 関数を使って、データベースファイルのエントリが有効であるかを検証できる。 検証 されるデータベースは、コロン区切りのファイルリストの形式で、 filename で指定される。 filename が NULL の場合はデフォルトのデータベースを検証する。 検証が成功した場合は 0 を返 し、 失敗した場合は -1 を返す。 magic_compile() 関数を使って、データベースをコンパイルできる。 コンパイルされるデータベース は、コロン区切りのファイルリストの形式で、 filename で指定される。 filename が NULL の場合 は、デフォルトのデータベースがコンパイルされる。 コンパイルが成功した場合は 0 を返し、 失敗 した場合は -1 を返す。 コンパイルして生成されたファイルの名前は、 各ファイル引き数に basename(1) を適用して ".mgc" を追加したものになる。 何かマジッククエリを実行する前には、 magic_load() 関数を使ってデータベースファイルをロードし なければならない。 ロードするデータベースは、コロン区切りのファイルリストの形式で、 filename で指定される。 filename が NULL の場合は、デフォルトのデータベースがロードされる。 デフォルトのデータベースファイルは、 環境変数 MAGIC によって名前が指定される。 この環境変数 が設定されない場合、 デフォルトのデータベースファイル名は /usr/share/file/magic である。 magic_load() データベースファイル名に ".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 を整理し、 エ ラーコードと (マジッククッキーの) 割り当てを実装した。