account - アカウント情報の管理

------------------------------------------------------------------------------
typedef gint	(*AccountFunc)	(PrefsAccount	*ac_prefs,
				 gpointer	 user_data);

account_foreach で呼び出されるコールバック関数の型です。

------------------------------------------------------------------------------
void	      account_read_config_all	(void);

すべてのアカウントの設定を読み込みます。

------------------------------------------------------------------------------
void	      account_write_config_all	(void);

すべてのアカウントの設定を書き出します。

------------------------------------------------------------------------------
PrefsAccount *account_get_current_account	(void);

現在選択されているアカウントを返します。

戻り値: 現在選択されているアカウントを指す PrefsAccount 構造体へのポインタ
        アカウントが存在しなければ NULL

------------------------------------------------------------------------------
PrefsAccount *account_find_from_smtp_server	(const gchar	*address,
						 const gchar	*smtp_server);

アドレスと SMTP サーバから最初に一致するアカウントを検索します。

address: メールアドレス
smtp_server: SMTP サーバのホスト名
戻り値: アドレスと SMTP サーバが最初に一致したアカウント
        見つからなければ NULL

------------------------------------------------------------------------------
PrefsAccount *account_find_from_address		(const gchar	*address);

アドレスから最初に一致するアカウントを検索します。

address: メールアドレス
戻り値: アドレスが最初に一致したアカウント
        見つからなければ NULL

------------------------------------------------------------------------------
PrefsAccount *account_find_from_id		(gint		 id);

アカウントIDが一致するアカウントを検索します。

id: アカウントID
戻り値: アカウントIDが一致したアカウント
        見つからなければ NULL

------------------------------------------------------------------------------
PrefsAccount *account_find_from_item		(FolderItem	*item);

フォルダのプロパティの設定で指定されているアカウントを検索します。
見つからなかった場合、メールボックス(Folder)にリンクしているアカウントが
あればそれを返します。

item: FolderItem オブジェクト
戻り値: 発見したアカウント
        見つからなければ NULL

------------------------------------------------------------------------------
PrefsAccount *account_find_from_item_property	(FolderItem	*item);

フォルダのプロパティの設定で指定されているアカウントを検索します。

item: FolderItem オブジェクト
戻り値: 発見したアカウント
        見つからなければ NULL

------------------------------------------------------------------------------
PrefsAccount *account_find_from_message_file	(const gchar	*file);

RFC 2822 メッセージファイル file の From、X-Sylpheed-Account-Id、AID
ヘッダから、アカウントを検索します。

file: RFC 2822 メッセージファイルのパス(ファイル名エンコーディング)
戻り値: 一致したアカウント
        見つからなければ NULL

------------------------------------------------------------------------------
PrefsAccount *account_find_from_msginfo		(MsgInfo	*msginfo);

メッセージ情報 msginfo が示すメッセージからアカウントを検索します。
見つからなかった場合は msginfo を内包するフォルダのプロパティに指定されている
アカウントを検索します。

msginfo: MsgInfo 構造体へのポインタ
戻り値: 発見したアカウント
        見つからなければ NULL

------------------------------------------------------------------------------
gboolean      account_address_exist	(const gchar	*address);

アドレス address がアカウントのリストのうちいずれかに含まれるかどうかを
調べます。見つかった場合は TRUE を返します。
account_find_from_address() よりも高速です。

address: メールアドレス
戻り値: アドレスがアカウントのいずれかに含まれれば TRUE
        含まれなければ FALSE

------------------------------------------------------------------------------
void	      account_foreach		(AccountFunc	 func,
					 gpointer	 user_data);

すべてのアカウントに対して関数 func を呼び出します。

func: AccountFunc 型の関数へのポインタ
user_data: func の引数に渡すユーザデータ

------------------------------------------------------------------------------
GList	     *account_get_list		(void);

内部で保持しているアカウントのリストを取得します。
リストは解放する必要はありません。

戻り値: 内部で保持している PrefsAccount 構造体へのポインタのリスト

------------------------------------------------------------------------------
void	      account_list_free		(void);

内部で保持しているアカウントのリストを解放します。
確保されている PrefsAccount 構造体自体は解放されないので注意してください。

------------------------------------------------------------------------------
void	      account_append		(PrefsAccount	*ac_prefs);

内部で保持しているアカウントのリストにアカウント ac_prefs を追加します。

ac_prefs: リストに追加するアカウント

------------------------------------------------------------------------------
void	      account_set_as_default	(PrefsAccount	*ac_prefs);

アカウント ac_prefs にデフォルトフラグを設定します。
他のアカウントのデフォルトフラグはクリアされます。

ac_prefs: デフォルトフラグを設定するアカウント

------------------------------------------------------------------------------
PrefsAccount *account_get_default	(void);

デフォルトに設定されているアカウントを取得します。

戻り値: デフォルトフラグが設定されているアカウント

------------------------------------------------------------------------------
FolderItem   *account_get_special_folder(PrefsAccount		*ac_prefs,
					 SpecialFolderItemType	 type);

アカウント ac_prefs に結び付いている特別フォルダを取得します。
結び付いているものがなければデフォルトのフォルダを返します。

ac_prefs: 対象のアカウント
type: 特別フォルダのタイプ
戻り値: アカウントに結び付いている特別フォルダ
        見つからなければ NULL

------------------------------------------------------------------------------
void	      account_destroy		(PrefsAccount	*ac_prefs);

アカウント ac_prefs を削除します。内部のアカウントリストからも削除されます。
ac_prefs にデフォルトフラグが立っていた場合は、リストの先頭のアカウントに
自動的にデフォルトフラグを立てます。

ac_prefs: 削除するアカウント

------------------------------------------------------------------------------
void	      account_updated		(void);

アカウント情報に何らかの変更があった場合に呼びます。
これを呼び出すと、高速検索用に内部で保持しているアドレスのハッシュテーブルが
クリアされます。
