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
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 データベース。
関連項目¶
著者¶
Mans Rullgard が最初の libmagic の実装と構成を行った。 Christos Zoulas は API を整理し、 エラーコードと (マジッククッキーの) 割り当てを実装した。
March 22, 2003 | Linux 5.14.0-427.18.1.el9_4.x86_64 |