aboutsummaryrefslogtreecommitdiffstats
path: root/shell/e-local-storage.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/e-local-storage.c')
-rw-r--r--shell/e-local-storage.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/shell/e-local-storage.c b/shell/e-local-storage.c
index 393c1aa4da..8c263d1e76 100644
--- a/shell/e-local-storage.c
+++ b/shell/e-local-storage.c
@@ -184,17 +184,29 @@ setup_stock_folders (ELocalStorage *local_storage)
}
static gboolean
-load_folder (const char *physical_path, const char *path, gpointer data)
+load_folder (const char *physical_path,
+ const char *path,
+ void *data)
{
- ELocalStorage *local_storage = data;
+ ELocalStorage *local_storage;
EFolder *folder;
+ local_storage = E_LOCAL_STORAGE (data);
+
folder = e_local_folder_new_from_path (physical_path);
if (folder == NULL) {
g_warning ("No folder metadata in %s... ignoring", physical_path);
return TRUE;
}
+ /* Ignore the folder if it uses an unknown type. */
+ if (! e_folder_type_register_type_registered (local_storage->priv->folder_type_registry,
+ e_folder_get_type_string (folder))) {
+ g_warning ("Folder in %s has unknown type (%s)... ignoring",
+ physical_path, e_folder_get_type_string (folder));
+ return FALSE;
+ }
+
new_folder (local_storage, path, folder);
return TRUE;
}
@@ -1095,7 +1107,7 @@ construct (ELocalStorage *local_storage,
priv = local_storage->priv;
base_path_len = strlen (base_path);
- while (base_path_len > 0 && base_path[base_path_len - 1] == G_DIR_SEPARATOR)
+ while (base_path_len > 0 && base_path[base_path_len - 1] == E_PATH_SEPARATOR)
base_path_len--;
g_return_val_if_fail (base_path_len != 0, FALSE);