fileコマンドのソースを取得します。すべてではないにしてもほとんどのオープンソースのunicesがこれを使用しています。file
コマンドが付属していますmagic
ちなんで名付けられたデータベース、マジックナンバー、それは説明しています。(このデータベースは、ライブシステムにもインストールされますが、コンパイルされた形式です。)表示される説明テキストを含むファイルを探します。
grep 'Berkeley DB' magic/Magdir/*
magic
manページには、ファイルの形式について説明します。「Berkeley DB」のトリガーラインは次のとおりです。
0 long 0x00061561 Berkeley DB
0 belong 0x00061561 Berkeley DB
12 long 0x00061561 Berkeley DB
12 belong 0x00061561 Berkeley DB
12 lelong 0x00061561 Berkeley DB
12 long 0x00053162 Berkeley DB
12 belong 0x00053162 Berkeley DB
12 lelong 0x00053162 Berkeley DB
12 long 0x00042253 Berkeley DB
12 belong 0x00042253 Berkeley DB
12 lelong 0x00042253 Berkeley DB
12 long 0x00040988 Berkeley DB
12 belong 0x00040988 Berkeley DB
12 lelong 0x00040988 Berkeley DB
最初の列は、特定のバイトシーケンスが見つかるオフセットを指定します。3列目には、バイトシーケンスが含まれます。2列目は、バイトシーケンスのタイプを示しています。long
つまり、プラットフォームのエンディアンで4バイトを意味します。リトルエンディアンとビッグエンディアンの順序でそれぞれ4バイトlelong
をbelong
意味します。
ルールを複製するのではなく、file
ユーティリティを呼び出します。それはPOSIXによって指定されていますが、それが認識するフォーマットとそれが出力する説明はそうではありません。または、or 関数にリンクしlibmagic
て呼び出すこともできます。magic_file
magic_buffer