aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbertrand <Bertrand.Guiheneuf@aful.org>2000-02-17 02:04:40 +0800
committerBertrand Guiheneuf <bertrand@src.gnome.org>2000-02-17 02:04:40 +0800
commit7f04720b1efe9baea8770813e85cb17cd600d077 (patch)
treea4749e3ecc075439dddf3928584a88b8d11d3e76
parentd2239da3e7758ed99263b6623ab258561e10994d (diff)
downloadgsoc2013-evolution-7f04720b1efe9baea8770813e85cb17cd600d077.tar
gsoc2013-evolution-7f04720b1efe9baea8770813e85cb17cd600d077.tar.gz
gsoc2013-evolution-7f04720b1efe9baea8770813e85cb17cd600d077.tar.bz2
gsoc2013-evolution-7f04720b1efe9baea8770813e85cb17cd600d077.tar.lz
gsoc2013-evolution-7f04720b1efe9baea8770813e85cb17cd600d077.tar.xz
gsoc2013-evolution-7f04720b1efe9baea8770813e85cb17cd600d077.tar.zst
gsoc2013-evolution-7f04720b1efe9baea8770813e85cb17cd600d077.zip
don't seek the begining of the substream. (_eos): fix eos condition
2000-02-16 bertrand <Bertrand.Guiheneuf@aful.org> * camel/camel-seekable-substream.c (_set_bounds): don't seek the begining of the substream. (_eos): fix eos condition testing. (_finalize): unref parent stream (_init_with_seekable_stream_and_bounds): ref parent stream * camel/gstring-util.c (g_string_equal_for_hash): (g_string_equal_for_glist): return type is int. * camel/camel.h: * camel/camel.c (camel_init): use (void) instead of (). A lot of other small changes to make the set_input_stream scheme work. It actually works. svn path=/trunk/; revision=1798
-rw-r--r--ChangeLog16
-rw-r--r--camel/camel-folder-pt-proxy.c1
-rw-r--r--camel/camel-folder-pt-proxy.h2
-rw-r--r--camel/camel-mime-body-part.c4
-rw-r--r--camel/camel-mime-body-part.h8
-rw-r--r--camel/camel-mime-part-utils.c1
-rw-r--r--camel/camel-mime-part.c3
-rw-r--r--camel/camel-multipart.c200
-rw-r--r--camel/camel-multipart.h30
-rw-r--r--camel/camel-seekable-substream.c25
-rw-r--r--camel/camel-store.h29
-rw-r--r--camel/camel-stream-fs.c6
-rw-r--r--camel/camel-thread-proxy.c6
-rw-r--r--camel/camel-thread-proxy.h2
-rw-r--r--camel/camel.c2
-rw-r--r--camel/camel.h2
-rw-r--r--camel/gstring-util.c2
-rw-r--r--camel/providers/mbox/Makefile.am1
-rw-r--r--camel/string-utils.c1
19 files changed, 145 insertions, 196 deletions
diff --git a/ChangeLog b/ChangeLog
index 76512c0a49..43061e1915 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2000-02-16 bertrand <Bertrand.Guiheneuf@aful.org>
+
+ * camel/camel-seekable-substream.c (_set_bounds): don't
+ seek the begining of the substream.
+ (_eos): fix eos condition testing.
+ (_finalize): unref parent stream
+ (_init_with_seekable_stream_and_bounds): ref parent stream
+
+ * camel/gstring-util.c (g_string_equal_for_hash):
+ (g_string_equal_for_glist): return type is int.
+
+ * camel/camel.h:
+ * camel/camel.c (camel_init): use (void)
+ instead of ().
+
+
2000-02-15 bertrand <bertrand@helixcode.com>
* camel/camel-multipart.c (_localize_part):
diff --git a/camel/camel-folder-pt-proxy.c b/camel/camel-folder-pt-proxy.c
index 3e620666f5..27e89438c3 100644
--- a/camel/camel-folder-pt-proxy.c
+++ b/camel/camel-folder-pt-proxy.c
@@ -234,7 +234,6 @@ _finalize (GtkObject *object)
{
CamelFolder *camel_folder = CAMEL_FOLDER (object);
CamelFolderPtProxy *camel_folder_pt_proxy = CAMEL_FOLDER_PT_PROXY (camel_folder);
- GList *message_node;
CAMEL_LOG_FULL_DEBUG ("Entering CamelFolderPtProxy::finalize\n");
diff --git a/camel/camel-folder-pt-proxy.h b/camel/camel-folder-pt-proxy.h
index 35c0965f45..189d486a85 100644
--- a/camel/camel-folder-pt-proxy.h
+++ b/camel/camel-folder-pt-proxy.h
@@ -83,6 +83,8 @@ typedef struct {
} CamelFolderPtProxyClass;
+GtkType camel_folder_pt_proxy_get_type (void);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/camel/camel-mime-body-part.c b/camel/camel-mime-body-part.c
index 3f3c2cb4a2..ffc8314d1f 100644
--- a/camel/camel-mime-body-part.c
+++ b/camel/camel-mime-body-part.c
@@ -43,7 +43,6 @@ static CamelMimePartClass *parent_class=NULL;
static void
camel_mime_body_part_class_init (CamelMimeBodyPartClass *camel_mime_body_part_class)
{
- CamelMimePartClass *camel_mime_part_class = CAMEL_MIME_PART_CLASS (camel_mime_body_part_class);
parent_class = gtk_type_class (camel_mime_part_get_type ());
/* virtual method definition */
@@ -54,7 +53,6 @@ camel_mime_body_part_class_init (CamelMimeBodyPartClass *camel_mime_body_part_cl
static void
camel_mime_body_part_init (gpointer object, gpointer klass)
{
- CamelMimeBodyPart *camel_mime_body_part = CAMEL_MIME_BODY_PART (object);
camel_data_wrapper_set_mime_type (CAMEL_DATA_WRAPPER (object), "mime/body-part");
}
@@ -86,7 +84,7 @@ camel_mime_body_part_get_type (void)
}
CamelMimeBodyPart *
-camel_mime_body_part_new ()
+camel_mime_body_part_new (void)
{
CamelMimeBodyPart *mime_body_part;
CAMEL_LOG_FULL_DEBUG ("CamelMimeBodyPart:: Entering new()\n");
diff --git a/camel/camel-mime-body-part.h b/camel/camel-mime-body-part.h
index d2ae4908fb..740ab64520 100644
--- a/camel/camel-mime-body-part.h
+++ b/camel/camel-mime-body-part.h
@@ -61,7 +61,8 @@ typedef struct {
CamelMimePartClass parent_class;
/* Virtual methods */
- void (*set_parent) (CamelMimeBodyPart *mime_body_part, CamelMultipart *multipart);
+ void (*set_parent) (CamelMimeBodyPart *mime_body_part,
+ CamelMultipart *multipart);
const CamelMultipart * (*get_parent) (CamelMimeBodyPart *mime_body_part);
} CamelMimeBodyPartClass;
@@ -72,8 +73,9 @@ GtkType camel_mime_body_part_get_type (void);
/* public methods */
-CamelMimeBodyPart *camel_mime_body_part_new ();
-void camel_mime_body_part_set_parent (CamelMimeBodyPart *mime_body_part, CamelMultipart *multipart);
+CamelMimeBodyPart * camel_mime_body_part_new (void);
+void camel_mime_body_part_set_parent (CamelMimeBodyPart *mime_body_part,
+ CamelMultipart *multipart);
const CamelMultipart *camel_mime_body_part_get_parent (CamelMimeBodyPart *mime_body_part);
diff --git a/camel/camel-mime-part-utils.c b/camel/camel-mime-part-utils.c
index 427132df75..6a06bc3bce 100644
--- a/camel/camel-mime-part-utils.c
+++ b/camel/camel-mime-part-utils.c
@@ -87,6 +87,7 @@ camel_mime_part_construct_content_from_stream (CamelMimePart *mime_part,
GtkType content_object_type;
CamelDataWrapper *content_object = NULL;
+
/*
* find content mime type
*/
diff --git a/camel/camel-mime-part.c b/camel/camel-mime-part.c
index 0328ac8115..2e52f8312f 100644
--- a/camel/camel-mime-part.c
+++ b/camel/camel-mime-part.c
@@ -818,7 +818,7 @@ _set_input_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
guint32 content_stream_inf_bound;
- CAMEL_LOG_FULL_DEBUG ("CamelMimePart::construct_from_stream entering\n");
+ CAMEL_LOG_FULL_DEBUG ("CamelMimePart::set_input_stream entering\n");
g_assert (CAMEL_IS_SEEKABLE_STREAM (stream));
seekable_stream = CAMEL_SEEKABLE_STREAM (stream);
@@ -831,6 +831,7 @@ _set_input_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
camel_seekable_substream_new_with_seekable_stream_and_bounds (seekable_stream,
content_stream_inf_bound,
-1);
+ CAMEL_LOG_FULL_DEBUG ("CamelMimePart::set_input_stream leaving\n");
}
diff --git a/camel/camel-multipart.c b/camel/camel-multipart.c
index 948a68e387..0a2f488f31 100644
--- a/camel/camel-multipart.c
+++ b/camel/camel-multipart.c
@@ -26,30 +26,44 @@
*/
#include <config.h>
-#include "camel-multipart.h"
#include "camel-log.h"
#include "gmime-content-field.h"
#include "gmime-utils.h"
#include "camel-stream-mem.h"
+#include "camel-seekable-substream.h"
+#include "camel-multipart.h"
-static void _add_part (CamelMultipart *multipart, CamelMimeBodyPart *part);
-static void _add_part_at (CamelMultipart *multipart, CamelMimeBodyPart *part, guint index);
-static void _remove_part (CamelMultipart *multipart, CamelMimeBodyPart *part);
-static CamelMimeBodyPart *_remove_part_at (CamelMultipart *multipart, guint index);
-static CamelMimeBodyPart *_get_part (CamelMultipart *multipart, guint index);
-static guint _get_number (CamelMultipart *multipart);
-static void _set_parent (CamelMultipart *multipart, CamelMimePart *parent);
-static CamelMimePart *_get_parent (CamelMultipart *multipart);
-static void _set_boundary (CamelMultipart *multipart, gchar *boundary);
-static const gchar *_get_boundary (CamelMultipart *multipart);
-static void _write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
-static void _construct_from_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
-static void _finalize (GtkObject *object);
+static void _add_part (CamelMultipart *multipart,
+ CamelMimeBodyPart *part);
+static void _add_part_at (CamelMultipart *multipart,
+ CamelMimeBodyPart *part,
+ guint index);
+static void _remove_part (CamelMultipart *multipart,
+ CamelMimeBodyPart *part);
+static CamelMimeBodyPart * _remove_part_at (CamelMultipart *multipart,
+ guint index);
+static CamelMimeBodyPart * _get_part (CamelMultipart *multipart,
+ guint index);
+static guint _get_number (CamelMultipart *multipart);
+static void _set_parent (CamelMultipart *multipart,
+ CamelMimePart *parent);
+static CamelMimePart * _get_parent (CamelMultipart *multipart);
+static void _set_boundary (CamelMultipart *multipart,
+ gchar *boundary);
+static const gchar * _get_boundary (CamelMultipart *multipart);
+static void _write_to_stream (CamelDataWrapper *data_wrapper,
+ CamelStream *stream);
+static void _set_input_stream (CamelDataWrapper *data_wrapper,
+ CamelStream *stream);
+
+static void _finalize (GtkObject *object);
static CamelDataWrapperClass *parent_class=NULL;
+
+
/* Returns the class for a CamelMultipart */
#define CMP_CLASS(so) CAMEL_MULTIPART_CLASS (GTK_OBJECT(so)->klass)
@@ -79,7 +93,7 @@ camel_multipart_class_init (CamelMultipartClass *camel_multipart_class)
/* virtual method overload */
camel_data_wrapper_class->write_to_stream = _write_to_stream;
- camel_data_wrapper_class->construct_from_stream = _construct_from_stream;
+ camel_data_wrapper_class->set_input_stream = _set_input_stream;
gtk_object_class->finalize = _finalize;
}
@@ -150,8 +164,9 @@ _finalize (GtkObject *object)
}
-CamelMultipart *
-camel_multipart_new ()
+
+CamelMultipart *
+camel_multipart_new (void)
{
CamelMultipart *multipart;
CAMEL_LOG_FULL_DEBUG ("CamelMultipart:: Entering new()\n");
@@ -177,7 +192,7 @@ void
camel_multipart_add_part (CamelMultipart *multipart, CamelMimeBodyPart *part)
{
CMP_CLASS (multipart)->add_part (multipart, part);
-}
+}
static void
@@ -401,117 +416,6 @@ _write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
-/**
- * _read_part: read one part in a multipart environement.
- * @new_part_stream: stream to add the part to
- * @stream: the stream to read the lines from.
- * @normal_boundary: end of part bundary.
- * @end_boundary: end of multipart boundary.
- *
- * This routine is a bit special: RFC 2046 says that, in a multipart
- * environment, the last crlf before a boundary belongs to the boundary.
- * Thus, if there is no blank line before the boundary, the last crlf
- * of the last line of the part is removed.
- *
- * Return value: true if the last boundary element has been found or if no more data was available from the stream, flase otherwise
- **/
-
-static gboolean
-_read_part (CamelStream *new_part_stream, CamelStream *stream, gchar *normal_boundary, gchar *end_boundary)
-{
- gchar *new_line = NULL;
- gboolean end_of_part = FALSE;
- gboolean last_part = FALSE;
- gboolean first_line = TRUE;
-
- /* Note for future enhancements */
- /* RFC 2046 precises that when parsing the content of a multipart
- * element, the program should not think it will find the last boundary,
- * and in particular, the message could have been damaged during
- * transport, the parsing should still be OK */
- CAMEL_LOG_FULL_DEBUG ("CamelMultipart:: Entering _read_part\n");
-
- new_line = gmime_read_line_from_stream (stream);
- while (new_line && !end_of_part && !last_part) {
- end_of_part = (strcmp (new_line, normal_boundary) == 0);
- last_part = (strcmp (new_line, end_boundary) == 0);
- if (!end_of_part && !last_part) {
- if (first_line) {
- first_line = FALSE;
- camel_stream_write_string (new_part_stream, new_line);
- } else camel_stream_write_strings (new_part_stream, "\n", new_line, NULL);
- g_free (new_line);
- new_line = gmime_read_line_from_stream (stream);
- }
- }
-
- if (new_line) g_free (new_line);
- else last_part = TRUE;
-
- CAMEL_LOG_FULL_DEBUG ("CamelMultipart:: Leaving _read_part\n");
- return (last_part);
-}
-
-static void
-_construct_from_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
-{
- CamelMultipart *multipart = CAMEL_MULTIPART (data_wrapper);
- const gchar *boundary;
- gchar *real_boundary_line;
- gchar *end_boundary_line;
- CamelStream *new_part_stream;
- gboolean end_of_multipart;
- CamelMimeBodyPart *body_part;
-
- CAMEL_LOG_FULL_DEBUG ("Entering CamelMultipart::_construct_from_stream\n");
- boundary = camel_multipart_get_boundary (multipart);
- g_return_if_fail (boundary);
-
- real_boundary_line = g_strdup_printf ("--%s", boundary);
- end_boundary_line = g_strdup_printf ("--%s--", boundary);
-
-
- /* read the prefix if any */
- new_part_stream = camel_stream_mem_new (CAMEL_STREAM_MEM_RW);
- end_of_multipart = _read_part (new_part_stream, stream, real_boundary_line, end_boundary_line);
- CAMEL_LOG_FULL_DEBUG ("CamelMultipart::construct_from_stream freeing new_part_stream:%p\n", new_part_stream);
- gtk_object_unref (GTK_OBJECT (new_part_stream));
- if (multipart->preface) g_free (multipart->preface);
-
- /* if ( (new_part->str)[0] != '\0') multipart->preface = g_strdup (new_part->str); */
-
- /* read all the real parts */
- while (!end_of_multipart) {
- CAMEL_LOG_FULL_DEBUG ("CamelMultipart::construct_from_stream, detected a new part\n");
- new_part_stream = camel_stream_mem_new (CAMEL_STREAM_MEM_RW);
- body_part = camel_mime_body_part_new ();
-
- end_of_multipart = _read_part ( new_part_stream, stream, real_boundary_line, end_boundary_line);
- camel_seekable_stream_seek (new_part_stream, 0, CAMEL_STREAM_SET);
- camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER (body_part), new_part_stream);
- camel_multipart_add_part (multipart, body_part);
- gtk_object_destroy (GTK_OBJECT (new_part_stream));
-
- }
-
- /* g_string_assign (new_part, ""); */
- /* _read_part (new_part, stream, real_boundary_line, end_boundary_line); */
-
- if (multipart->postface) g_free (multipart->postface);
- /* if ( (new_part->str)[0] != '\0') multipart->postface = g_strdup (new_part->str); */
-
- /* g_string_free (new_part, TRUE); */
-
- g_free (real_boundary_line);
- g_free (end_boundary_line);
- CAMEL_LOG_FULL_DEBUG ("Leaving CamelMultipart::_construct_from_stream\n");
-}
-
-
-
-
-
-
@@ -543,7 +447,6 @@ _localize_part (CamelStream *stream,
gchar *new_line = NULL;
gboolean end_of_part = FALSE;
gboolean last_part = FALSE;
- gboolean first_line = TRUE;
guint32 last_position;
/* Note for future enhancements */
@@ -553,8 +456,11 @@ _localize_part (CamelStream *stream,
* transport, the parsing should still be OK */
CAMEL_LOG_FULL_DEBUG ("CamelMultipart:: Entering _localize_part\n");
- last_position = camel_seekable_stream_get_current_position (stream);
+ g_assert (CAMEL_IS_SEEKABLE_STREAM (stream));
+
+ last_position = camel_seekable_stream_get_current_position (CAMEL_SEEKABLE_STREAM (stream));
new_line = gmime_read_line_from_stream (stream);
+
while (new_line && !end_of_part && !last_part) {
end_of_part = (strcmp (new_line, normal_boundary) == 0);
last_part = (strcmp (new_line, end_boundary) == 0);
@@ -562,7 +468,9 @@ _localize_part (CamelStream *stream,
g_free (new_line);
- last_position = camel_seekable_stream_get_current_position (stream);
+ last_position =
+ camel_seekable_stream_get_current_position (CAMEL_SEEKABLE_STREAM (stream));
+
new_line = gmime_read_line_from_stream (stream);
}
}
@@ -570,7 +478,7 @@ _localize_part (CamelStream *stream,
if (new_line) g_free (new_line);
else last_part = TRUE;
- *end_position = last_position
+ *end_position = last_position;
CAMEL_LOG_FULL_DEBUG ("CamelMultipart:: Leaving _localize_part\n");
return (last_part);
@@ -583,16 +491,18 @@ static void
_set_input_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
{
CamelMultipart *multipart = CAMEL_MULTIPART (data_wrapper);
+ CamelSeekableStream *seekable_stream = CAMEL_SEEKABLE_STREAM (stream);
const gchar *boundary;
gchar *real_boundary_line;
gchar *end_boundary_line;
- CamelStream *new_part_stream;
gboolean end_of_multipart;
CamelMimeBodyPart *body_part;
guint32 part_begining, part_end;
CamelSeekableSubstream *body_part_input_stream;
+ guint32 saved_stream_pos;
+
- CAMEL_LOG_FULL_DEBUG ("Entering CamelMultipart::_construct_from_stream\n");
+ CAMEL_LOG_FULL_DEBUG ("Entering CamelMultipart::_set_input_stream\n");
boundary = camel_multipart_get_boundary (multipart);
g_return_if_fail (boundary);
@@ -612,9 +522,9 @@ _set_input_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
/* read all the real parts */
while (!end_of_multipart) {
/* determine the position of the begining of the part */
- part_begining = camel_seekable_stream_get_current_position (stream);
+ part_begining = camel_seekable_stream_get_current_position (seekable_stream);
- CAMEL_LOG_FULL_DEBUG ("CamelMultipart::construct_from_stream, detected a new part\n");
+ CAMEL_LOG_FULL_DEBUG ("CamelMultipart::set_input_stream, detected a new part\n");
body_part = camel_mime_body_part_new ();
end_of_multipart = _localize_part (stream,
@@ -625,8 +535,18 @@ _set_input_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
camel_seekable_substream_new_with_seekable_stream_and_bounds (seekable_stream,
part_begining,
part_end);
-
- camel_data_wrapper_set_input_stream (CAMEL_DATA_WRAPPER (body_part), body_part_input_stream);
+
+ /* the seekable substream may change the position of the stream
+ so we must save it before calling set_input_stream */
+ saved_stream_pos = camel_seekable_stream_get_current_position (seekable_stream);
+
+ camel_data_wrapper_set_input_stream (CAMEL_DATA_WRAPPER (body_part),
+ CAMEL_STREAM (body_part_input_stream));
+
+ /* restore the stream position */
+ camel_seekable_stream_seek (seekable_stream, saved_stream_pos, CAMEL_STREAM_SET);
+
+ /* add the body part to the multipart object */
camel_multipart_add_part (multipart, body_part);
}
@@ -641,5 +561,5 @@ _set_input_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
g_free (real_boundary_line);
g_free (end_boundary_line);
- CAMEL_LOG_FULL_DEBUG ("Leaving CamelMultipart::_construct_from_stream\n");
+ CAMEL_LOG_FULL_DEBUG ("Leaving CamelMultipart::_set_input_stream\n");
}
diff --git a/camel/camel-multipart.h b/camel/camel-multipart.h
index 905bc82927..50b64b3ae0 100644
--- a/camel/camel-multipart.h
+++ b/camel/camel-multipart.h
@@ -84,17 +84,25 @@ GtkType camel_multipart_get_type (void);
/* public methods */
-CamelMultipart *camel_multipart_new ();
-void camel_multipart_add_part (CamelMultipart *multipart, CamelMimeBodyPart *part);
-void camel_multipart_add_part_at (CamelMultipart *multipart, CamelMimeBodyPart *part, guint index);
-void camel_multipart_remove_part (CamelMultipart *multipart, CamelMimeBodyPart *part);
-CamelMimeBodyPart *camel_multipart_remove_part_at (CamelMultipart *multipart, guint index);
-CamelMimeBodyPart *camel_multipart_get_part (CamelMultipart *multipart, guint index);
-guint camel_multipart_get_number (CamelMultipart *multipart);
-void camel_multipart_set_parent (CamelMultipart *multipart, CamelMimePart *parent);
-CamelMimePart *camel_multipart_get_parent (CamelMultipart *multipart);
-void camel_multipart_set_boundary (CamelMultipart *multipart, gchar *boundary);
-const gchar *camel_multipart_get_boundary (CamelMultipart *multipart);
+CamelMultipart * camel_multipart_new (void);
+void camel_multipart_add_part (CamelMultipart *multipart,
+ CamelMimeBodyPart *part);
+void camel_multipart_add_part_at (CamelMultipart *multipart,
+ CamelMimeBodyPart *part,
+ guint index);
+void camel_multipart_remove_part (CamelMultipart *multipart,
+ CamelMimeBodyPart *part);
+CamelMimeBodyPart * camel_multipart_remove_part_at (CamelMultipart *multipart,
+ guint index);
+CamelMimeBodyPart * camel_multipart_get_part (CamelMultipart *multipart,
+ guint index);
+guint camel_multipart_get_number (CamelMultipart *multipart);
+void camel_multipart_set_parent (CamelMultipart *multipart,
+ CamelMimePart *parent);
+CamelMimePart * camel_multipart_get_parent (CamelMultipart *multipart);
+void camel_multipart_set_boundary (CamelMultipart *multipart,
+ gchar *boundary);
+const gchar * camel_multipart_get_boundary (CamelMultipart *multipart);
diff --git a/camel/camel-seekable-substream.c b/camel/camel-seekable-substream.c
index 6777eeb12d..6d59d8994c 100644
--- a/camel/camel-seekable-substream.c
+++ b/camel/camel-seekable-substream.c
@@ -142,11 +142,14 @@ _destroy (GtkObject *object)
static void
_finalize (GtkObject *object)
{
-
-
+ CamelSeekableStream *seekable_stream;
CAMEL_LOG_FULL_DEBUG ("Entering CamelSeekableSubstream::finalize\n");
- /* does nothing for the moment */
+ seekable_stream = CAMEL_SEEKABLE_STREAM (object);
+
+ if (seekable_stream->parent_stream)
+ gtk_object_unref (seekable_stream->parent_stream);
+
GTK_OBJECT_CLASS (parent_class)->finalize (object);
CAMEL_LOG_FULL_DEBUG ("Leaving CamelSeekableSubstream::finalize\n");
}
@@ -165,8 +168,6 @@ _set_bounds (CamelSeekableSubstream *seekable_substream, guint32 inf_bound, gint
seekable_substream->inf_bound = inf_bound;
seekable_substream->sup_bound = sup_bound;
- /* go to the first position */
- camel_seekable_stream_seek (seekable_substream->parent_stream, inf_bound, SEEK_SET);
seekable_substream->cur_pos = 0;
@@ -194,7 +195,8 @@ _init_with_seekable_stream_and_bounds (CamelSeekableSubstream *seekable_substre
/* store the parent stream */
seekable_substream->parent_stream = parent_stream;
-
+ gtk_object_ref (parent_stream);
+
/* set the bound of the substream */
_set_bounds (seekable_substream, inf_bound, sup_bound);
}
@@ -245,7 +247,6 @@ _read (CamelStream *stream, gchar *buffer, gint n)
g_assert (stream);
g_assert (seekable_substream->parent_stream);
- g_assert (seekable_substream->open);
@@ -300,14 +301,7 @@ _read (CamelStream *stream, gchar *buffer, gint n)
seekable_stream->cur_pos += v;
-#if 0
- /* restore the parent position */
- camel_seekable_stream_seek (seekable_substream->parent_stream,
- parent_stream_current_position,
- CAMEL_STREAM_SET);
-
-#endif
/* return the number of bytes read */
return v;
}
@@ -384,11 +378,10 @@ _eos (CamelStream *stream)
gboolean eos;
g_assert (stream);
- g_assert (seekable_substream->open);
if (seekable_substream->sup_bound != -1) {
substream_len = seekable_substream->sup_bound - seekable_substream->inf_bound;
- eos = ( seekable_stream->cur_pos > substream_len);
+ eos = ( seekable_stream->cur_pos >= substream_len);
} else {
eos = camel_stream_eos (CAMEL_STREAM (seekable_substream->parent_stream));
}
diff --git a/camel/camel-store.h b/camel/camel-store.h
index 89ad29161b..60254b3a27 100644
--- a/camel/camel-store.h
+++ b/camel/camel-store.h
@@ -63,12 +63,21 @@ struct _CamelStore
typedef struct {
CamelServiceClass parent_class;
- void (*init) (CamelStore *store, CamelSession *session, const gchar *url_name, CamelException *ex);
- void (*set_separator) (CamelStore *store, gchar sep, CamelException *ex);
- gchar (*get_separator) (CamelStore *store, CamelException *ex);
- CamelFolder * (*get_folder) (CamelStore *store, const gchar *folder_name, CamelException *ex);
- CamelFolder * (*get_root_folder) (CamelStore *store, CamelException *ex);
- CamelFolder * (*get_default_folder) (CamelStore *store, CamelException *ex);
+ void (*init) (CamelStore *store,
+ CamelSession *session,
+ const gchar *url_name,
+ CamelException *ex);
+ void (*set_separator) (CamelStore *store, gchar sep,
+ CamelException *ex);
+ gchar (*get_separator) (CamelStore *store,
+ CamelException *ex);
+ CamelFolder * (*get_folder) (CamelStore *store,
+ const gchar *folder_name,
+ CamelException *ex);
+ CamelFolder * (*get_root_folder) (CamelStore *store,
+ CamelException *ex);
+ CamelFolder * (*get_default_folder) (CamelStore *store,
+ CamelException *ex);
} CamelStoreClass;
@@ -78,10 +87,10 @@ typedef struct {
/* Standard Gtk function */
GtkType camel_store_get_type (void);
-void camel_store_init (CamelStore *store, CamelSession *session, const gchar *url_name, CamelException *ex);
-CamelFolder *camel_store_get_folder (CamelStore *store, const gchar *folder_name, CamelException *ex);
-gchar camel_store_get_separator (CamelStore *store, CamelException *ex);
-CamelSession *camel_store_get_session (CamelStore *store, CamelException *ex);
+void camel_store_init (CamelStore *store, CamelSession *session, const gchar *url_name, CamelException *ex);
+CamelFolder * camel_store_get_folder (CamelStore *store, const gchar *folder_name, CamelException *ex);
+gchar camel_store_get_separator (CamelStore *store, CamelException *ex);
+CamelSession * camel_store_get_session (CamelStore *store, CamelException *ex);
#ifdef __cplusplus
}
diff --git a/camel/camel-stream-fs.c b/camel/camel-stream-fs.c
index 6c50282e33..d6ba5fba13 100644
--- a/camel/camel-stream-fs.c
+++ b/camel/camel-stream-fs.c
@@ -481,11 +481,12 @@ _seek (CamelSeekableStream *stream, gint offset, CamelStreamSeekPolicy policy)
gint real_offset;
CamelStreamFs *stream_fs = CAMEL_STREAM_FS (stream);
+#if 0
/* because we don't know what is going to happen, we
set the eof stream to false so that a reread can
occur */
stream_fs->eof = FALSE;
-
+#endif
switch (policy) {
case CAMEL_STREAM_SET:
real_offset = MAX (stream_fs->inf_bound + offset, stream_fs->inf_bound);
@@ -525,7 +526,10 @@ _seek (CamelSeekableStream *stream, gint offset, CamelStreamSeekPolicy policy)
+ printf ("***** Seeking : real_offset=%d, whence=%d\n", real_offset, whence);
return_position = lseek (stream_fs->fd, real_offset, whence) - stream_fs->inf_bound;
+ printf ("*** *** *** *** ***\n");
+
CAMEL_SEEKABLE_STREAM (stream)->cur_pos = return_position;
diff --git a/camel/camel-thread-proxy.c b/camel/camel-thread-proxy.c
index 70079d3baf..53fda08bab 100644
--- a/camel/camel-thread-proxy.c
+++ b/camel/camel-thread-proxy.c
@@ -72,7 +72,7 @@ _init_notify_system (CamelThreadProxy *proxy);
* Return value: The newly created proxy object
**/
CamelThreadProxy *
-camel_thread_proxy_new ()
+camel_thread_proxy_new (void)
{
CamelThreadProxy *proxy;
@@ -137,7 +137,6 @@ camel_thread_proxy_free (CamelThreadProxy *proxy)
void
_op_run_free_and_notify (CamelOp *op)
{
- gboolean error;
CamelThreadProxy *th_proxy;
CAMEL_LOG_FULL_DEBUG ("Entering CamelThreadProxy::_op_run_free_and_notify\n");
@@ -163,7 +162,6 @@ _run_next_op_in_thread (CamelThreadProxy *proxy)
{
CamelOp *op;
CamelOpQueue *server_op_queue;
- CamelThreadProxy *th_proxy;
pthread_t thread;
CAMEL_LOG_FULL_DEBUG ("Entering CamelThreadProxy::_run_next_op_in_thread\n");
@@ -260,7 +258,6 @@ _run_next_cb (CamelThreadProxy *proxy)
{
CamelOp *op;
CamelOpQueue *client_op_queue;
- CamelThreadProxy *th_proxy;
CAMEL_LOG_FULL_DEBUG ("Entering CamelThreadProxy::_run_next_cb\n");
client_op_queue = proxy->client_op_queue;
@@ -476,7 +473,6 @@ camel_thread_proxy_add_signals (CamelThreadProxy *proxy,
GtkObject *real_object,
char *signal_to_proxy[])
{
- GtkType camel_folder_type;
guint i;
CAMEL_LOG_FULL_DEBUG ("Entering CamelThreadProxy::camel_thread_proxy_init_signals\n");
diff --git a/camel/camel-thread-proxy.h b/camel/camel-thread-proxy.h
index 9ce7f0e11b..a82a19c87f 100644
--- a/camel/camel-thread-proxy.h
+++ b/camel/camel-thread-proxy.h
@@ -69,7 +69,7 @@ typedef struct {
} CamelThreadProxy;
-CamelThreadProxy *camel_thread_proxy_new ();
+CamelThreadProxy *camel_thread_proxy_new (void);
void camel_thread_proxy_free (CamelThreadProxy *proxy);
void camel_thread_proxy_push_op (CamelThreadProxy *proxy, CamelOp *op);
diff --git a/camel/camel.c b/camel/camel.c
index febdb2d2bb..63a5698801 100644
--- a/camel/camel.c
+++ b/camel/camel.c
@@ -27,7 +27,7 @@
#include "camel.h"
gint
-camel_init()
+camel_init(void)
{
diff --git a/camel/camel.h b/camel/camel.h
index b3ee0dcf03..92099cd0f8 100644
--- a/camel/camel.h
+++ b/camel/camel.h
@@ -62,7 +62,7 @@ extern "C" {
#include <camel/string-utils.h>
#include <camel/url-util.h>
-gint camel_init ();
+gint camel_init (void);
#ifdef __cplusplus
}
diff --git a/camel/gstring-util.c b/camel/gstring-util.c
index 9794696c95..eb89c2aa28 100644
--- a/camel/gstring-util.c
+++ b/camel/gstring-util.c
@@ -210,11 +210,13 @@ g_string_append_g_string(GString *dest_string, GString *other_string)
*
* Return value:
**/
+gint
g_string_equal_for_hash (gconstpointer v, gconstpointer v2)
{
return strcmp ( ((const GString*)v)->str, ((const GString*)v2)->str) == 0;
}
+gint
g_string_equal_for_glist (gconstpointer v, gconstpointer v2)
{
return !strcmp ( ((const GString*)v)->str, ((const GString*)v2)->str) == 0;
diff --git a/camel/providers/mbox/Makefile.am b/camel/providers/mbox/Makefile.am
index c89d38db94..c258f3d747 100644
--- a/camel/providers/mbox/Makefile.am
+++ b/camel/providers/mbox/Makefile.am
@@ -4,7 +4,6 @@ SUBDIRS =
libcamelmboxincludedir = $(includedir)/camel
-providerdir = $(libdir)/evolution/camel-providers/$(VERSION)
provider_LTLIBRARIES = libcamelmbox.la
diff --git a/camel/string-utils.c b/camel/string-utils.c
index 7cd9e97af0..757a907190 100644
--- a/camel/string-utils.c
+++ b/camel/string-utils.c
@@ -65,7 +65,6 @@ gchar
string_dichotomy (const gchar *string, gchar sep, gchar **prefix, gchar **suffix,
StringDichotomyOption options)
{
- gchar *tmp_str;
gint sep_pos, first, last, len;
g_assert (string);