Ticket #1173: vformat.patch
| File vformat.patch, 3.2 KB (added by henrik, 3 years ago) |
|---|
-
src/xmlformat-common.c
227 227 vformat_attribute_add_value(attr, tmp); 228 228 } 229 229 230 void add_value_array(VFormatAttribute *attr, OSyncXMLField *xmlfield, const char *parameterNameArray[], int nParameters, const char *encoding) { 231 const char **parameterValueArray = malloc(nParameters*sizeof(char*)); 232 int n=-1; 233 int i; 234 for (i=0; i<nParameters; ++i) { 235 parameterValueArray[i]=osync_xmlfield_get_key_value(xmlfield, parameterNameArray[i]); 236 if (parameterValueArray[i]) n=i; 237 } 238 for (i=0; i<=n; ++i) { 239 const char *name = parameterNameArray[i]; 240 const char *tmp = parameterValueArray[i]; 241 if (needs_charset((unsigned char*)tmp)) 242 if (!vformat_attribute_has_param (attr, "CHARSET")) 243 vformat_attribute_add_param_with_value(attr, "CHARSET", "UTF-8"); 244 245 /* XXX: This one breaks unit test case: conv_vcard_evolution2_special 246 TODO: Combine this with converter extension/config ... e.g. if a mobile needs QP! 247 */ 248 if (needs_encoding((unsigned char*)tmp, encoding)) { 249 if (!vformat_attribute_has_param (attr, "ENCODING")) 250 vformat_attribute_add_param_with_value(attr, "ENCODING", encoding); 251 vformat_attribute_add_value_decoded(attr, tmp, strlen(tmp) + 1); 252 } else 253 vformat_attribute_add_value(attr, tmp); 254 255 } 256 free(parameterValueArray); 257 } 258 259 230 260 void add_values(VFormatAttribute *attr, OSyncXMLField *xmlfield, const char *encoding) 231 261 { 232 262 int i, c = osync_xmlfield_get_key_count(xmlfield); -
src/xmlformat-common.h
71 71 osync_bool needs_charset(const unsigned char *tmp); 72 72 73 73 void add_value(VFormatAttribute *attr, OSyncXMLField *xmlfield, const char *name, const char *encoding); 74 void add_value_array(VFormatAttribute *attr, OSyncXMLField *xmlfield, const char *parameterNameArray[], int nParameters, const char *encoding); 74 75 void add_values(VFormatAttribute *attr, OSyncXMLField *xmlfield, const char *encoding); 75 76 void add_values_from_nth_field_on(VFormatAttribute *attr, OSyncXMLField *xmlfield, const char *encoding, int nth); 76 77 -
src/xmlformat-vcard.c
1466 1466 return attr; 1467 1467 } 1468 1468 1469 static const char* xml_name_parameters[] = { "LastName", "FirstName", "Additional", "Prefix", "Suffix"}; 1470 1469 1471 static VFormatAttribute *handle_xml_name_attribute(VFormat *vcard, OSyncXMLField *xmlfield, const char *encoding) 1470 1472 { 1471 1473 osync_trace(TRACE_INTERNAL, "Handling name xml attribute"); 1472 1474 VFormatAttribute *attr = vformat_attribute_new(NULL, "N"); 1473 add_value(attr, xmlfield, "LastName", encoding); 1474 add_value(attr, xmlfield, "FirstName", encoding); 1475 add_value(attr, xmlfield, "Additional", encoding); 1476 add_value(attr, xmlfield, "Prefix", encoding); 1477 add_value(attr, xmlfield, "Suffix", encoding); 1475 add_value_array(attr, xmlfield, xml_name_parameters, 5, encoding); 1478 1476 vformat_add_attribute(vcard, attr); 1479 1477 return attr; 1480 1478 }
