aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog29
-rw-r--r--camel/camel-data-wrapper.h15
-rw-r--r--camel/camel-multipart.c5
-rw-r--r--camel/gmime-content-field.c30
-rw-r--r--camel/gmime-utils.c2
-rw-r--r--camel/md5-utils.c1
-rw-r--r--camel/providers/mbox/camel-mbox-folder.c7
-rw-r--r--camel/providers/mbox/camel-mbox-summary.c4
-rw-r--r--camel/providers/mbox/camel-mbox-utils.c5
-rw-r--r--camel/string-utils.c3
-rw-r--r--tests/ui-tests/message-browser.c13
11 files changed, 88 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index b892b74c75..df0b1999ee 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,32 @@
+2000-02-09 bertrand <Bertrand.Guiheneuf@aful.org>
+
+ * tests/ui-tests/message-browser.c: various typo
+ fixes in the ctree construction.
+
+ * camel/string-utils.c (string_trim): fix braindead
+ trailing trim bug.
+
+ * camel/gmime-content-field.c (gmime_content_field_construct_from_string):
+ strip the leading and trailing quotes when constructing the
+ content field. This should be done in a more generic
+ RFC822 approach, but this fixes a bug that prevent
+ matt from analysing some multipart messages.
+
+ * camel/camel-data-wrapper.h: reorganize the
+ deprecated and new methods.
+
+ * camel/providers/mbox/camel-mbox-folder.c
+ (_check_get_or_maybe_generate_summary_file):
+ Use "From " as the message separating string.
+
+ * camel/providers/mbox/camel-mbox-folder.c (_append_message):
+ set the mode when creating the mbox file.
+
+ * camel/providers/mbox/camel-mbox-utils.c (camel_mbox_write_xev):
+ ditto
+ * camel/providers/mbox/camel-mbox-summary.c (camel_mbox_save_summary):
+ ditto
+
2000-02-09 Matt Loper <matt@helixcode.com>
* tests/ui-tests/message-browser.c (print_usage_and_quit): Minor
diff --git a/camel/camel-data-wrapper.h b/camel/camel-data-wrapper.h
index c9f8e8b65c..5035d06f98 100644
--- a/camel/camel-data-wrapper.h
+++ b/camel/camel-data-wrapper.h
@@ -60,6 +60,7 @@ typedef struct
typedef struct {
+
GtkObjectClass parent_class;
/* Virtual methods */
@@ -68,15 +69,17 @@ typedef struct {
void (*set_output_stream) (CamelDataWrapper *data_wrapper, CamelStream *stream);
CamelStream * (*get_output_stream) (CamelDataWrapper *data_wrapper);
- /* deprecated method */
- void (*write_to_stream) (CamelDataWrapper *data_wrapper, CamelStream *stream);
- void (*construct_from_stream) (CamelDataWrapper *data_wrapper, CamelStream *stream);
-
void (*set_mime_type) (CamelDataWrapper *data_wrapper, gchar * mime_type);
gchar * (*get_mime_type) (CamelDataWrapper *data_wrapper);
GMimeContentField * (*get_mime_type_field) (CamelDataWrapper *data_wrapper);
void (*set_mime_type_field) (CamelDataWrapper *data_wrapper, GMimeContentField *mime_type_field);
+
+
+ /* deprecated method */
CamelStream * (*get_stream) (CamelDataWrapper *data_wrapper);
+ void (*write_to_stream) (CamelDataWrapper *data_wrapper, CamelStream *stream);
+ void (*construct_from_stream) (CamelDataWrapper *data_wrapper, CamelStream *stream);
+
} CamelDataWrapperClass;
@@ -90,12 +93,14 @@ GtkType camel_data_wrapper_get_type (void);
void camel_data_wrapper_write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
-void camel_data_wrapper_construct_from_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
void camel_data_wrapper_set_mime_type (CamelDataWrapper *data_wrapper, gchar *mime_type);
gchar *camel_data_wrapper_get_mime_type (CamelDataWrapper *data_wrapper);
GMimeContentField *camel_data_wrapper_get_mime_type_field (CamelDataWrapper *data_wrapper);
void camel_data_wrapper_set_mime_type_field (CamelDataWrapper *data_wrapper, GMimeContentField *mime_type);
+
+/* deprecated methods. Left until the new parser scheme is ok */
CamelStream *camel_data_wrapper_get_stream (CamelDataWrapper *data_wrapper);
+void camel_data_wrapper_construct_from_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
#ifdef __cplusplus
}
diff --git a/camel/camel-multipart.c b/camel/camel-multipart.c
index 9b6734f011..b30f8590b0 100644
--- a/camel/camel-multipart.c
+++ b/camel/camel-multipart.c
@@ -343,6 +343,7 @@ _get_boundary (CamelMultipart *multipart)
return NULL;
}
boundary = gmime_content_field_get_parameter (CAMEL_DATA_WRAPPER (multipart)->mime_type, "boundary");
+ CAMEL_LOG_FULL_DEBUG ("Leaving CamelMultipart::boundary found : \"%s\"\n", boundary);
CAMEL_LOG_FULL_DEBUG ("Leaving CamelMultipart::_get_boundary\n");
return boundary;
}
@@ -443,10 +444,12 @@ _read_part (CamelStream *new_part_stream, CamelStream *stream, gchar *normal_bou
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 || (new_line == NULL));
+ return (last_part);
}
static void
diff --git a/camel/gmime-content-field.c b/camel/gmime-content-field.c
index 0a72246a0d..3c1f4fbc7b 100644
--- a/camel/gmime-content-field.c
+++ b/camel/gmime-content-field.c
@@ -309,21 +309,30 @@ gmime_content_field_construct_from_string (GMimeContentField *content_field, con
first = 0;
len = strlen (string);
- if (!len) return;
+ if (!len) {
+ CAMEL_LOG_FULL_DEBUG ( "GMimeContentField::construct_from_string, leaving\n");
+ return;
+ }
CAMEL_LOG_FULL_DEBUG ("GMimeContentField::construct_from_string, All checks done\n");
-
+ CAMEL_LOG_FULL_DEBUG ("GMimeContentField::construct_from_string the complete header is\n"
+ "-------------------\n%s\n-------------------\n", string);
/* find the type */
while ( (i<len) && (!strchr ("/;", string[i])) ) i++;
- if (i == 0) return;
+ if (i == 0) {
+ CAMEL_LOG_FULL_DEBUG ( "GMimeContentField::construct_from_string, leaving\n");
+ return;
+ }
type = g_strndup (string, i);
- string_trim (type, " \t", STRING_TRIM_STRIP_TRAILING | STRING_TRIM_STRIP_LEADING);
+ string_trim (type, " \t\"", STRING_TRIM_STRIP_TRAILING | STRING_TRIM_STRIP_LEADING);
content_field->type = type;
CAMEL_LOG_TRACE ( "GMimeContentField::construct_from_string, Found mime type : \"%s\"\n", type);
if (i >= len-1) {
content_field->subtype = NULL;
- return;
+
+ CAMEL_LOG_FULL_DEBUG ( "GMimeContentField::construct_from_string only found the type leaving\n");
+ return;
}
first = i+1;
@@ -332,10 +341,13 @@ gmime_content_field_construct_from_string (GMimeContentField *content_field, con
while ( (i<len) && (string[i] != ';') ) i++;
if (i != first) {
subtype = g_strndup (string+first, i-first);
- string_trim (subtype, " \t", STRING_TRIM_STRIP_TRAILING | STRING_TRIM_STRIP_LEADING);
+ string_trim (subtype, " \t\"", STRING_TRIM_STRIP_TRAILING | STRING_TRIM_STRIP_LEADING);
content_field->subtype = subtype;
CAMEL_LOG_TRACE ( "GMimeContentField::construct_from_string, Found mime subtype: \"%s\"\n", subtype);
- if (i >= len-1) return;
+ if (i >= len-1) {
+ CAMEL_LOG_FULL_DEBUG ( "GMimeContentField::construct_from_string found the subtype but no parameter, leaving\n");
+ return;
+ }
}
}
first = i+1;
@@ -348,7 +360,7 @@ gmime_content_field_construct_from_string (GMimeContentField *content_field, con
else {
/* we have found parameter name */
param_name = g_strndup (string+first, i-first);
- string_trim (param_name, " ", STRING_TRIM_STRIP_TRAILING | STRING_TRIM_STRIP_LEADING);
+ string_trim (param_name, " \"", STRING_TRIM_STRIP_TRAILING | STRING_TRIM_STRIP_LEADING);
i++;
first = i;
/* Let's find parameter value */
@@ -356,7 +368,7 @@ gmime_content_field_construct_from_string (GMimeContentField *content_field, con
if (i != first) param_value = g_strndup (string+first, i-first);
else param_value = g_strdup ("");
CAMEL_LOG_TRACE ( "GMimeContentField::construct_from_string, Found mime parameter \"%s\"=\"%s\"\n", param_name, param_value);
- string_trim (param_value, " \t", STRING_TRIM_STRIP_TRAILING | STRING_TRIM_STRIP_LEADING);
+ string_trim (param_value, " \t\"", STRING_TRIM_STRIP_TRAILING | STRING_TRIM_STRIP_LEADING);
gmime_content_field_set_parameter (content_field, param_name, param_value);
g_free (param_name);
g_free (param_value);
diff --git a/camel/gmime-utils.c b/camel/gmime-utils.c
index 4e089aeeb6..421808a4d4 100644
--- a/camel/gmime-utils.c
+++ b/camel/gmime-utils.c
@@ -196,6 +196,8 @@ get_header_array_from_stream (CamelStream *stream)
if (nb_char_read>0) {
switch (next_char) {
+ case '\r': CAMEL_LOG_FULL_DEBUG ( "gmime-utils::get_header_table_from_stream "
+ "****** FOUND A \\r******* \n");
case '\n': /* a blank line means end of headers */
if (crlf) {
end_of_headers=TRUE;
diff --git a/camel/md5-utils.c b/camel/md5-utils.c
index 53f3373bb5..1300c00f9f 100644
--- a/camel/md5-utils.c
+++ b/camel/md5-utils.c
@@ -188,7 +188,6 @@ md5_final (guchar digest[16], MD5Context *ctx)
if (ctx->doByteReverse)
_byte_reverse ((guchar *) ctx->buf, 4);
memcpy (digest, ctx->buf, 16);
- memset (ctx, 0, sizeof(ctx)); /* In case it's sensitive */
}
diff --git a/camel/providers/mbox/camel-mbox-folder.c b/camel/providers/mbox/camel-mbox-folder.c
index 87456ac0fe..53da87b746 100644
--- a/camel/providers/mbox/camel-mbox-folder.c
+++ b/camel/providers/mbox/camel-mbox-folder.c
@@ -242,7 +242,7 @@ _check_get_or_maybe_generate_summary_file (CamelMboxFolder *mbox_folder, CamelEx
mbox_file_fd = open (mbox_folder->folder_file_path, O_RDONLY);
message_info_array = camel_mbox_parse_file (mbox_file_fd,
- "From - ",
+ "From ",
0,
&file_size,
&next_uid,
@@ -981,7 +981,10 @@ _append_message (CamelFolder *folder, CamelMimeMessage *message, CamelException
/* append the temporary file message to the mbox file */
fd1 = open (tmp_message_filename, O_RDONLY);
- fd2 = open (mbox_folder->folder_file_path, O_WRONLY | O_CREAT | O_APPEND);
+ fd2 = open (mbox_folder->folder_file_path,
+ O_WRONLY | O_CREAT | O_APPEND,
+ S_IRUSR | S_IWUSR);
+
if (fd2 == -1) {
camel_exception_setv (ex,
CAMEL_EXCEPTION_FOLDER_INSUFFICIENT_PERMISSION,
diff --git a/camel/providers/mbox/camel-mbox-summary.c b/camel/providers/mbox/camel-mbox-summary.c
index 094d032cb3..244fe34073 100644
--- a/camel/providers/mbox/camel-mbox-summary.c
+++ b/camel/providers/mbox/camel-mbox-summary.c
@@ -51,7 +51,9 @@ camel_mbox_save_summary (CamelMboxSummary *summary, const gchar *filename, Camel
CAMEL_LOG_FULL_DEBUG ("CamelMboxFolder::save_summary entering \n");
- fd = open (filename, O_WRONLY | O_CREAT | O_TRUNC);
+ fd = open (filename,
+ O_WRONLY | O_CREAT | O_TRUNC,
+ S_IRUSR | S_IWUSR);
if (fd == -1) {
camel_exception_setv (ex,
CAMEL_EXCEPTION_FOLDER_INSUFFICIENT_PERMISSION,
diff --git a/camel/providers/mbox/camel-mbox-utils.c b/camel/providers/mbox/camel-mbox-utils.c
index 1f0285be8a..64fb4cb283 100644
--- a/camel/providers/mbox/camel-mbox-utils.c
+++ b/camel/providers/mbox/camel-mbox-utils.c
@@ -233,7 +233,10 @@ camel_mbox_write_xev (gchar *mbox_file_name,
tmp_file_name_secure = g_strdup_printf ("%s__.ev_tmp_secure", mbox_file_name);
fd1 = open (mbox_file_name, O_RDONLY);
- fd2 = open (tmp_file_name, O_WRONLY | O_CREAT | O_TRUNC );
+ fd2 = open (tmp_file_name,
+ O_WRONLY | O_CREAT | O_TRUNC ,
+ S_IRUSR | S_IWUSR);
+
if (fd2 == -1) {
camel_exception_setv (ex,
CAMEL_EXCEPTION_FOLDER_INSUFFICIENT_PERMISSION,
diff --git a/camel/string-utils.c b/camel/string-utils.c
index 3f9ce4805d..7cd9e97af0 100644
--- a/camel/string-utils.c
+++ b/camel/string-utils.c
@@ -245,7 +245,8 @@ string_trim (gchar *string, const gchar *trim_chars, StringTrimOption options)
string, first_ok, last_ok);
if (first_ok > 0)
- memmove (string, string+first_ok, last_ok - first_ok +2);
+ memmove (string, string+first_ok, last_ok - first_ok + 1);
+ string[last_ok - first_ok +1] = '\0';
}
diff --git a/tests/ui-tests/message-browser.c b/tests/ui-tests/message-browser.c
index 39bcab4dfd..890e369c2f 100644
--- a/tests/ui-tests/message-browser.c
+++ b/tests/ui-tests/message-browser.c
@@ -33,11 +33,12 @@ handle_tree_item (CamelDataWrapper* object, GtkWidget* tree_ctrl)
tree_item = gtk_tree_item_new_with_label (label);
gtk_tree_append (GTK_TREE (tree_ctrl), tree_item);
+ printf ("Appending %s\n", label);
if (CAMEL_IS_MULTIPART (object))
{
CamelMultipart* multipart = CAMEL_MULTIPART (object);
- GtkWidget* subtree;
+ GtkWidget* subtree = NULL;
int max_multiparts = camel_multipart_get_number (multipart);
int i;
@@ -55,19 +56,19 @@ handle_tree_item (CamelDataWrapper* object, GtkWidget* tree_ctrl)
g_print ("handling part %d\n", i);
handle_tree_item (CAMEL_DATA_WRAPPER (body_part),
- tree_item);
+ subtree);
}
}
}
-GtkWidget*
+static GtkWidget*
get_message_tree_ctrl (CamelMimeMessage* message)
{
GtkWidget* tree_ctrl = gtk_tree_new ();
CamelDataWrapper* message_contents =
camel_medium_get_content_object (CAMEL_MEDIUM (message));
- int i;
+
/*
* Set up the scroll window
*/
@@ -109,7 +110,7 @@ static void
print_usage_and_quit()
{
g_print ("Usage: message-browser [FILENAME]\n");
- g_print ("Where FILENAME is the filename of a mime message ");
+ g_print ("Where FILENAME is the filename of a mime message ");
g_print ("in \"message/rfc822\" format.\n");
exit (0);
}
@@ -145,4 +146,6 @@ main (int argc, char *argv[])
GTK_SIGNAL_FUNC(gtk_main_quit),
&app);
gtk_main();
+
+ return 1;
}