aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/local/camel-mh-store.c
diff options
context:
space:
mode:
authorNot Zed <NotZed@HelixCode.com>2000-11-28 21:13:23 +0800
committerMichael Zucci <zucchi@src.gnome.org>2000-11-28 21:13:23 +0800
commit3998a03ae925f47cd1ffcf31fca0a4701f8c75da (patch)
tree2e4abfb292e1e76da06af4ce5676fd7ae79d2c75 /camel/providers/local/camel-mh-store.c
parentf306b8b912a19e1a0321af66a29faf23664f2077 (diff)
downloadgsoc2013-evolution-3998a03ae925f47cd1ffcf31fca0a4701f8c75da.tar
gsoc2013-evolution-3998a03ae925f47cd1ffcf31fca0a4701f8c75da.tar.gz
gsoc2013-evolution-3998a03ae925f47cd1ffcf31fca0a4701f8c75da.tar.bz2
gsoc2013-evolution-3998a03ae925f47cd1ffcf31fca0a4701f8c75da.tar.lz
gsoc2013-evolution-3998a03ae925f47cd1ffcf31fca0a4701f8c75da.tar.xz
gsoc2013-evolution-3998a03ae925f47cd1ffcf31fca0a4701f8c75da.tar.zst
gsoc2013-evolution-3998a03ae925f47cd1ffcf31fca0a4701f8c75da.zip
Set the info size's properly, oops!
2000-11-28 Not Zed <NotZed@HelixCode.com> * providers/local/camel-maildir-summary.c (camel_maildir_summary_init): Set the info size's properly, oops! * tests/lib/folders.[ch]: Folder testing helpers. * tests/folder/test2.c: Test basic message ops on folders. * tests/folder/test1.c (main): Test basic folder ops on (local) stores. * providers/local/camel-local-provider.c (camel_provider_module_init): Removed some debug. * providers/local/camel-maildir-folder.c (camel_maildir_folder_class_init): fix parent class. * providers/local/camel-mh-folder.c (camel_mh_folder_class_init): Fix parent class (damn cut & paste). * providers/local/camel-maildir-store.c (get_folder): Call parent impl. (camel_maildir_store_class_init): Fix parent class setup. (delete_folder): Check the folder exists before trying to delete it. (delete_folder): Try and make the delete operation atomic/rollback failures. e.g. if one directory isn't empty, then create the other empty ones back. Also clear the tmp directory fully first. * providers/local/camel-mbox-store.c (get_folder): Call parent impl. (camel_mbox_store_class_init): parent class is camel_local_store, not camel_folder, oops. (delete_folder): Return an error if it doesn't exist, rather than covering it up. * providers/local/camel-mh-store.c (get_folder): Call parent impl. (camel_mh_store_class_init): fix parent class setup. (delete_folder): Error if it doesn't exist now. * camel-folder.c (camel_folder_move_message_to): (camel_folder_copy_message_to): Added warnings as these functions are going to be removed later. * camel-store.c (camel_store_get_root_folder): Fix for an early api change. We want CAMEL_STORE_FOLDER_CREATE, not TRUE, since its a flag. (camel_store_get_default_folder): And here too. * providers/local/camel-local-store.c (xrename): Handle renaming folders differently to renaming files. (get_default_folder_name): local stores dont have a default folder, so make it so. Or at least, it doesn't seem to make sense to have one. (get_root_folder_name): Same for root. (get_folder): Added parent implementation, that makes sure the service path exists, if we are creating a new folder (but doesn't create the folder). 2000-11-27 Not Zed <NotZed@HelixCode.com> * providers/local/camel-local-store.c (xrename): Fixed races. Use link/unlink, rather than rename, to properly detect overwriting another file. And allow some files to be missing. * providers/Makefile.am: Removed mh, mbox, added local, to the default. svn path=/trunk/; revision=6693
Diffstat (limited to 'camel/providers/local/camel-mh-store.c')
-rw-r--r--camel/providers/local/camel-mh-store.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/camel/providers/local/camel-mh-store.c b/camel/providers/local/camel-mh-store.c
index 82310578d1..3d637e4cad 100644
--- a/camel/providers/local/camel-mh-store.c
+++ b/camel/providers/local/camel-mh-store.c
@@ -47,7 +47,7 @@ static void camel_mh_store_class_init(CamelObjectClass * camel_mh_store_class)
CamelStoreClass *camel_store_class = CAMEL_STORE_CLASS(camel_mh_store_class);
/*CamelServiceClass *camel_service_class = CAMEL_SERVICE_CLASS(camel_mh_store_class);*/
- parent_class = (CamelLocalStoreClass *)camel_type_get_global_classfuncs(camel_folder_get_type());
+ parent_class = (CamelLocalStoreClass *)camel_type_get_global_classfuncs(camel_local_store_get_type());
/* virtual method overload, use defaults for most */
camel_store_class->get_folder = get_folder;
@@ -84,6 +84,10 @@ static CamelFolder *get_folder(CamelStore * store, const char *folder_name, guin
char *name;
struct stat st;
+ (void) ((CamelStoreClass *)parent_class)->get_folder(store, folder_name, flags, ex);
+ if (camel_exception_is_set(ex))
+ return NULL;
+
name = g_strdup_printf("%s%s", CAMEL_SERVICE(store)->url->path, folder_name);
if (stat(name, &st) == -1) {
@@ -100,8 +104,6 @@ static CamelFolder *get_folder(CamelStore * store, const char *folder_name, guin
g_free (name);
return NULL;
}
- printf("creating ...\n");
-
if (mkdir(name, 0700) != 0) {
camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
_("Could not create folder `%s':\n%s"),
@@ -109,8 +111,6 @@ static CamelFolder *get_folder(CamelStore * store, const char *folder_name, guin
g_free (name);
return NULL;
}
- printf("created ok?\n");
-
} else if (!S_ISDIR(st.st_mode)) {
camel_exception_setv(ex, CAMEL_EXCEPTION_STORE_NO_FOLDER,
_("`%s' is not a directory."), name);
@@ -128,7 +128,7 @@ static void delete_folder(CamelStore * store, const char *folder_name, CamelExce
/* remove folder directory - will fail if not empty */
name = g_strdup_printf("%s%s", CAMEL_SERVICE(store)->url->path, folder_name);
- if (rmdir(name) == -1 && errno != ENOENT) {
+ if (rmdir(name) == -1) {
camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
_("Could not delete folder `%s': %s"),
folder_name, strerror(errno));