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 を返します。 filename が NULL であるなら、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
- コンパイルされたデフォルトのマジックデータベース。
作者
は、最初に libmagic を実装し設定しました。 は、API のクリーンアップ、エラーコードと割り付け操作を行いました。December 19, 2011 | FreeBSD |