diff options
author | Dan Winship <danw@src.gnome.org> | 2003-03-21 00:43:29 +0800 |
---|---|---|
committer | Dan Winship <danw@src.gnome.org> | 2003-03-21 00:43:29 +0800 |
commit | becf944b42e72175079e9b975ab631e9adc91b43 (patch) | |
tree | afaa5e3960f576cc653e6d095fc5420dcdf12664 /camel/providers/local | |
parent | 1bef6b2b8cd335f167deb690160c8fb9d4f06dd0 (diff) | |
download | gsoc2013-evolution-becf944b42e72175079e9b975ab631e9adc91b43.tar.gz gsoc2013-evolution-becf944b42e72175079e9b975ab631e9adc91b43.tar.zst gsoc2013-evolution-becf944b42e72175079e9b975ab631e9adc91b43.zip |
Handle raw 8-bit From data "correctly". (The same way we handle
raw 8-bit Subject data.)
* camel-mime-utils.c (header_decode_mailbox): Take a charset arg
and pass it to header_decode_string.
(header_decode_address): Take a charset arg and pass it to
header_decode_mailbox.
(header_mailbox_decode): Likewise.
(header_address_decode): Take a charset arg and pass it to
header_decode_address.
* camel-folder-summary.c (summary_format_address): Take a charset
arg and pass to header_address_decode.
(message_info_new, camel_message_info_new_from_header): Pass
charset to summary_format_address
* camel-internet-address.c (internet_decode): Update for
header_address_decode change. (Unfortunately we don't have a
charset to pass here.)
* camel-mime-message.c (camel_mime_message_build_mbox_from): Move
this here from camel-mbox-summary since the same functionality is
needed by evolution-mail too (and update for header_address_decode
change)
* providers/local/camel-mbox-summary.c
(camel_mbox_summary_build_from): Moved to CamelMimeMessage
svn path=/trunk/; revision=20430
Diffstat (limited to 'camel/providers/local')
-rw-r--r-- | camel/providers/local/camel-mbox-folder.c | 2 | ||||
-rw-r--r-- | camel/providers/local/camel-mbox-summary.c | 70 | ||||
-rw-r--r-- | camel/providers/local/camel-mbox-summary.h | 3 | ||||
-rw-r--r-- | camel/providers/local/camel-spool-summary.h | 2 |
4 files changed, 1 insertions, 76 deletions
diff --git a/camel/providers/local/camel-mbox-folder.c b/camel/providers/local/camel-mbox-folder.c index e06a63fe47..f5332dc140 100644 --- a/camel/providers/local/camel-mbox-folder.c +++ b/camel/providers/local/camel-mbox-folder.c @@ -233,7 +233,7 @@ mbox_append_message(CamelFolder *folder, CamelMimeMessage * message, const Camel #endif /* we must write this to the non-filtered stream ... */ - fromline = camel_mbox_summary_build_from(((CamelMimePart *)message)->headers); + fromline = camel_mime_message_build_mbox_from(message); if (camel_stream_write(output_stream, fromline, strlen(fromline)) == -1) goto fail_write; diff --git a/camel/providers/local/camel-mbox-summary.c b/camel/providers/local/camel-mbox-summary.c index 42d26e8a5b..27c964f946 100644 --- a/camel/providers/local/camel-mbox-summary.c +++ b/camel/providers/local/camel-mbox-summary.c @@ -496,76 +496,6 @@ mbox_summary_check(CamelLocalSummary *cls, CamelFolderChangeInfo *changes, Camel return ret; } -static char *tz_months[] = { - "Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" -}; - -static char *tz_days[] = { - "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" -}; - -/* tries to build a From line, based on message headers */ -char * -camel_mbox_summary_build_from(struct _header_raw *header) -{ - GString *out = g_string_new("From "); - char *ret; - const char *tmp; - time_t thetime; - int offset; - struct tm tm; - - tmp = header_raw_find(&header, "Sender", NULL); - if (tmp == NULL) - tmp = header_raw_find(&header, "From", NULL); - if (tmp != NULL) { - struct _header_address *addr = header_address_decode(tmp); - - tmp = NULL; - if (addr) { - if (addr->type == HEADER_ADDRESS_NAME) { - g_string_append(out, addr->v.addr); - tmp = ""; - } - header_address_unref(addr); - } - } - if (tmp == NULL) { - g_string_append(out, "unknown@nodomain.now.au"); - } - - /* try use the received header to get the date */ - tmp = header_raw_find(&header, "Received", NULL); - if (tmp) { - tmp = strrchr(tmp, ';'); - if (tmp) - tmp++; - } - - /* if there isn't one, try the Date field */ - if (tmp == NULL) - tmp = header_raw_find(&header, "Date", NULL); - - thetime = header_decode_date(tmp, &offset); - - thetime += ((offset / 100) * (60 * 60)) + (offset % 100) * 60; - - /* a pseudo, but still bogus attempt at thread safing the function */ - /*memcpy(&tm, gmtime(&thetime), sizeof(tm));*/ - gmtime_r (&thetime, &tm); - - g_string_append_printf (out, " %s %s %2d %02d:%02d:%02d %4d\n", - tz_days[tm.tm_wday], tz_months[tm.tm_mon], - tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, - tm.tm_year + 1900); - - ret = out->str; - g_string_free (out, FALSE); - - return ret; -} - /* perform a full sync */ static int mbox_summary_sync_full(CamelMboxSummary *mbs, gboolean expunge, CamelFolderChangeInfo *changeinfo, CamelException *ex) diff --git a/camel/providers/local/camel-mbox-summary.h b/camel/providers/local/camel-mbox-summary.h index 0588a9a81b..dc64aa23fa 100644 --- a/camel/providers/local/camel-mbox-summary.h +++ b/camel/providers/local/camel-mbox-summary.h @@ -68,9 +68,6 @@ CamelMboxSummary *camel_mbox_summary_new (const char *filename, const char /* do we honour/use xstatus headers, etc */ void camel_mbox_summary_xstatus(CamelMboxSummary *mbs, int state); -/* generate a From line from headers */ -char *camel_mbox_summary_build_from(struct _header_raw *header); - /* build a new mbox from an existing mbox storing summary information */ int camel_mbox_summary_sync_mbox(CamelMboxSummary *cls, guint32 flags, CamelFolderChangeInfo *changeinfo, int fd, int fdout, CamelException *ex); diff --git a/camel/providers/local/camel-spool-summary.h b/camel/providers/local/camel-spool-summary.h index eda6e64fab..7813243a69 100644 --- a/camel/providers/local/camel-spool-summary.h +++ b/camel/providers/local/camel-spool-summary.h @@ -64,8 +64,6 @@ int camel_spool_summary_decode_x_evolution(CamelSpoolSummary *cls, const char *x /* utility functions - write headers to a file with optional X-Evolution header */ int camel_spool_summary_write_headers(int fd, struct _header_raw *header, char *xevline); -/* build a from line: FIXME: remove, or move to common code */ -char *camel_spool_summary_build_from(struct _header_raw *header); #endif /* ! _CAMEL_SPOOL_SUMMARY_H */ |