diff options
Diffstat (limited to 'camel/providers')
-rw-r--r-- | camel/providers/local/camel-local-provider.c | 67 |
1 files changed, 52 insertions, 15 deletions
diff --git a/camel/providers/local/camel-local-provider.c b/camel/providers/local/camel-local-provider.c index ba765ff20c..bae68e6aa7 100644 --- a/camel/providers/local/camel-local-provider.c +++ b/camel/providers/local/camel-local-provider.c @@ -38,6 +38,11 @@ #define d(x) +static CamelProviderConfEntry mh_conf_entries[] = { + CAMEL_PROVIDER_CONF_DEFAULT_PATH, + { CAMEL_PROVIDER_CONF_END } +}; + static CamelProvider mh_provider = { "mh", N_("MH-format mail directories"), @@ -45,9 +50,15 @@ static CamelProvider mh_provider = { "mail", CAMEL_PROVIDER_IS_LOCAL, CAMEL_URL_NEED_PATH | CAMEL_URL_PATH_IS_ABSOLUTE, + mh_conf_entries, /* ... */ }; +static CamelProviderConfEntry mbox_conf_entries[] = { + CAMEL_PROVIDER_CONF_DEFAULT_PATH, + { CAMEL_PROVIDER_CONF_END } +}; + static CamelProvider mbox_provider = { "mbox", N_("Local delivery"), @@ -55,10 +66,12 @@ static CamelProvider mbox_provider = { "mail", CAMEL_PROVIDER_IS_SOURCE | CAMEL_PROVIDER_IS_LOCAL, CAMEL_URL_NEED_PATH | CAMEL_URL_PATH_IS_ABSOLUTE, + mbox_conf_entries, /* ... */ }; -static CamelProviderConfEntry local_conf_entries[] = { +static CamelProviderConfEntry maildir_conf_entries[] = { + CAMEL_PROVIDER_CONF_DEFAULT_PATH, { CAMEL_PROVIDER_CONF_CHECKBOX, "filter", NULL, N_("Apply filters to new messages in INBOX"), "0" }, { CAMEL_PROVIDER_CONF_END } @@ -71,10 +84,17 @@ static CamelProvider maildir_provider = { "mail", CAMEL_PROVIDER_IS_SOURCE | CAMEL_PROVIDER_IS_STORAGE | CAMEL_PROVIDER_IS_LOCAL, CAMEL_URL_NEED_PATH | CAMEL_URL_PATH_IS_ABSOLUTE, - local_conf_entries, + maildir_conf_entries, /* ... */ }; +static CamelProviderConfEntry spool_conf_entries[] = { + CAMEL_PROVIDER_CONF_DEFAULT_PATH, + { CAMEL_PROVIDER_CONF_CHECKBOX, "filter", NULL, + N_("Apply filters to new messages in INBOX"), "0" }, + { CAMEL_PROVIDER_CONF_END } +}; + static CamelProvider spool_provider = { "spool", N_("Standard Unix mbox spools"), @@ -82,10 +102,15 @@ static CamelProvider spool_provider = { "mail", CAMEL_PROVIDER_IS_SOURCE | CAMEL_PROVIDER_IS_STORAGE, CAMEL_URL_NEED_PATH | CAMEL_URL_PATH_IS_ABSOLUTE, - local_conf_entries, + spool_conf_entries, /* ... */ }; +static CamelProviderConfEntry spoold_conf_entries[] = { + CAMEL_PROVIDER_CONF_DEFAULT_PATH, + { CAMEL_PROVIDER_CONF_END } +}; + static CamelProvider spoold_provider = { "spoold", N_("Directory tree of mbox files"), @@ -93,6 +118,7 @@ static CamelProvider spoold_provider = { "mail", CAMEL_PROVIDER_IS_SOURCE | CAMEL_PROVIDER_IS_STORAGE | CAMEL_PROVIDER_IS_LOCAL, CAMEL_URL_NEED_PATH | CAMEL_URL_PATH_IS_ABSOLUTE, + spoold_conf_entries, /* ... */ }; @@ -180,27 +206,38 @@ local_url_equal(const void *v, const void *v2) void camel_provider_module_init(CamelSession * session) { - mh_provider.object_types[CAMEL_PROVIDER_STORE] = camel_mh_store_get_type(); + char *path; + + mh_conf_entries[0].value = ""; /* default path */ + mh_provider.object_types[CAMEL_PROVIDER_STORE] = camel_mh_store_get_type (); mh_provider.url_hash = local_url_hash; mh_provider.url_equal = local_url_equal; camel_session_register_provider(session, &mh_provider); - - mbox_provider.object_types[CAMEL_PROVIDER_STORE] = camel_mbox_store_get_type(); + + if (!(path = getenv ("MAIL"))) + path = g_strdup_printf (SYSTEM_MAIL_DIR "/%s", g_get_user_name ()); + mbox_conf_entries[0].value = path; /* default path */ + mbox_provider.object_types[CAMEL_PROVIDER_STORE] = camel_mbox_store_get_type (); mbox_provider.url_hash = local_url_hash; mbox_provider.url_equal = local_url_equal; camel_session_register_provider(session, &mbox_provider); - - maildir_provider.object_types[CAMEL_PROVIDER_STORE] = camel_maildir_store_get_type(); - maildir_provider.url_hash = local_url_hash; - maildir_provider.url_equal = local_url_equal; - camel_session_register_provider(session, &maildir_provider); - - spool_provider.object_types[CAMEL_PROVIDER_STORE] = camel_spool_store_get_type(); + + spool_conf_entries[0].value = path; /* default path - same as mbox */ + spool_provider.object_types[CAMEL_PROVIDER_STORE] = camel_spool_store_get_type (); spool_provider.url_hash = local_url_hash; spool_provider.url_equal = local_url_equal; camel_session_register_provider(session, &spool_provider); - - spoold_provider.object_types[CAMEL_PROVIDER_STORE] = camel_spoold_store_get_type(); + + path = getenv ("MAILDIR"); + maildir_conf_entries[0].value = path ? path : ""; /* default path */ + maildir_provider.object_types[CAMEL_PROVIDER_STORE] = camel_maildir_store_get_type (); + maildir_provider.url_hash = local_url_hash; + maildir_provider.url_equal = local_url_equal; + camel_session_register_provider(session, &maildir_provider); + + path = g_strdup_printf ("%s/mail", g_get_home_dir ()); + spoold_conf_entries[0].value = path; /* default path */ + spoold_provider.object_types[CAMEL_PROVIDER_STORE] = camel_spoold_store_get_type (); spoold_provider.url_hash = local_url_hash; spoold_provider.url_equal = local_url_equal; camel_session_register_provider(session, &spoold_provider); |