fileコマンドのソースを取得します。すべてではないにしてもほとんどのオープンソースのunicesがこれを使用しています。fileコマンドが付属していますmagicちなんで名付けられたデータベース、マジックナンバー、それは説明しています。(このデータベースは、ライブシステムにもインストールされますが、コンパイルされた形式です。)表示される説明テキストを含むファイルを探します。
grep 'Berkeley DB' magic/Magdir/*
magicmanページには、ファイルの形式について説明します。「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_filemagic_buffer