| 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 |