From f6bfa59574deffabf0067c3741d35cd2238daaf2 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Wed, 14 Jun 2000 05:10:58 +0000 Subject: if the mbox doesn't end with a '\n', write one before appending the new * providers/mbox/camel-mbox-folder.c (mbox_append_message): if the mbox doesn't end with a '\n', write one before appending the new message. svn path=/trunk/; revision=3562 --- camel/providers/mbox/camel-mbox-folder.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'camel/providers/mbox') diff --git a/camel/providers/mbox/camel-mbox-folder.c b/camel/providers/mbox/camel-mbox-folder.c index 5f8e4a90c8..035dbee127 100644 --- a/camel/providers/mbox/camel-mbox-folder.c +++ b/camel/providers/mbox/camel-mbox-folder.c @@ -299,7 +299,7 @@ mbox_append_message (CamelFolder *folder, CamelMimeMessage *message, CamelExcept CamelMimeFilter *filter_from = NULL; struct stat st; off_t seek = -1; - char *xev; + char *xev, last; guint32 uid; if (stat(mbox_folder->folder_file_path, &st) != 0) @@ -309,9 +309,17 @@ mbox_append_message (CamelFolder *folder, CamelMimeMessage *message, CamelExcept if (output_stream == NULL) goto fail; - seek = camel_seekable_stream_seek((CamelSeekableStream *)output_stream, st.st_size, SEEK_SET); - if (seek != st.st_size) - goto fail; + if (st.st_size) { + seek = camel_seekable_stream_seek((CamelSeekableStream *)output_stream, st.st_size - 1, SEEK_SET); + if (seek != st.st_size - 1) + goto fail; + + /* If the mbox doesn't end with a newline, fix that. */ + if (camel_stream_read (output_stream, &last, 1) != 1) + goto fail; + if (last != '\n') + camel_stream_write (output_stream, "\n", 1); + } /* assign a new x-evolution header/uid */ camel_medium_remove_header((CamelMedium *)message, "X-Evolution"); -- cgit v1.2.3