Mercurial > dovecot > original-hg > dovecot-1.2
changeset 7856:3c8736e8f08d HEAD
imap_get_base_subject_cased(): Subject trailers weren't removed correctly.
Also cleaned up the code a bit.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 13 Jun 2008 03:53:37 +0300 |
parents | b5a6e6783786 |
children | 63df79ccfedb |
files | src/lib-imap/imap-base-subject.c |
diffstat | 1 files changed, 10 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-imap/imap-base-subject.c Fri Jun 13 02:19:53 2008 +0300 +++ b/src/lib-imap/imap-base-subject.c Fri Jun 13 03:53:37 2008 +0300 @@ -57,14 +57,14 @@ /* subj-trailer = "(fwd)" / WSP */ data = buffer_get_data(buf, &orig_size); - if (orig_size < 2) /* size includes trailing \0 */ + if (orig_size < 1) /* size includes trailing \0 */ return; - for (size = orig_size-2; size > start_pos; ) { - if (data[size] == ' ') + for (size = orig_size-1; size > start_pos; ) { + if (data[size-1] == ' ') size--; else if (size >= 5 && - memcmp(data + size - 5, "(fwd)", 5) == 0) { + memcmp(data + size - 5, "(FWD)", 5) == 0) { if (is_reply_or_forward_r != NULL) *is_reply_or_forward_r = TRUE; size -= 5; @@ -73,7 +73,7 @@ } } - if (size != orig_size-2) { + if (size != orig_size-1) { buffer_set_used_size(buf, size); buffer_append_c(buf, '\0'); } @@ -130,11 +130,11 @@ return ret; } - if (strncasecmp(data, "re", 2) == 0) + if (strncmp(data, "RE", 2) == 0) data += 2; - else if (strncasecmp(data, "fwd", 3) == 0) + else if (strncmp(data, "FWD", 3) == 0) data += 3; - else if (strncasecmp(data, "fw", 2) == 0) + else if (strncmp(data, "FW", 2) == 0) data += 2; else return ret; @@ -181,7 +181,7 @@ subj-fwd-trl = "]" */ data = buffer_get_data(buf, &size); - if (strncasecmp(data + *start_pos, "[fwd:", 5) != 0) + if (strncmp(data + *start_pos, "[FWD:", 5) != 0) return FALSE; if (data[size-2] != ']') @@ -249,5 +249,5 @@ /* (7) The resulting text is the "base subject" used in the SORT. */ - return (const char *)buffer_get_data(buf, NULL) + start_pos; + return (const char *)buf->data + start_pos; }