mbox - Unix MBOX の操作

------------------------------------------------------------------------------
LockType

typedef enum {
	LOCK_FILE,
	LOCK_FLOCK
} LockType;

mbox ファイルのロックに使用する方式を指定するための enum です。

LOCK_FILE: ロックにファイルを使用
LOCK_FLOCK: ロックに flock() または lockf() を使用

------------------------------------------------------------------------------
gint proc_mbox		(FolderItem	*dest,
			 const gchar	*mbox,
			 GHashTable	*folder_table);

Unix MBOX ファイル mbox をフォルダ dest に取り込みます。
folder_table が指定されていれば、フィルタを適用し、移動先のフォルダを
キー(値は1)として folder_table に追加します。フィルタによって移動または
削除が行われなければ dest に取り込まれます。

dest: 取り込み先フォルダ
mbox: 取り込み対象の Unix MBOX ファイル
folder_table: 移動先フォルダを格納するハッシュテーブル(NULL 可)
戻り値: 成功した場合取り込んだメッセージ数
        エラーの場合 -1

------------------------------------------------------------------------------
gint lock_mbox		(const gchar	*base,
			 LockType	 type);

ファイル base を type で指定した方式でロックします。
ロックは unlock_mbox() で解除します。

type に LOCK_FILE を指定した場合は base + "." + PID というファイルを作成し、
それに対して base + ".lock" というハードリンクを作成します。
このロックファイルが作成できなかった場合は、一定時間再試行します。

type に LOCK_FLOCK を指定した場合は環境に応じて flock() または lockf()
を用いてロックを行います。

Win32 ではこの関数は常に -1 を返します。

base: ロックするファイル
type: ロックに使用する方式
戻り値: 成功した場合:
        LOCK_FILE の場合 0
        LOCK_FLOCK の場合ロックしたファイルのデスクリプタ
        エラーの場合 -1

------------------------------------------------------------------------------
gint unlock_mbox	(const gchar	*base,
			 gint		 fd,
			 LockType	 type);

lock_mbox() でロックされているファイル base のロックを解除します。
fd と type は lock_mbox() で使用した値と対応している必要があります。

base: ロックされているファイル
fd: type が LOCK_FLOCK の場合ロックしたファイルのデスクリプタ
type: ロックに使用した方式
戻り値: 成功した場合 0
        エラーの場合 -1

------------------------------------------------------------------------------
gint copy_mbox		(const gchar	*src,
			 const gchar	*dest);

ファイル src を dest にコピーします。 dest が既に存在する場合は dest の
バックアップを取ります。 copy_file(src, dest, TRUE) と同等です。

src: コピー元ファイルのパス
dest: コピー先のパス
戻り値: 成功した場合 0
        エラーの場合 -1

------------------------------------------------------------------------------
void empty_mbox		(const gchar	*mbox);

ファイル mbox のサイズを0に切り詰めます。

mbox: 切り詰めるファイル

------------------------------------------------------------------------------
gint export_to_mbox	(FolderItem	*src,
			 const gchar	*mbox);

フォルダ src の内容を Unix MBOX 形式のファイル mbox に出力します。

src: 入力フォルダ
mbox: 出力先ファイルのパス
戻り値: 成功した場合 0
        エラーの場合 -1
