名前


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

ライブラリ



.Lb libmagic

書式



.In 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 を整理し、 エラーコードと (マジッククッキーの) 割り当てを実装した。

openSUSE Logo

コンテンツ