Added rules to build camel-imap-stream
authorJeffrey Stedfast <fejj@helixcode.com>
Wed, 7 Jun 2000 21:57:27 +0000 (21:57 +0000)
committerJeffrey Stedfast <fejj@src.gnome.org>
Wed, 7 Jun 2000 21:57:27 +0000 (21:57 +0000)
2000-06-07  Jeffrey Stedfast  <fejj@helixcode.com>

* providers/imap/Makefile.am: Added rules to build
camel-imap-stream

* providers/imap/camel-imap-store.c (get_folder): Update.
Moved imap_create here.

* providers/imap/camel-imap-folder.c (delete_messages): Remove.
(imap_create): Removed.
(imap_delete): Removed.
(imap_exists): Removed.

* providers/imap/camel-imap-stream.h: Added typedef's for the stream

* providers/imap/camel-imap-stream.c: Modified to build cleanly

camel/ChangeLog
camel/providers/imap/Makefile.am
camel/providers/imap/camel-imap-folder.c
camel/providers/imap/camel-imap-store.c
camel/providers/imap/camel-imap-stream.c
camel/providers/imap/camel-imap-stream.h

index 814b09b..a7dc884 100644 (file)
@@ -1,3 +1,20 @@
+2000-06-07  Jeffrey Stedfast  <fejj@helixcode.com>
+
+       * providers/imap/Makefile.am: Added rules to build 
+       camel-imap-stream
+       
+       * providers/imap/camel-imap-store.c (get_folder): Update.
+       Moved imap_create here.
+
+       * providers/imap/camel-imap-folder.c (delete_messages): Remove.
+       (imap_create): Removed.
+       (imap_delete): Removed.
+       (imap_exists): Removed.
+
+       * providers/imap/camel-imap-stream.h: Added typedef's for the stream
+
+       * providers/imap/camel-imap-stream.c: Modified to build cleanly
+
 2000-06-07  Not Zed  <NotZed@HelixCode.com>
 
        * camel-mime-utils.c (header_msgid_decode_internal): Properly
index 2243841..8ff4b31 100644 (file)
@@ -2,7 +2,7 @@
 
 SUBDIRS = 
 
-libcamelmboxincludedir = $(includedir)/camel
+libcamelimapincludedir = $(includedir)/camel
 
 
 providerdir = $(pkglibdir)/camel-providers/$(VERSION)
@@ -25,11 +25,13 @@ libcamelimap_la_SOURCES =                   \
        camel-imap-folder.c                     \
        camel-imap-provider.c                   \
        camel-imap-store.c                      \
+       camel-imap-stream.c                     \
        camel-imap-summary.c
 
 libcamelimapinclude_HEADERS =                  \
        camel-imap-folder.h                     \
        camel-imap-store.h                      \
+       camel-imap-stream.h                     \
        camel-imap-summary.h
 
 libcamelimap_la_LDFLAGS = -version-info 0:0:0 -rpath $(libdir) 
index 443e1b8..a45d9bd 100644 (file)
@@ -57,10 +57,11 @@ static void imap_init (CamelFolder *folder, CamelStore *parent_store,
 
 static void imap_open (CamelFolder *folder, CamelFolderOpenMode mode, CamelException *ex);
 static void imap_close (CamelFolder *folder, gboolean expunge, CamelException *ex);
+#if 0
 static gboolean imap_exists (CamelFolder *folder, CamelException *ex);
-static gboolean imap_create(CamelFolder *folder, CamelException *ex);
 static gboolean imap_delete (CamelFolder *folder, gboolean recurse, CamelException *ex);
 static gboolean imap_delete_messages (CamelFolder *folder, CamelException *ex);
+#endif
 static gint imap_get_message_count (CamelFolder *folder, CamelException *ex);
 static void imap_append_message (CamelFolder *folder, CamelMimeMessage *message, CamelException *ex);
 static GPtrArray *imap_get_uids (CamelFolder *folder, CamelException *ex);
@@ -102,12 +103,12 @@ camel_imap_folder_class_init (CamelImapFolderClass *camel_imap_folder_class)
 
        camel_folder_class->open = imap_open;
        camel_folder_class->close = imap_close;
-
+#if 0
        camel_folder_class->exists = imap_exists;
        camel_folder_class->create = imap_create;
        camel_folder_class->delete = imap_delete;
-
        camel_folder_class->delete_messages = imap_delete_messages;
+#endif
        camel_folder_class->get_message_count = imap_get_message_count;
        camel_folder_class->append_message = imap_append_message;
        camel_folder_class->get_uids = imap_get_uids;
@@ -302,6 +303,7 @@ imap_expunge (CamelFolder *folder, CamelException *ex)
        g_free(result);
 }
 
+#if 0
 static gboolean
 imap_exists (CamelFolder *folder, CamelException *ex)
 {
@@ -345,62 +347,8 @@ imap_exists (CamelFolder *folder, CamelException *ex)
 
        return exists;
 }
-
-static gboolean
-imap_create (CamelFolder *folder, CamelException *ex)
-{
-       CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
-       const gchar *folder_file_path, *folder_dir_path;
-       gboolean folder_already_exists;
-       gchar *result;
-       gint status;
-
-       g_return_val_if_fail (folder != NULL, FALSE);
-
-       /* call default implementation */
-       parent_class->create (folder, ex);
-       if (camel_exception_get_id (ex))
-               return FALSE;
-       
-       /* get the paths of what we need to create */
-       folder_file_path = imap_folder->folder_file_path;
-       folder_dir_path = imap_folder->folder_dir_path;
-       
-       if (!(folder_file_path || folder_dir_path)) {
-               camel_exception_set (ex, CAMEL_EXCEPTION_FOLDER_INVALID,
-                                    "invalid folder path. Use set_name ?");
-               return FALSE;
-       }
-       
-       /* if the folder already exists, simply return */
-       folder_already_exists = camel_folder_exists (folder, ex);
-       if (camel_exception_get_id (ex))
-               return FALSE;
-
-       if (folder_already_exists)
-               return TRUE;
-
-       /* create the directory for the subfolder */
-       status = camel_imap_command_extended (CAMEL_IMAP_STORE (folder->parent_store), &result,
-                                             "CREATE %s", imap_folder->folder_file_path);
-       
-       if (status != CAMEL_IMAP_OK) {
-               CamelService *service = CAMEL_SERVICE (folder->parent_store);
-               camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
-                                     "Could not CREATE %s on IMAP server %s: %s.",
-                                     imap_folder->folder_file_path,
-                                     service->url->host,
-                                     status == CAMEL_IMAP_ERR ? result :
-                                     "Unknown error");
-               g_free (result);
-               return FALSE;
-       }
-       
-       g_free(result);
-
-       return TRUE;
-}
-
+#endif
+#if 0
 static gboolean
 imap_delete (CamelFolder *folder, gboolean recurse, CamelException *ex)
 {
@@ -447,23 +395,8 @@ imap_delete (CamelFolder *folder, gboolean recurse, CamelException *ex)
 
        return TRUE;
 }
-
-/* TODO: remove this - don't bother coding, it'll be moved/removed */
-gboolean
-imap_delete_messages (CamelFolder *folder, CamelException *ex)
-{
-       /* TODO: delete the messages (mark as deleted/whatever) */
-#if 0
-       CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
-       gchar *result;
-       gint status;
 #endif
 
-       g_return_val_if_fail (folder != NULL, FALSE);
-
-       return TRUE;
-}
-
 static gint
 imap_get_message_count (CamelFolder *folder, CamelException *ex)
 {
@@ -521,7 +454,7 @@ imap_append_message (CamelFolder *folder, CamelMimeMessage *message, CamelExcept
        g_return_if_fail (message != NULL);
 
        /* write the message to a CamelStreamMem so we can get it's size */
-       mem = camel_stream_mem_new();
+       mem = (CamelStreamMem *)camel_stream_mem_new();
        if (camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), CAMEL_STREAM (mem)) == -1) {
                CamelService *service = CAMEL_SERVICE (folder->parent_store);
                camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM,
@@ -736,17 +669,17 @@ imap_get_message_by_uid (CamelFolder *folder, const gchar *uid, CamelException *
                                      status == CAMEL_IMAP_ERR ? result :
                                      "Unknown error");
                g_free (result);
-               return;
+               goto fail;
        }
        
        /* where we read from */
-       message_stream = camel_stream_mem_new_with_buffer (result, strlen(result));
+       message_stream = (CamelStreamMem *)camel_stream_mem_new_with_buffer (result, strlen(result));
        if (message_stream == NULL)
                goto fail;
 
        /* we use a parser to verify the message is correct, and in the correct position */
        parser = camel_mime_parser_new();
-       camel_mime_parser_init_with_stream(parser, message_stream);
+       camel_mime_parser_init_with_stream(parser, CAMEL_STREAM (message_stream));
        gtk_object_unref(GTK_OBJECT (message_stream));
        camel_mime_parser_scan_from(parser, TRUE);
 
index 54ce3c5..5c57a89 100644 (file)
 static CamelServiceClass *service_class = NULL;
 
 static void finalize (GtkObject *object);
-
+static gboolean imap_create (CamelFolder *folder, CamelException *ex);
 static gboolean imap_connect (CamelService *service, CamelException *ex);
 static gboolean imap_disconnect (CamelService *service, CamelException *ex);
 static GList *query_auth_types (CamelService *service, CamelException *ex);
 static void free_auth_types (CamelService *service, GList *authtypes);
 
-static CamelFolder *get_folder (CamelStore *store, const char *folder_name,
+static CamelFolder *get_folder (CamelStore *store, const char *folder_name, gboolean create,
                                CamelException *ex);
-static char *get_folder_name (CamelStore *store, const char *folder_name,
-                             CamelException *ex);
+static char *get_folder_name (CamelStore *store, const char *folder_name, CamelException *ex);
 
 static void
 camel_imap_store_class_init (CamelImapStoreClass *camel_imap_store_class)
@@ -320,28 +319,75 @@ camel_imap_store_get_toplevel_dir (CamelImapStore *store)
        return url->path;
 }
 
+static gboolean
+imap_create (CamelFolder *folder, CamelException *ex)
+{
+       CamelImapFolder *imap_folder = CAMEL_IMAP_FOLDER (folder);
+       const gchar *folder_file_path, *folder_dir_path;
+       gboolean folder_already_exists;
+       gchar *result;
+       gint status;
+
+       g_return_val_if_fail (folder != NULL, FALSE);
+
+       /* get the paths of what we need to create */
+       folder_file_path = imap_folder->folder_file_path;
+       folder_dir_path = imap_folder->folder_dir_path;
+       
+       if (!(folder_file_path || folder_dir_path)) {
+               camel_exception_set (ex, CAMEL_EXCEPTION_FOLDER_INVALID,
+                                    "invalid folder path. Use set_name ?");
+               return FALSE;
+       }
+       
+       /* if the folder already exists, simply return */
+       folder_already_exists = camel_folder_exists (folder, ex);
+       if (camel_exception_get_id (ex))
+               return FALSE;
+
+       if (folder_already_exists)
+               return TRUE;
 
-static CamelFolder
-*get_folder (CamelStore *store, const char *folder_name, CamelException *ex)
+       /* create the directory for the subfolder */
+       status = camel_imap_command_extended (CAMEL_IMAP_STORE (folder->parent_store), &result,
+                                             "CREATE %s", imap_folder->folder_file_path);
+       
+       if (status != CAMEL_IMAP_OK) {
+               CamelService *service = CAMEL_SERVICE (folder->parent_store);
+               camel_exception_setv (ex, CAMEL_EXCEPTION_SERVICE_UNAVAILABLE,
+                                     "Could not CREATE %s on IMAP server %s: %s.",
+                                     imap_folder->folder_file_path,
+                                     service->url->host,
+                                     status == CAMEL_IMAP_ERR ? result :
+                                     "Unknown error");
+               g_free (result);
+               return FALSE;
+       }
+       
+       g_free(result);
+
+       return TRUE;
+}
+
+static CamelFolder *
+get_folder (CamelStore *store, const char *folder_name, gboolean create, CamelException *ex)
 {
        CamelImapFolder *new_imap_folder;
        CamelFolder *new_folder;
 
-       new_imap_folder =  gtk_type_new (CAMEL_IMAP_FOLDER_TYPE);
+       new_imap_folder = gtk_type_new (CAMEL_IMAP_FOLDER_TYPE);
        new_folder = CAMEL_FOLDER (new_imap_folder);
-       
-       /* XXX We shouldn't be passing NULL here, but it's equivalent to
-        * what was there before, and there's no
-        * CamelImapFolder::get_subfolder yet anyway...
-        */
        CAMEL_FOLDER_CLASS (new_folder)->init (new_folder, store, NULL,
                                     folder_name, '/', ex);
-       
-       return new_folder;
+
+       if (imap_create (new_folder, ex))
+               return new_folder;
+
+       return NULL;
 }
 
-static gchar
-*get_folder_name (CamelStore *store, const char *folder_name,
+static gchar *
+get_folder_name (CamelStore *store, const char *folder_name,
                 CamelException *ex)
 {
        return g_strdup (folder_name);
index 24198bf..f2400f4 100644 (file)
@@ -49,7 +49,6 @@ camel_imap_stream_class_init (CamelImapStreamClass *camel_imap_stream_class)
 
        /* virtual method overload */
        camel_stream_class->read  = stream_read;
-       /*camel_stream_class->write = stream_write;*/
        camel_stream_class->reset = stream_reset;
        camel_stream_class->eos   = stream_eos;
 
@@ -113,7 +112,7 @@ finalize (GtkObject *object)
        g_free(imap_stream->command);
 
        if (imap_stream->folder)
-               gtk_object_unref(imap_stream->folder);
+               gtk_object_unref(GTK_OBJECT (imap_stream->folder));
 
        GTK_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -128,10 +127,11 @@ stream_read (CamelStream *stream, char *buffer, size_t n)
 
        if (!imap_stream->cache) {
                /* We need to send the IMAP command since this is our first fetch */
-               CamelImapStore *store = CAMEL_IMAP_STORE (imap_stream->folder->parent_store);
+               CamelFolder *folder = CAMEL_FOLDER (imap_stream->folder);
                gint status;
                
-               status = camel_imap_command_extended(store->ostream, imap_stream->cache, "%s",
+               status = camel_imap_command_extended(CAMEL_IMAP_STORE (folder->parent_store),
+                                                    &imap_stream->cache, "%s",
                                                     imap_stream->command);
 
                if (status != CAMEL_IMAP_OK) {
@@ -162,23 +162,6 @@ stream_read (CamelStream *stream, char *buffer, size_t n)
 }
 
 static int
-stream_write (CamelStream *stream, const char *buffer, unsigned int n)
-{
-       /* I don't think we need/want this functionality */
-       CamelImapStream *imap_stream = CAMEL_IMAP_STREAM (stream);
-
-       if (!imap_stream->cache) {
-               imap_stream->cache = g_malloc0(n + 1);
-               memcpy(imap_stream->cache, buffer, n);
-       } else {
-               imap_stream->cache = g_realloc(strlen(imap_stream->cache) + n + 1);
-               memcpy(imap_stream->cache[strlen(imap_stream->cache)], buffer, n);
-       }
-
-       return n;
-}
-
-static int
 stream_reset (CamelStream *stream)
 {
        CamelImapStream *imap_stream = CAMEL_IMAP_STREAM (stream);
index 01e7e59..6cb96e8 100644 (file)
@@ -41,8 +41,10 @@ extern "C" {
 #define CAMEL_IMAP_STREAM_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), CAMEL_IMAP_STREAM_TYPE, CamelImapStreamClass))
 #define CAMEL_IS_IMAP_STREAM(o)    (GTK_CHECK_TYPE((o), CAMEL_IMAP_STREAM_TYPE))
 
-struct _CamelImapStream
-{
+typedef struct _CamelImapStream CamelImapStream;
+typedef struct _CamelImapStreamClass CamelImapStreamClass;
+
+struct _CamelImapStream {
        CamelStream parent_object;
 
        CamelImapFolder *folder;
@@ -51,11 +53,11 @@ struct _CamelImapStream
        char *cache_ptr;
 };
 
-typedef struct {
+struct _CamelImapStreamClass {
        CamelStreamClass parent_class;
 
        /* Virtual methods */
-} CamelImapStreamClass;
+};
 
 /* Standard Gtk function */
 GtkType camel_imap_stream_get_type (void);