Mercurial > dovecot > core-2.2
changeset 1797:8cdd630e6b07 HEAD
Allow using data stack pool with imap_get_base_subject_cased()
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 03 Oct 2003 19:16:29 +0300 |
parents | 9d8ed97a807f |
children | 69c2ec6d198b |
files | src/lib-imap/imap-base-subject.c |
diffstat | 1 files changed, 11 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-imap/imap-base-subject.c Fri Oct 03 18:26:31 2003 +0300 +++ b/src/lib-imap/imap-base-subject.c Fri Oct 03 19:16:29 2003 +0300 @@ -13,31 +13,29 @@ const char *charset, void *context) { buffer_t *buf = context; - const char *utf8_str; + struct charset_translation *t; unsigned char *buf_data; - size_t i, used_size; + size_t pos, used_size; + pos = buffer_get_used_size(buf); if (charset == NULL) { /* It's ASCII. */ buffer_append(buf, data, size); } else { - t_push(); - utf8_str = charset_to_utf8_string(charset, NULL, data, - size, &size); - if (utf8_str == NULL) - size = 0; - else - buffer_append(buf, utf8_str, size); - t_pop(); + t = charset_to_utf8_begin(charset, NULL); + if (t != NULL) { + (void)charset_to_ucase_utf8(t, data, &size, buf); + charset_to_utf8_end(t); + } } if (size > 0) { /* @UNSAFE: uppercase it. Current draft specifies that we should touch only ASCII. */ buf_data = buffer_get_modifyable_data(buf, &used_size); - for (i = used_size - size; i < used_size; i++) { - if (buf_data[i] >= 'a' && buf_data[i] <= 'z') - buf_data[i] = buf_data[i] - 'a' + 'A'; + for (; pos < used_size; pos++) { + if (buf_data[pos] >= 'a' && buf_data[pos] <= 'z') + buf_data[pos] = buf_data[pos] - 'a' + 'A'; } }