GNOME 2.2 システム管理 (Linux 版)

ファイルの MIME タイプの検出

アプリケーションは以下の方法でファイルの MIME タイプを検出します。

  1. アプリケーションは、「ファイルタイプ判別パターン」を使用して、ファイル内の特定のパターンを検索します。 ファイルタイプ判別パターンは、ファイル内の特定のパターンと MIME タイプを関連付けます。 アプリケーションがそのパターンとの一致を見つけると、そのパターンに関連付けられている MIME タイプがファイルの MIME タイプになります。

  2. ファイルタイプ判別パターンによって MIME タイプが識別されない場合、アプリケーションはファイル名を調べます。 アプリケーションは、ファイル名を「MIME タイプレジストリ」と照合します。 MIME タイプレジストリは、特定のファイル拡張子とファイル名パターンを特定の MIME タイプに関連付けます。 ファイル名との一致が見つかると、その拡張子またはパターンに関連付けられている MIME タイプが、ファイルの MIME タイプになります。

この節では、ファイルタイプ判別パターンと MIME タイプレジストリについて詳しく説明します。

ファイルタイプ判別パターン

ファイルタイプ判別パターンは、/etc/gnome-vfs-mime-magic ファイルに指定されています。 以下にファイルタイプ判別パターンの例を示します。

0	string		\x89PNG					image/png

ファイルタイプ判別パターンの構文は、以下のとおりです。

offset_start[:offset_end] pattern_type pattern [&pattern_mask] type

表 4–1 は、ファイルタイプ判別パターンの各フィールドを説明しています。

表 4–1 ファイルタイプ判別パターンのフィールド

フィールド 

説明 

offset_start

テキストパターンを判別する前に、ファイル内で無視する文字数を指定します。 

pattern_type

判別するパターンのタイプを指定します。 このマニュアルの発行時点では、string パターンタイプのみがサポートされています。

pattern

判別するパターンを指定します。 

pattern_mask

パターンマスクは、16 進数形式で指定します。 パターンマスクについては、次の節を参照してください。

このフィールドは省略可能です。 このフィールドは例には示されていません。 

type

このエントリと一致するファイルに関連付ける MIME タイプを指定します。 

パターンマスク

パターンマスクは、ファイル内でパターンを判別するときに、パターン中で無視するビットを識別します。 以下は、ファイルタイプ判別パターンとパターンマスクの例を示しています。

0     string          BMxxxx\000\000 &0xffff00000000ffff      image/bmp

この例のパターンとマスクは、以下のとおりです。

パターン 

B

M

x

x

x

x

\000

\000

マスク 

ff

ff

00

00

00

00

ff

ff

パターンとマスクは、次のような特性でファイルを指定します。

  1. ファイルは BM から始まります。

  2. BM の後に、任意の 4 バイトの値が続きます。

  3. 任意の 4 バイトの後に、\000\000 が続きます。

ファイルタイプ判別パターンは、このパターンとマスクに一致するファイルの MIME タイプが、image/bmp であることを示します。

MIME タイプレジストリ

MIME タイプレジストリは、/usr/share/mime-info にあります。 MIME タイプレジストリには、次のファイルが含まれています。

ファイル 

ファイル拡張子 

MIME 情報ファイル 

.mime

MIME キーファイル 

.keys

この節では、MIME 情報ファイルと MIME キーファイルについて説明します。

MIME 情報ファイル

MIME 情報ファイルは、MIME タイプを以下の 1 つまたは両方と関連付けます。

アプリケーションがファイルの MIME タイプを検索する場合、アプリケーションはファイル名を MIME 情報ファイルと照合します。 ファイル名との一致が見つかると、その拡張子またはパターンに関連付けられている MIME タイプが、ファイルの MIME タイプになります。

MIME 情報ファイルでは、検索するファイル名のパターンは、正規表現で書かれています。

MIME 情報ファイル内の MIME タイプエントリの形式は、以下のとおりです。

MIME-type
		ext[,priority]: list-of-extensions
		regex[,priority]: list-of-regular-expressions

ファイル拡張子および正規表現に、優先順位値を指定できます。 優先順位値を使用して、複合されたファイル名を区別できます。 たとえば、.gz 拡張子に優先順位値 1 を割り当て、それより高い優先順位値の 2.tar.gz 拡張子に割り当てたとします。 この場合、ファイル abc.tar.gz の MIME タイプは、.tar.gz になります。


注 –

ext フィールドと regex フィールドは、タブ文字 (\t) を使用してインデントする必要があります。


以下の MIME タイプエントリは、gnome-vfs.mime MIME 情報ファイルからのサンプルです。

application/x-compressed-tar
		regex,2: tar\.gz$
		ext: tgz
audio/x-real-audio
		ext: rm ra ram
image/jpeg
		ext: jpe jpeg jpg
image/png
		ext: png
text/html
		ext: html htm HTML
text/plain
		ext: asc txt TXT
text/x-readme
		regex: README.*

注 –

ファイルマネージャは、MIME 情報ファイルをアルファベット順に読み取ります。 MIME タイプがファイル拡張子または正規表現と関連付けられる順序は、アルファベット順で決定します。 たとえば、ファイル abc.mimedef.mime で、同じファイル拡張子が異なる MIME タイプに割り当てられている場合、abc.mime にある MIME タイプが使用されます。


MIME キーファイル

MIME キーファイルは、ユーザーインタフェースで使用される MIME タイプに関する情報を提供します。 たとえば、MIME キーファイルは、MIME タイプの説明を提供し、その MIME タイプのファイルを表すアイコンを指定します。

以下の例は、MIME キーファイルのサンプルを示しています。

text/html
		description=HTML page
		icon_filename=gnome-text-html
		default_action_type=application
		short_list_application_ids_for_novice_user_level=mozilla,netscape,galeon
		category=Documents/World Wide Web

注 –

MIME キーファイル内のキーは、タブ文字 (\t) を使用してインデントする必要があります。


表 4–2 は、MIME キーファイルで最も重要なキーについて説明しています。 通常、description キーと category キーは使用しているシステム環境に対応します。

表 4–2 MIME キーファイル内のキー

キー 

説明 

can_be_executable

この MIME タイプのファイルが実行可能かどうかを指定します 

description

MIME タイプの説明。 この説明は、ファイルマネージャおよびほかのアプリケーションで表示できます 

icon_filename

MIME タイプを表すアイコンのファイル名を指定します。 ファイル名へのパス、あるいはファイル拡張子は指定しない 

このアイコンは、ファイルマネージャおよびほかのアプリケーションで表示できます 

default_action_type

この MIME タイプのファイルを開いたときに行われる動作のカテゴリを指定します。 ほとんどのアプリケーションのこの MIME タイプに、application を指定します

short_list_application_ids
_for_novice_user_level

この MIME タイプのファイルを開くときに使用するアプリケーションを指定します。 優先順に 1 つ以上のアプリケーションを指定します。 アプリケーションは、アプリケーションレジストリに登録する必要があります 

category

MIME タイプのカテゴリを指定します。 このキーの値によって、「ファイル関連付け」設定ツール内の MIME タイプの場所が決定されます