str = t_str_new(256);
str_printfa(str, "* %s (%s) \"%s\" ",
ctx->response_name, flagstr, ctx->sep);
- imap_quote_append_string(str, send_name);
+ imap_quote_append_string(str, send_name, FALSE);
client_send_line(ctx->client, str_c(str));
t_pop();
}
if (strcasecmp(list->name, "INBOX") == 0)
str_append(str, "INBOX");
else
- imap_quote_append_string(str, list->name);
+ imap_quote_append_string(str, list->name, FALSE);
client_send_line(client, str_c(str));
t_pop();
}
str = t_str_new(128);
str_append(str, "* STATUS ");
- imap_quote_append_string(str, mailbox);
+ imap_quote_append_string(str, mailbox, FALSE);
str_append(str, " (");
if (items & STATUS_MESSAGES)
if (name_len == 7 && memcasecmp(name, "charset", 7) == 0)
data->charset_found = TRUE;
- imap_quote_append(data->str, name, name_len);
+ imap_quote_append(data->str, name, name_len, TRUE);
str_append_c(data->str, ' ');
- imap_quote_append(data->str, value, value_len);
+ imap_quote_append(data->str, value, value_len, TRUE);
}
static void parse_content_transfer_encoding(const unsigned char *value,
str_append_c(str, '(');
while (addr != NULL) {
str_append_c(str, '(');
- imap_quote_append_string(str, addr->name);
+ imap_quote_append_string(str, addr->name, TRUE);
str_append_c(str, ' ');
- imap_quote_append_string(str, addr->route);
+ imap_quote_append_string(str, addr->route, TRUE);
str_append_c(str, ' ');
- imap_quote_append_string(str, addr->mailbox);
+ imap_quote_append_string(str, addr->mailbox, TRUE);
str_append_c(str, ' ');
- imap_quote_append_string(str, addr->domain);
+ imap_quote_append_string(str, addr->domain, TRUE);
str_append_c(str, ')');
addr = addr->next;
#include "imap-quote.h"
void imap_quote_append(string_t *str, const unsigned char *value,
- size_t value_len)
+ size_t value_len, int compress_lwsp)
{
size_t i, extra = 0;
int last_lwsp = TRUE, literal = FALSE, modify = FALSE;
break;
case ' ':
case '\t':
- if (last_lwsp) {
+ if (last_lwsp && compress_lwsp) {
modify = TRUE;
extra++;
}
break;
case ' ':
case '\t':
- if (!last_lwsp)
+ if (!last_lwsp || !compress_lwsp)
str_append_c(str, ' ');
last_lwsp = TRUE;
break;
t_push();
str = t_str_new(value_len + MAX_INT_STRLEN + 5);
- imap_quote_append(str, value, value_len);
+ imap_quote_append(str, value, value_len, TRUE);
ret = p_strndup(pool, str_data(str), str_len(str));
t_pop();
/* Append to existing string. */
void imap_quote_append(string_t *str, const unsigned char *value,
- size_t value_len);
+ size_t value_len, int compress_lwsp);
-#define imap_quote_append_string(str, value) \
- imap_quote_append(str, (const unsigned char *) value, (size_t)-1)
+#define imap_quote_append_string(str, value, compress_lwsp) \
+ imap_quote_append(str, (const unsigned char *) value, \
+ (size_t)-1, compress_lwsp)
#endif