From 38e0847e6c758f36bca2b8967367d36dcce5cab3 Mon Sep 17 00:00:00 2001 From: Rafal Michalski Date: Fri, 14 Oct 2011 16:01:22 +0200 Subject: [PATCH] obexd: Fix breaking long lines in vCard's fields Previously limit length for vCard's (vCard 2.1 with Quoted Printable encoding) property line was always set as 75 (QP_LINE_LEN), after processing each single subfield (for instance under ADR property). Thus it was not possible to reach limit equal to 0 (then breaking line is required) for all property subfields. This patch fixes that issue and length of first line, containing property parameters, is limited as well. --- obexd/plugins/vcard.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/obexd/plugins/vcard.c b/obexd/plugins/vcard.c index 743f19fdd..7cc799443 100644 --- a/obexd/plugins/vcard.c +++ b/obexd/plugins/vcard.c @@ -277,6 +277,8 @@ static gboolean utf8_select(const char *field) static void vcard_qp_print_encoded(GString *vcards, const char *desc, ...) { const char *field, *charset = ""; + const char *encoding = ";ENCODING=QUOTED-PRINTABLE"; + size_t limit, param_len; va_list ap; va_start(ap, desc); @@ -290,13 +292,16 @@ static void vcard_qp_print_encoded(GString *vcards, const char *desc, ...) va_end(ap); - vcard_printf(vcards, "%s;ENCODING=QUOTED-PRINTABLE%s:", desc, charset); + vcard_printf(vcards, "%s%s%s:", desc, encoding, charset); g_string_truncate(vcards, vcards->len - 2); + param_len = strlen(desc) + strlen(encoding) + strlen(charset) + 1; + limit = QP_LINE_LEN - param_len; + va_start(ap, desc); for (field = va_arg(ap, char *); field != NULL; ) { - size_t i, limit = QP_LINE_LEN, size = strlen(field); + size_t i, size = strlen(field); for (i = 0; i < size; ++i) { if (set_qp_encoding(field[i])) { -- 2.47.3