aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/MH
diff options
context:
space:
mode:
authorbertrand <Bertrand.Guiheneuf@aful.org>1999-08-06 22:17:27 +0800
committerBertrand Guiheneuf <bertrand@src.gnome.org>1999-08-06 22:17:27 +0800
commitcf2f1c428f9a75323318f04c66c7e1999ad65f62 (patch)
tree163a19250bed8ec545c732f7966650a9fb74358d /camel/providers/MH
parent9dba21ca8de2f437014086eb80a4197c53246ed1 (diff)
downloadgsoc2013-evolution-cf2f1c428f9a75323318f04c66c7e1999ad65f62.tar
gsoc2013-evolution-cf2f1c428f9a75323318f04c66c7e1999ad65f62.tar.gz
gsoc2013-evolution-cf2f1c428f9a75323318f04c66c7e1999ad65f62.tar.bz2
gsoc2013-evolution-cf2f1c428f9a75323318f04c66c7e1999ad65f62.tar.lz
gsoc2013-evolution-cf2f1c428f9a75323318f04c66c7e1999ad65f62.tar.xz
gsoc2013-evolution-cf2f1c428f9a75323318f04c66c7e1999ad65f62.tar.zst
gsoc2013-evolution-cf2f1c428f9a75323318f04c66c7e1999ad65f62.zip
add debug information (_list_subfolders): test if first char in folder
1999-08-06 bertrand <Bertrand.Guiheneuf@aful.org> * camel/providers/MH/camel-mh-folder.c (_exists): add debug information (_list_subfolders): test if first char in folder name is not '.' before adding it to the folder list. * camel/camel-store.c (_init): disable session check temporarily (_get_separator): (_get_folder): new static func. Fixed several oddities in class definition. * camel/providers/MH/camel-mh-store.c (camel_mh_store_get_type): parent type is CAMEL_STORE_TYPE not CAMEL_FOLDER_TYPE * camel/camel-store.c: prent class is CamelServiceClass not GtkObjectClass * camel/url-util.c : cosmetic changes + use of const when possible. (find_host): fix a bug: when there is no host and no port don't skip the '/' all static find_* func are now named _func_* (g_url_free): destructor func. cache field has been disabled. Constructing the url string won't be too slow and will occur rarely enough that we do not need to add complexity to this code. * camel/providers/MH/camel-mh-store.c: parent class is CamelStorClass not GtkObjectClass svn path=/trunk/; revision=1087
Diffstat (limited to 'camel/providers/MH')
-rw-r--r--camel/providers/MH/camel-mh-folder.c38
-rw-r--r--camel/providers/MH/camel-mh-store.c72
2 files changed, 95 insertions, 15 deletions
diff --git a/camel/providers/MH/camel-mh-folder.c b/camel/providers/MH/camel-mh-folder.c
index 50c0ad34d4..e4bd6335c1 100644
--- a/camel/providers/MH/camel-mh-folder.c
+++ b/camel/providers/MH/camel-mh-folder.c
@@ -20,7 +20,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
-
+#include <config.h>
#include <sys/stat.h>
#include <unistd.h>
#include <sys/types.h>
@@ -54,7 +54,7 @@ static CamelMimeMessage *_get_message (CamelFolder *folder, gint number);
static void
camel_mh_folder_class_init (CamelMhFolderClass *camel_mh_folder_class)
{
- CamelFolderClass *camel_folder_class = CAMEL_FOLDER_CLASS(camel_mh_folder_class);
+ CamelFolderClass *camel_folder_class = CAMEL_FOLDER_CLASS (camel_mh_folder_class);
parent_class = gtk_type_class (camel_folder_get_type ());
@@ -126,12 +126,13 @@ _init_with_store (CamelFolder *folder, CamelStore *parent_store)
static void
_set_name (CamelFolder *folder, const gchar *name)
{
- CamelMhFolder *mh_folder = CAMEL_MH_FOLDER(folder);
+ CamelMhFolder *mh_folder = CAMEL_MH_FOLDER (folder);
const gchar *root_dir_path;
gchar *full_name;
const gchar *parent_full_name;
gchar separator;
-
+
+ CAMEL_LOG_FULL_DEBUG ("Entering CamelMhFolder::set_name\n");
g_assert(folder);
g_assert(name);
g_assert(folder->parent_store);
@@ -143,9 +144,15 @@ _set_name (CamelFolder *folder, const gchar *name)
separator = camel_store_get_separator (folder->parent_store);
root_dir_path = camel_mh_store_get_toplevel_dir (CAMEL_MH_STORE(folder->parent_store));
-
+
+ CAMEL_LOG_FULL_DEBUG ("CamelMhFolder::set_name full_name is %s\n", folder->full_name);
+ CAMEL_LOG_FULL_DEBUG ("CamelMhFolder::set_name root_dir_path is %s\n", root_dir_path);
+ CAMEL_LOG_FULL_DEBUG ("CamelMhFolder::separator is %c\n", separator);
+
mh_folder->directory_path = g_strdup_printf ("%s%c%s", root_dir_path, separator, folder->full_name);
+ CAMEL_LOG_FULL_DEBUG ("CamelMhFolder::set_name mh_folder->directory_path is %s\n", mh_folder->directory_path);
+ CAMEL_LOG_FULL_DEBUG ("Leaving CamelMhFolder::set_name\n");
}
@@ -158,14 +165,21 @@ _exists (CamelFolder *folder)
gint stat_error;
gboolean exists;
+ CAMEL_LOG_FULL_DEBUG ("Entering CamelMhFolder::exists\n");
g_assert (folder);
-
+
if (!mh_folder->directory_path) return FALSE;
-
+
stat_error = stat (mh_folder->directory_path, &stat_buf);
- if (stat_error == -1) return FALSE;
+ if (stat_error == -1) {
+ CAMEL_LOG_FULL_DEBUG ("CamelMhFolder::exists when executing stat on %s, stat_error = %d\n",
+ mh_folder->directory_path, stat_error);
+ CAMEL_LOG_FULL_DEBUG (" Full error text is : %s\n", strerror(errno));
+ return FALSE;
+ }
+ exists = S_ISDIR (stat_buf.st_mode);
- exists = S_ISDIR(stat_buf.st_mode);
+ CAMEL_LOG_FULL_DEBUG ("Leaving CamelMhFolder::exists\n");
return exists;
}
@@ -321,8 +335,10 @@ _list_subfolders(CamelFolder *folder)
/* is it a directory ? */
if ((stat_error != -1) && S_ISDIR (stat_buf.st_mode)) {
/* yes, add it to the list */
- CAMEL_LOG_FULL_DEBUG ("CamelMhFolder::list_subfolders adding %s\n", entry_name);
- subfolder_name_list = g_list_append (subfolder_name_list, g_strdup (entry_name));
+ if (entry_name[0] != '.') {
+ CAMEL_LOG_FULL_DEBUG ("CamelMhFolder::list_subfolders adding %s\n", entry_name);
+ subfolder_name_list = g_list_append (subfolder_name_list, g_strdup (entry_name));
+ }
}
/* read next entry */
dir_entry = readdir (dir_handle);
diff --git a/camel/providers/MH/camel-mh-store.c b/camel/providers/MH/camel-mh-store.c
index efdb2b86e9..0e382fa913 100644
--- a/camel/providers/MH/camel-mh-store.c
+++ b/camel/providers/MH/camel-mh-store.c
@@ -23,25 +23,42 @@
#include "camel-mh-store.h"
#include "camel-mh-folder.h"
+#include "url-util.h"
-static GtkObjectClass *parent_class=NULL;
+static CamelStoreClass *parent_class=NULL;
/* Returns the class for a CamelMhStore */
-#define CS_CLASS(so) CAMEL_MH_STORE_CLASS (GTK_OBJECT(so)->klass)
+#define CMHS_CLASS(so) CAMEL_MH_STORE_CLASS (GTK_OBJECT(so)->klass)
+#define CF_CLASS(so) CAMEL_FOLDER_CLASS (GTK_OBJECT(so)->klass)
+#define CMHF_CLASS(so) CAMEL_MH_FOLDER_CLASS (GTK_OBJECT(so)->klass)
+static void _init (CamelStore *store, CamelSession *session, gchar *url_name);
+static CamelFolder *_get_folder (CamelStore *store, const gchar *folder_name);
static void
camel_mh_store_class_init (CamelMhStoreClass *camel_mh_store_class)
{
+ CamelStoreClass *camel_store_class = CAMEL_STORE_CLASS (camel_mh_store_class);
+
parent_class = gtk_type_class (camel_store_get_type ());
/* virtual method definition */
/* virtual method overload */
+ camel_store_class->init = _init;
+ camel_store_class->get_folder = _get_folder;
}
+static void
+camel_mh_store_init (gpointer object, gpointer klass)
+{
+ CamelMhStore *mh_store = CAMEL_MH_STORE (object);
+ CamelStore *store = CAMEL_STORE (object);
+
+ store->separator = '/';
+}
@@ -58,13 +75,13 @@ camel_mh_store_get_type (void)
sizeof (CamelMhStore),
sizeof (CamelMhStoreClass),
(GtkClassInitFunc) camel_mh_store_class_init,
- (GtkObjectInitFunc) NULL,
+ (GtkObjectInitFunc) camel_mh_store_init,
/* reserved_1 */ NULL,
/* reserved_2 */ NULL,
(GtkClassInitFunc) NULL,
};
- camel_mh_store_type = gtk_type_unique (CAMEL_FOLDER_TYPE, &camel_mh_store_info);
+ camel_mh_store_type = gtk_type_unique (CAMEL_STORE_TYPE, &camel_mh_store_info);
}
return camel_mh_store_type;
@@ -87,3 +104,50 @@ camel_mh_store_get_toplevel_dir (CamelMhStore *store)
{
return store->toplevel_dir;
}
+
+
+
+static void
+_init (CamelStore *store, CamelSession *session, gchar *url_name)
+{
+ CamelMhStore *mh_store = CAMEL_MH_STORE (store);
+ Gurl *store_url;
+
+ g_assert (url_name);
+ /* call parent implementation */
+ parent_class->init (store, session, url_name);
+
+
+ /* find the path in the URL*/
+ store_url = g_url_new (url_name);
+
+ g_return_if_fail (store_url);
+ g_return_if_fail (store_url->path);
+
+ mh_store->toplevel_dir = g_strdup (store_url->path);
+ g_url_free (store_url);
+
+
+
+}
+
+
+static CamelFolder *
+_get_folder (CamelStore *store, const gchar *folder_name)
+{
+ CamelMhFolder *new_mh_folder;
+ CamelFolder *new_folder;
+
+ /* check if folder has already been created */
+ /* call the standard routine for that when */
+ /* it is done ... */
+
+ new_mh_folder = gtk_type_new (CAMEL_MH_FOLDER_TYPE);
+ new_folder = CAMEL_FOLDER (new_mh_folder);
+
+ CF_CLASS (new_folder)->init_with_store (new_folder, store);
+ CF_CLASS (new_folder)->set_name (new_folder, folder_name);
+
+
+ return new_folder;
+}