Bug Summary

File:activesyncd/eas-daemon/libeas/eas-con-info-translator.c
Warning:line 630, column 6
Value stored to 'childNode' is never read

Annotated Source Code

1/*
2 * ActiveSync core protocol library
3 *
4 * Copyright © 2011 Intel Corporation.
5 *
6 * Authors: Mobica Ltd. <www.mobica.com>
7 *
8 * This file is provided under a dual Apache/LGPLv2.1 licence. When
9 * using or redistributing this file, you may do so under either
10 * licence.
11 *
12 *
13 * LGPLv2.1 LICENCE SUMMARY
14 *
15 * Copyright © Intel Corporation, dates as above.
16 *
17 * This library is free software; you can redistribute it and/or
18 * modify it under the terms of the GNU Lesser General Public
19 * License as published by the Free Software Foundation; either
20 * version 2.1 of the License, or (at your option) any later
21 * version.
22 *
23 * This library is distributed in the hope that it will be useful,
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
26 * Lesser General Public License for more details.
27 *
28 * You should have received a copy of the GNU Lesser General Public
29 * License along with this library; if not, write to the Free
30 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
31 * Boston, MA 02110-1301 USA
32 *
33 *
34 * APACHE LICENCE SUMMARY
35 *
36 * Copyright © Intel Corporation, dates as above.
37 *
38 * Licensed under the Apache License, Version 2.0 (the "License");
39 * you may not use this file except in compliance with the License.
40 * You may obtain a copy of the License at
41 *
42 * http://www.apache.org/licenses/LICENSE-2.0
43 *
44 * Unless required by applicable law or agreed to in writing, software
45 * distributed under the License is distributed on an "AS IS" BASIS,
46 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
47 * See the License for the specific language governing permissions and
48 * limitations under the License.
49 *
50 */
51
52#include "eas-con-info-translator.h"
53
54#include <libedataserver/eds-version.h>
55#if EDS_CHECK_VERSION(3,6,0)(3 > (3) || (3 == (3) && 26 > (6)) || (3 == (3)
&& 26 == (6)) && 2 >= (0))
56# include <libebook/libebook.h>
57#else
58# include <libebook/e-vcard.h>
59#endif
60#include <string.h>
61
62// EAS string value definitions
63#define EAS_ELEMENT_APPLICATIONDATA"ApplicationData" "ApplicationData"
64#define EAS_ELEMENT_FIRSTNAME"FirstName" "FirstName"
65#define EAS_ELEMENT_MIDDLENAME"MiddleName" "MiddleName"
66#define EAS_ELEMENT_LASTNAME"LastName" "LastName"
67#define EAS_ELEMENT_TITLE"Title" "Title"
68#define EAS_ELEMENT_SUFFIX"Suffix" "Suffix"
69
70#define EAS_ELEMENT_HOMECITY"HomeCity" "HomeCity"
71#define EAS_ELEMENT_HOMECOUNTRY"HomeCountry" "HomeCountry"
72#define EAS_ELEMENT_HOMEPOSTALCODE"HomePostalCode" "HomePostalCode"
73#define EAS_ELEMENT_HOMESTATE"HomeState" "HomeState"
74#define EAS_ELEMENT_HOMESTREET"HomeStreet" "HomeStreet"
75
76#define EAS_ELEMENT_BUSINESSCITY"BusinessCity" "BusinessCity"
77#define EAS_ELEMENT_BUSINESSCOUNTRY"BusinessCountry" "BusinessCountry"
78#define EAS_ELEMENT_BUSINESSPOSTALCODE"BusinessPostalCode" "BusinessPostalCode"
79#define EAS_ELEMENT_BUSINESSSTATE"BusinessState" "BusinessState"
80#define EAS_ELEMENT_BUSINESSSTREET"BusinessStreet" "BusinessStreet"
81
82#define EAS_ELEMENT_OTHERCITY"OtherCity" "OtherCity"
83#define EAS_ELEMENT_OTHERCOUNTRY"OtherCountry" "OtherCountry"
84#define EAS_ELEMENT_OTHERPOSTALCODE"OtherPostalCode" "OtherPostalCode"
85#define EAS_ELEMENT_OTHERSTATE"OtherState" "OtherState"
86#define EAS_ELEMENT_OTHERSTREET"OtherStreet" "OtherStreet"
87
88#define EAS_ELEMENT_BUSINESSPHONENUMBER"BusinessPhoneNumber" "BusinessPhoneNumber"
89#define EAS_ELEMENT_BUSINESS2PHONENUMBER"Business2PhoneNumber" "Business2PhoneNumber"
90#define EAS_ELEMENT_BUSINESSFAXNUMBER"BusinessFaxNumber" "BusinessFaxNumber"
91#define EAS_ELEMENT_HOMEPHONENUMBER"HomePhoneNumber" "HomePhoneNumber"
92#define EAS_ELEMENT_HOME2PHONENUMBER"Home2PhoneNumber" "Home2PhoneNumber"
93#define EAS_ELEMENT_HOMEFAXNUMBER"HomeFaxNumber" "HomeFaxNumber"
94#define EAS_ELEMENT_MOBILEPHONENUMBER"MobilePhoneNumber" "MobilePhoneNumber"
95#define EAS_ELEMENT_CARPHONENUMBER"CarPhoneNumber" "CarPhoneNumber"
96#define EAS_ELEMENT_RADIOPHONENUMBER"RadioPhoneNumber" "RadioPhoneNumber"
97
98#define EAS_ELEMENT_EMAIL1ADDRESS"Email1Address" "Email1Address"
99#define EAS_ELEMENT_EMAIL2ADDRESS"Email2Address" "Email2Address"
100#define EAS_ELEMENT_EMAIL3ADDRESS"Email3Address" "Email3Address"
101
102#define EAS_ELEMENT_BIRTHDAY"Birthday" "Birthday"
103#define EAS_ELEMENT_URL"WebPage" "WebPage"
104#define EAS_ELEMENT_NICKNAME"Alias" "Alias"
105#define EAS_ELEMENT_PAGER"PagerNumber" "PagerNumber"
106#define EAS_ELEMENT_ROLE"JobTitle" "JobTitle"
107#define EAS_ELEMENT_PHOTO"Picture" "Picture" /* VCard name: "PHOTO" */
108
109#define EAS_NAMESPACE_AIRSYNCBASE"airsyncbase:" "airsyncbase:"
110#define EAS_ELEMENT_BODY"Body" "Body"
111#define EAS_ELEMENT_BODY_TYPE"Type" "Type"
112#define EAS_ELEMENT_BODY_SIZE"EstimatedDataSize" "EstimatedDataSize"
113#define EAS_ELEMENT_BODY_TRUNCATED"Truncated" "Truncated"
114#define EAS_ELEMENT_BODY_DATA"Data" "Data"
115#define EAS_ELEMENT_BODY_PREVIEW"Preview" "Preview"
116
117#define EAS_ELEMENT_ANNIVERSARY"Anniversary" "Anniversary"
118#define EAS_ELEMENT_ASSISTANTNAME"AssistantName" "AssistantName"
119#define EAS_ELEMENT_ASSISTANTPHONENUMBER"AssistantPhoneNumber" "AssistantPhoneNumber"
120#define EAS_ELEMENT_DEPARTMENT"Department" "Department"
121#define EAS_ELEMENT_FILEAS"FileAs" "FileAs"
122#define EAS_ELEMENT_WEIGHTEDRANK"WeightedRank" "WeightedRank"
123
124#define EAS_ELEMENT_COMPANYNAME"CompanyName" "CompanyName"
125
126#define EAS_ELEMENT_SPOUSE"Spouse" "Spouse"
127
128#define EAS_ELEMENT_YOMIFIRSTNAME"YomiFirstName" "YomiFirstName"
129#define EAS_ELEMENT_YOMILASTNAME"YomiLastName" "YomiLastName"
130#define EAS_ELEMENT_YOMICOMPANYNAME"YomiCompanyName" "YomiCompanyName"
131
132#define EAS_ELEMENT_OFFICELOCATION"OfficeLocation" "OfficeLocation"
133#define EAS_ELEMENT_CATEGORIES"Categories" "Categories"
134#define EAS_ELEMENT_CATEGORY"Category" "Category"
135#define EAS_ELEMENT_CHILDREN"Children" "Children"
136#define EAS_ELEMENT_CHILD"Child" "Child"
137
138
139/* targetNamespace for Contacts2 (from AS contacts schema) */
140#define EAS_ELEMENT_CONTACTS2_CUSTOMERID"CustomerId" "CustomerId"
141#define EAS_ELEMENT_CONTACTS2_GOVERNMENTID"GovernmentId" "GovernmentId"
142#define EAS_ELEMENT_CONTACTS2_IMADDRESS"IMAddress" "IMAddress"
143#define EAS_ELEMENT_CONTACTS2_IMADDRESS2"IMAddress2" "IMAddress2"
144#define EAS_ELEMENT_CONTACTS2_IMADDRESS3"IMAddress3" "IMAddress3"
145#define EAS_ELEMENT_CONTACTS2_MANAGERNAME"ManagerName" "ManagerName"
146#define EAS_ELEMENT_CONTACTS2_COMPANYMAINPHONE"CompanyMainPhone" "CompanyMainPhone"
147#define EAS_ELEMENT_CONTACTS2_ACCOUNTNAME"AccountName" "AccountName"
148#define EAS_ELEMENT_CONTACTS2_NICKNAME"NickName" "NickName"
149#define EAS_ELEMENT_CONTACTS2_MMS"MMS" "MMS"
150
151#define EAS_EMAIL_START"<" "<"
152#define EAS_EMAIL_END">" ">"
153
154// helper function to trim a buffer based on a start string and an end string
155// eg. '"john.doe@work.com" <john.doe@work.com>' trims to 'john.doe@work.com'
156// where start string is "<" and end string is ">"
157// returns a newly allocated string which must be freed
158static gchar *extract_addrspec(const gchar* buf)
159{
160 gchar *start, *end;
161
162 /* FIXME: This will behave incorrectly given an address like
163 "Foo<bar" <foo@bar.com>
164 ... but at least it no longer segfaults. */
165 start = strchr(buf, '<')(__extension__ (__builtin_constant_p ('<') && !__builtin_constant_p
(buf) && ('<') == '\0' ? (char *) __rawmemchr (buf
, '<') : __builtin_strchr (buf, '<')))
;
166 if (!start)
167 return g_strdup(buf);
168
169 start++;
170 end = strchr(start, '>')(__extension__ (__builtin_constant_p ('>') && !__builtin_constant_p
(start) && ('>') == '\0' ? (char *) __rawmemchr (
start, '>') : __builtin_strchr (start, '>')))
;
171 if (!end)
172 return g_strdup(buf);
173
174 return g_strndup(start, end - start);
175}
176
177static void
178add_email_attr_value (EVCardAttribute *attr, xmlNodePtr node, const gchar *sought)
179{
180 xmlNodePtr n = node;
181 gchar *value = NULL((void*)0);
182
183 // find sought value
184 while (n) {
185 if (!xmlStrcmp ( (const xmlChar*) (n->name), (const xmlChar *) sought)) {
186 value = (gchar *) xmlNodeGetContent (n);
187 break;
188 }
189 n = n->next;
190 }
191
192 if(value!=NULL((void*)0)){
193 gchar* trimmedAddress = extract_addrspec(value);
194 e_vcard_attribute_add_value (attr, trimmedAddress); // e_vcard copies value
195 g_free(trimmedAddress);
196 }else{
197 /* if sought not found (i.e. value = NULL) then e_vcard_attribute_add_value()
198 inserts a semicolon otherwise it adds the value*/
199 e_vcard_attribute_add_value (attr, value); // e_vcard copies value
200 }
201
202 xmlFree (value);
203}
204
205static void
206add_attr_value (EVCardAttribute *attr, xmlNodePtr node, const gchar *sought)
207{
208 xmlNodePtr n = node;
209 gchar *value = NULL((void*)0);
210
211 // find sought value
212 while (n) {
213 if (!xmlStrcmp ( (const xmlChar*) (n->name), (const xmlChar *) sought)) {
214 value = (gchar *) xmlNodeGetContent (n);
215 break;
216 }
217 n = n->next;
218 }
219
220 /* if sought not found (i.e. value = NULL) then e_vcard_attribute_add_value()
221 inserts a semicolon otherwise it adds the value*/
222 e_vcard_attribute_add_value (attr, value); // e_vcard copies value
223 xmlFree (value);
224}
225
226/** strip time if zero, otherwise convert back to vCard 3.0 date-time */
227static void add_bday_attr_value (EVCardAttribute *attr, xmlNodePtr node)
228{
229 gchar* value = (gchar *) xmlNodeGetContent (node);
230 if (value) {
231 /* inverse operation of set_xml_contact_date():
232 YYYY-MM-DDT00:00:00.000Z -> YYYY-MM-DD (strip empty time)
233 YYYY-MM-DDThh:mm:ss.mmmZ -> YYYY-MM-DDThh:mm:ssZ */
234 gchar* tmp = strchr (value, 'T')(__extension__ (__builtin_constant_p ('T') && !__builtin_constant_p
(value) && ('T') == '\0' ? (char *) __rawmemchr (value
, 'T') : __builtin_strchr (value, 'T')))
;
235 if (tmp) {
236 if (!strcmp (tmp, "T00:00:00.000Z")__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(tmp) && __builtin_constant_p ("T00:00:00.000Z") &&
(__s1_len = __builtin_strlen (tmp), __s2_len = __builtin_strlen
("T00:00:00.000Z"), (!((size_t)(const void *)((tmp) + 1) - (
size_t)(const void *)(tmp) == 1) || __s1_len >= 4) &&
(!((size_t)(const void *)(("T00:00:00.000Z") + 1) - (size_t)
(const void *)("T00:00:00.000Z") == 1) || __s2_len >= 4)) ?
__builtin_strcmp (tmp, "T00:00:00.000Z") : (__builtin_constant_p
(tmp) && ((size_t)(const void *)((tmp) + 1) - (size_t
)(const void *)(tmp) == 1) && (__s1_len = __builtin_strlen
(tmp), __s1_len < 4) ? (__builtin_constant_p ("T00:00:00.000Z"
) && ((size_t)(const void *)(("T00:00:00.000Z") + 1) -
(size_t)(const void *)("T00:00:00.000Z") == 1) ? __builtin_strcmp
(tmp, "T00:00:00.000Z") : (__extension__ ({ const unsigned char
*__s2 = (const unsigned char *) (const char *) ("T00:00:00.000Z"
); int __result = (((const unsigned char *) (const char *) (tmp
))[0] - __s2[0]); if (__s1_len > 0 && __result == 0
) { __result = (((const unsigned char *) (const char *) (tmp)
)[1] - __s2[1]); if (__s1_len > 1 && __result == 0
) { __result = (((const unsigned char *) (const char *) (tmp)
)[2] - __s2[2]); if (__s1_len > 2 && __result == 0
) __result = (((const unsigned char *) (const char *) (tmp))[
3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("T00:00:00.000Z"
) && ((size_t)(const void *)(("T00:00:00.000Z") + 1) -
(size_t)(const void *)("T00:00:00.000Z") == 1) && (__s2_len
= __builtin_strlen ("T00:00:00.000Z"), __s2_len < 4) ? (__builtin_constant_p
(tmp) && ((size_t)(const void *)((tmp) + 1) - (size_t
)(const void *)(tmp) == 1) ? __builtin_strcmp (tmp, "T00:00:00.000Z"
) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned
char *) (const char *) (tmp); int __result = (((const unsigned
char *) (const char *) ("T00:00:00.000Z"))[0] - __s2[0]); if
(__s2_len > 0 && __result == 0) { __result = (((const
unsigned char *) (const char *) ("T00:00:00.000Z"))[1] - __s2
[1]); if (__s2_len > 1 && __result == 0) { __result
= (((const unsigned char *) (const char *) ("T00:00:00.000Z"
))[2] - __s2[2]); if (__s2_len > 2 && __result == 0
) __result = (((const unsigned char *) (const char *) ("T00:00:00.000Z"
))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (tmp,
"T00:00:00.000Z")))); })
)
237 *tmp = 0;
238 else if ((tmp = strchr (value, '.')(__extension__ (__builtin_constant_p ('.') && !__builtin_constant_p
(value) && ('.') == '\0' ? (char *) __rawmemchr (value
, '.') : __builtin_strchr (value, '.')))
) != NULL((void*)0)) {
239 *tmp = 'Z';
240 tmp++;
241 *tmp = 0;
242 }
243 }
244 e_vcard_attribute_add_value (attr, value);
245 xmlFree (value);
246 }
247}
248
249static void add_name_attr_values (EVCardAttribute *attr, xmlNodePtr node)
250{
251 add_attr_value (attr, node, EAS_ELEMENT_LASTNAME"LastName");
252 add_attr_value (attr, node, EAS_ELEMENT_FIRSTNAME"FirstName");
253 add_attr_value (attr, node, EAS_ELEMENT_MIDDLENAME"MiddleName");
254 /* Prefix not supported add ";" instead */
255 e_vcard_attribute_add_value (attr, NULL((void*)0));
256 add_attr_value (attr, node, EAS_ELEMENT_SUFFIX"Suffix");
257}
258
259static void add_home_address_attr_values (EVCardAttribute *attr, xmlNodePtr node)
260{
261 add_attr_value (attr, node, "POBox");
262 add_attr_value (attr, node, "extended");
263 add_attr_value (attr, node, EAS_ELEMENT_HOMESTREET"HomeStreet");
264 add_attr_value (attr, node, EAS_ELEMENT_HOMECITY"HomeCity");
265 add_attr_value (attr, node, EAS_ELEMENT_HOMESTATE"HomeState");
266 add_attr_value (attr, node, EAS_ELEMENT_HOMEPOSTALCODE"HomePostalCode");
267 add_attr_value (attr, node, EAS_ELEMENT_HOMECOUNTRY"HomeCountry");
268}
269
270static void add_business_address_attr_values (EVCardAttribute *attr, xmlNodePtr node)
271{
272 add_attr_value (attr, node, "POBox");
273 add_attr_value (attr, node, "extended");
274 add_attr_value (attr, node, EAS_ELEMENT_BUSINESSSTREET"BusinessStreet");
275 add_attr_value (attr, node, EAS_ELEMENT_BUSINESSCITY"BusinessCity");
276 add_attr_value (attr, node, EAS_ELEMENT_BUSINESSSTATE"BusinessState");
277 add_attr_value (attr, node, EAS_ELEMENT_BUSINESSPOSTALCODE"BusinessPostalCode");
278 add_attr_value (attr, node, EAS_ELEMENT_BUSINESSCOUNTRY"BusinessCountry");
279}
280
281static void add_other_address_attr_values (EVCardAttribute *attr, xmlNodePtr node)
282{
283 add_attr_value (attr, node, "POBox");
284 add_attr_value (attr, node, "extended");
285 add_attr_value (attr, node, EAS_ELEMENT_OTHERSTREET"OtherStreet");
286 add_attr_value (attr, node, EAS_ELEMENT_OTHERCITY"OtherCity");
287 add_attr_value (attr, node, EAS_ELEMENT_OTHERSTATE"OtherState");
288 add_attr_value (attr, node, EAS_ELEMENT_OTHERPOSTALCODE"OtherPostalCode");
289 add_attr_value (attr, node, EAS_ELEMENT_OTHERCOUNTRY"OtherCountry");
290}
291
292gchar* eas_con_info_translator_parse_response (xmlNodePtr node,
293 gchar* server_id)
294{
295 // Variable for the return value
296 gchar* result = NULL((void*)0);
297 EVCard *vcard = NULL((void*)0);
298 EasItemInfo* conInfo = NULL((void*)0);
299
300
301
302 xmlNodePtr n = node;
303
304 gboolean nameElements = FALSE(0);
305 gboolean homeAddrElements = FALSE(0);
306 gboolean workAddrElements = FALSE(0);
307 gboolean otherAddrElements = FALSE(0);
308 gboolean titleElements = FALSE(0);
309 gboolean orgElements = FALSE(0);
310
311 g_debug ("eas_con_info_translator_parse_response ++");
312
313 // vCard object
314 vcard = e_vcard_new();
315
316 for (n = n->children; n; n = n->next) {
317 if (n->type == XML_ELEMENT_NODE) {
318 const gchar* name = (const gchar*) (n->name);
319
320 //
321 // Name elements
322 //
323 if ( ( (g_strcmp0 (name, EAS_ELEMENT_FIRSTNAME"FirstName") == 0) ||
324 (g_strcmp0 (name, EAS_ELEMENT_MIDDLENAME"MiddleName") == 0) ||
325 (g_strcmp0 (name, EAS_ELEMENT_LASTNAME"LastName") == 0) ||
326 (g_strcmp0 (name, EAS_ELEMENT_SUFFIX"Suffix") == 0))
327 && (nameElements == FALSE(0))) {
328 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_N"N");
329 add_name_attr_values (attr, node->children);
330 e_vcard_add_attribute (vcard, attr);
331 nameElements = TRUE(!(0));
332
333 } else if (g_strcmp0 (name, EAS_ELEMENT_TITLE"Title") == 0 &&
334 (titleElements == FALSE(0))) {
335 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_TITLE"TITLE");
336 add_attr_value (attr, node->children, EAS_ELEMENT_TITLE"Title");
337 e_vcard_add_attribute (vcard, attr);
338 titleElements = TRUE(!(0));
339 }
340 //
341 // Home Address elements
342 //
343 else if ( ( (g_strcmp0 (name, EAS_ELEMENT_HOMECITY"HomeCity") == 0) ||
344 (g_strcmp0 (name, EAS_ELEMENT_HOMECOUNTRY"HomeCountry") == 0) ||
345 (g_strcmp0 (name, EAS_ELEMENT_HOMEPOSTALCODE"HomePostalCode") == 0) ||
346 (g_strcmp0 (name, EAS_ELEMENT_HOMESTATE"HomeState") == 0) ||
347 (g_strcmp0 (name, EAS_ELEMENT_HOMESTREET"HomeStreet") == 0))
348 && (homeAddrElements == FALSE(0))) {
349 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
350 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_ADR"ADR");
351
352 add_home_address_attr_values (attr, node->children);
353 e_vcard_add_attribute (vcard, attr);
354 e_vcard_attribute_add_param_with_value (attr, param, "HOME");
355 homeAddrElements = TRUE(!(0));
356 }
357
358 //
359 // Business Address elements
360 //
361 else if ( ( (g_strcmp0 (name, EAS_ELEMENT_BUSINESSCITY"BusinessCity") == 0) ||
362 (g_strcmp0 (name, EAS_ELEMENT_BUSINESSCOUNTRY"BusinessCountry") == 0) ||
363 (g_strcmp0 (name, EAS_ELEMENT_BUSINESSPOSTALCODE"BusinessPostalCode") == 0) ||
364 (g_strcmp0 (name, EAS_ELEMENT_BUSINESSSTATE"BusinessState") == 0) ||
365 (g_strcmp0 (name, EAS_ELEMENT_BUSINESSSTREET"BusinessStreet") == 0))
366 && (workAddrElements == FALSE(0))) {
367 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
368 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_ADR"ADR");
369
370 add_business_address_attr_values (attr, node->children);
371 e_vcard_add_attribute (vcard, attr);
372 e_vcard_attribute_add_param_with_value (attr, param, "WORK");
373 workAddrElements = TRUE(!(0));
374 }
375
376 //
377 // Other Address elements
378 //
379 else if ( ( (g_strcmp0 (name, EAS_ELEMENT_OTHERCITY"OtherCity") == 0) ||
380 (g_strcmp0 (name, EAS_ELEMENT_OTHERCOUNTRY"OtherCountry") == 0) ||
381 (g_strcmp0 (name, EAS_ELEMENT_OTHERPOSTALCODE"OtherPostalCode") == 0) ||
382 (g_strcmp0 (name, EAS_ELEMENT_OTHERSTATE"OtherState") == 0) ||
383 (g_strcmp0 (name, EAS_ELEMENT_OTHERSTREET"OtherStreet") == 0))
384 && (otherAddrElements == FALSE(0))) {
385 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
386 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_ADR"ADR");
387
388 add_other_address_attr_values (attr, node->children);
389 e_vcard_add_attribute (vcard, attr);
390 e_vcard_attribute_add_param_with_value (attr, param, "OTHER");
391 otherAddrElements = TRUE(!(0));
392 }
393
394 //
395 // Contact number elements
396 //
397 else if (g_strcmp0 (name, EAS_ELEMENT_BUSINESSPHONENUMBER"BusinessPhoneNumber") == 0) {
398 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
399 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_TEL"TEL");
400
401 e_vcard_add_attribute (vcard, attr);
402 add_attr_value (attr, node->children, EAS_ELEMENT_BUSINESSPHONENUMBER"BusinessPhoneNumber");
403 e_vcard_attribute_add_param_with_value (attr, param, "WORK");
404 } else if (g_strcmp0 (name, EAS_ELEMENT_BUSINESS2PHONENUMBER"Business2PhoneNumber") == 0) {
405 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
406 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_TEL"TEL");
407
408 e_vcard_add_attribute (vcard, attr);
409 add_attr_value (attr, node->children, EAS_ELEMENT_BUSINESS2PHONENUMBER"Business2PhoneNumber");
410 e_vcard_attribute_add_param_with_value (attr, param, "WORK");
411 } else if (g_strcmp0 (name, EAS_ELEMENT_BUSINESSFAXNUMBER"BusinessFaxNumber") == 0) {
412 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
413 EVCardAttributeParam *param2 = e_vcard_attribute_param_new ("TYPE");
414 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_TEL"TEL");
415
416 e_vcard_add_attribute (vcard, attr);
417 add_attr_value (attr, node->children, EAS_ELEMENT_BUSINESSFAXNUMBER"BusinessFaxNumber");
418 e_vcard_attribute_add_param_with_value (attr, param, "WORK");
419 e_vcard_attribute_add_param_with_value (attr, param2, "FAX");
420 } else if (g_strcmp0 (name, EAS_ELEMENT_HOMEPHONENUMBER"HomePhoneNumber") == 0) {
421 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
422 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_TEL"TEL");
423
424 e_vcard_add_attribute (vcard, attr);
425 add_attr_value (attr, node->children, EAS_ELEMENT_HOMEPHONENUMBER"HomePhoneNumber");
426 e_vcard_attribute_add_param_with_value (attr, param, "HOME");
427 } else if (g_strcmp0 (name, EAS_ELEMENT_HOME2PHONENUMBER"Home2PhoneNumber") == 0) {
428 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
429 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_TEL"TEL");
430
431 e_vcard_add_attribute (vcard, attr);
432 add_attr_value (attr, node->children, EAS_ELEMENT_HOME2PHONENUMBER"Home2PhoneNumber");
433 e_vcard_attribute_add_param_with_value (attr, param, "HOME");
434 } else if (g_strcmp0 (name, EAS_ELEMENT_HOMEFAXNUMBER"HomeFaxNumber") == 0) {
435 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
436 EVCardAttributeParam *param2 = e_vcard_attribute_param_new ("TYPE");
437 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_TEL"TEL");
438
439 e_vcard_add_attribute (vcard, attr);
440 add_attr_value (attr, node->children, EAS_ELEMENT_HOMEFAXNUMBER"HomeFaxNumber");
441 e_vcard_attribute_add_param_with_value (attr, param, "HOME");
442 e_vcard_attribute_add_param_with_value (attr, param2, "FAX");
443 } else if (g_strcmp0 (name, EAS_ELEMENT_MOBILEPHONENUMBER"MobilePhoneNumber") == 0) {
444 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
445 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_TEL"TEL");
446
447 e_vcard_add_attribute (vcard, attr);
448 add_attr_value (attr, node->children, EAS_ELEMENT_MOBILEPHONENUMBER"MobilePhoneNumber");
449 e_vcard_attribute_add_param_with_value (attr, param, "CELL");
450 } else if (g_strcmp0 (name, EAS_ELEMENT_CARPHONENUMBER"CarPhoneNumber") == 0) {
451 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
452 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_TEL"TEL");
453
454 e_vcard_add_attribute (vcard, attr);
455 add_attr_value (attr, node->children, EAS_ELEMENT_CARPHONENUMBER"CarPhoneNumber");
456 e_vcard_attribute_add_param_with_value (attr, param, "CAR");
457 } else if (g_strcmp0 (name, EAS_ELEMENT_RADIOPHONENUMBER"RadioPhoneNumber") == 0) {
458 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
459 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_TEL"TEL");
460
461 e_vcard_add_attribute (vcard, attr);
462 add_attr_value (attr, node->children, EAS_ELEMENT_RADIOPHONENUMBER"RadioPhoneNumber");
463 e_vcard_attribute_add_param_with_value (attr, param, EVC_X_RADIO"X-EVOLUTION-RADIO" /* X-EVOLUTION-RADIO */);
464 } else if (g_strcmp0 (name, EAS_ELEMENT_PAGER"PagerNumber") == 0) {
465 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
466 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_TEL"TEL");
467
468 e_vcard_add_attribute (vcard, attr);
469 add_attr_value (attr, node->children, EAS_ELEMENT_PAGER"PagerNumber");
470 e_vcard_attribute_add_param_with_value (attr, param, "PAGER");
471 }
472
473 //
474 // Email
475 //
476
477 else if (g_strcmp0 (name, EAS_ELEMENT_EMAIL1ADDRESS"Email1Address") == 0) {
478 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
479 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_EMAIL"EMAIL");
480
481 e_vcard_add_attribute (vcard, attr);
482 add_email_attr_value (attr, node->children, EAS_ELEMENT_EMAIL1ADDRESS"Email1Address");
483 e_vcard_attribute_add_param_with_value (attr, param, "internet");
484 } else if (g_strcmp0 (name, EAS_ELEMENT_EMAIL2ADDRESS"Email2Address") == 0) {
485 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
486 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_EMAIL"EMAIL");
487
488 e_vcard_add_attribute (vcard, attr);
489 add_email_attr_value (attr, node->children, EAS_ELEMENT_EMAIL2ADDRESS"Email2Address");
490 e_vcard_attribute_add_param_with_value (attr, param, "internet");
491 } else if (g_strcmp0 (name, EAS_ELEMENT_EMAIL3ADDRESS"Email3Address") == 0) {
492 EVCardAttributeParam *param = e_vcard_attribute_param_new ("TYPE");
493 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_EMAIL"EMAIL");
494
495 e_vcard_add_attribute (vcard, attr);
496 add_email_attr_value (attr, node->children, EAS_ELEMENT_EMAIL3ADDRESS"Email3Address");
497 e_vcard_attribute_add_param_with_value (attr, param, "internet");
498 }
499
500 //
501 // Birthday
502 //
503 else if (g_strcmp0 (name, EAS_ELEMENT_BIRTHDAY"Birthday") == 0) {
504 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_BDAY"BDAY");
505
506 e_vcard_add_attribute (vcard, attr);
507 add_bday_attr_value (attr, n);
508 }
509
510 //
511 // URL
512 //
513 else if (g_strcmp0 (name, EAS_ELEMENT_URL"WebPage") == 0) {
514 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_URL"URL");
515
516 e_vcard_add_attribute (vcard, attr);
517 add_attr_value (attr, node->children, EAS_ELEMENT_URL"WebPage");
518 }
519
520 //
521 // Nickname
522 //
523 else if (g_strcmp0 (name, EAS_ELEMENT_CONTACTS2_NICKNAME"NickName") == 0) {
524 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_NICKNAME"NICKNAME");
525
526 e_vcard_add_attribute (vcard, attr);
527 add_attr_value (attr, node->children, EAS_ELEMENT_CONTACTS2_NICKNAME"NickName");
528 }
529
530 //
531 // Org
532 //
533 else if ( ( g_strcmp0 (name, EAS_ELEMENT_COMPANYNAME"CompanyName") == 0 ||
534 g_strcmp0 (name, EAS_ELEMENT_DEPARTMENT"Department") == 0 ||
535 g_strcmp0 (name, EAS_ELEMENT_OFFICELOCATION"OfficeLocation") == 0 )
536 && !orgElements) {
537 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_ORG"ORG");
538
539 e_vcard_add_attribute (vcard, attr);
540 add_attr_value (attr, node->children, EAS_ELEMENT_COMPANYNAME"CompanyName");
541 add_attr_value (attr, node->children, EAS_ELEMENT_DEPARTMENT"Department");
542 add_attr_value (attr, node->children, EAS_ELEMENT_OFFICELOCATION"OfficeLocation");
543 orgElements = TRUE(!(0));
544 }
545
546 //
547 // Role
548 //
549 else if (g_strcmp0 (name, EAS_ELEMENT_ROLE"JobTitle") == 0) {
550 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_ROLE"ROLE");
551
552 e_vcard_add_attribute (vcard, attr);
553 add_attr_value (attr, node->children, EAS_ELEMENT_ROLE"JobTitle");
554 }
555
556 else if (g_strcmp0 (name, EAS_ELEMENT_SPOUSE"Spouse") == 0) {
557 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_X_SPOUSE"X-EVOLUTION-SPOUSE");
558
559 e_vcard_add_attribute (vcard, attr);
560 add_attr_value (attr, node->children, EAS_ELEMENT_SPOUSE"Spouse");
561 }
562
563 //
564 // Photo
565 //
566 else if (g_strcmp0 (name, EAS_ELEMENT_PHOTO"Picture") == 0) {
567 EVCardAttributeParam *param = e_vcard_attribute_param_new ("ENCODING");
568 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_PHOTO"PHOTO");
569
570 e_vcard_add_attribute (vcard, attr);
571 add_attr_value (attr, node->children, EAS_ELEMENT_PHOTO"Picture");
572 e_vcard_attribute_add_param_with_value (attr, param, "b");
573 }
574
575 //
576 // FileAs
577 //
578 else if (g_strcmp0 (name, EAS_ELEMENT_FILEAS"FileAs") == 0) {
579 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_X_FILE_AS"X-EVOLUTION-FILE-AS");
580
581 e_vcard_add_attribute (vcard, attr);
582 add_attr_value (attr, node->children, EAS_ELEMENT_FILEAS"FileAs");
583 }
584
585 //
586 // MANAGER
587 //
588 else if (g_strcmp0 (name, EAS_ELEMENT_CONTACTS2_MANAGERNAME"ManagerName") == 0) {
589 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_X_MANAGER"X-EVOLUTION-MANAGER");
590
591 e_vcard_add_attribute (vcard, attr);
592 add_attr_value (attr, node->children, EAS_ELEMENT_CONTACTS2_MANAGERNAME"ManagerName");
593 }
594
595 //
596 // ASSISTANT
597 //
598 else if (g_strcmp0 (name, EAS_ELEMENT_ASSISTANTNAME"AssistantName") == 0) {
599 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_X_ASSISTANT"X-EVOLUTION-ASSISTANT");
600
601 e_vcard_add_attribute (vcard, attr);
602 add_attr_value (attr, node->children, EAS_ELEMENT_ASSISTANTNAME"AssistantName");
603 }
604
605 else if (g_strcmp0 (name, EAS_ELEMENT_ANNIVERSARY"Anniversary") == 0) {
606 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_X_ANNIVERSARY"X-EVOLUTION-ANNIVERSARY");
607
608 e_vcard_add_attribute (vcard, attr);
609 add_attr_value (attr, node->children, EAS_ELEMENT_ANNIVERSARY"Anniversary");
610 }
611
612 //
613 // Note
614 //
615 else if (g_strcmp0 (name, EAS_ELEMENT_BODY"Body") == 0) {
616 xmlNodePtr subNode = NULL((void*)0);
617 for (subNode = n->children; subNode; subNode = subNode->next) {
618 if (subNode->type == XML_ELEMENT_NODE && !g_strcmp0 ( (gchar*) subNode->name, EAS_ELEMENT_BODY_DATA"Data")) {
619 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_NOTE"NOTE");
620 e_vcard_add_attribute (vcard, attr);
621 add_attr_value (attr, subNode, EAS_ELEMENT_BODY_DATA"Data");
622 break;
623 }
624 }
625 } else if (g_strcmp0 (name, EAS_ELEMENT_CATEGORIES"Categories") == 0) {
626 xmlNodePtr childNode = NULL((void*)0);
627 EVCardAttribute *attr = e_vcard_attribute_new (NULL((void*)0), EVC_CATEGORIES"CATEGORIES");
628 e_vcard_add_attribute (vcard, attr);
629
630 childNode = n;
Value stored to 'childNode' is never read
631 for (childNode = n->children; childNode ; childNode = childNode->next)
632 if (!g_strcmp0 ( (const char *) childNode->name, (const char *) EAS_ELEMENT_CATEGORY"Category")) {
633 gchar * value = (gchar *) xmlNodeGetContent (childNode);
634 e_vcard_attribute_add_value (attr, value);
635 xmlFree (value);
636 }
637 }
638 }
639 }
640
641 conInfo = eas_item_info_new();
642 conInfo->server_id = (gchar*) server_id;
643 conInfo->data = e_vcard_to_string (vcard, EVC_FORMAT_VCARD_30); // no need to duplicate, e_vcard allocates memory
644 g_object_unref (G_OBJECT (vcard)((((GObject*) g_type_check_instance_cast ((GTypeInstance*) ((
vcard)), (((GType) ((20) << (2))))))))
);
645 if (!eas_item_info_serialise (conInfo, &result)) {
646 // TODO: log error
647 result = NULL((void*)0);
648 }
649 // Free the EasItemInfo GObject
650 g_object_unref (conInfo);
651 g_debug ("eas_con_info_translator_parse_response --");
652 return result;
653}
654
655/** known TYPE values */
656enum Type {
657 OTHER,
658 HOME,
659 WORK,
660 CAR,
661 RADIO,
662 CELL,
663 VOICE,
664 FAX,
665 PAGER,
666};
667
668static int
669string_to_type (const gchar *type)
670{
671 static struct map {
672 const gchar *name;
673 enum Type type;
674 } map[] = {
675#define entry(_x) { #_x, _x }
676 entry(OTHER),
677 entry(HOME),
678 entry(WORK),
679 entry(CAR),
680 { EVC_X_RADIO"X-EVOLUTION-RADIO", RADIO },
681 entry(CELL),
682 entry(VOICE),
683 entry(FAX),
684 entry(PAGER),
685#undef entry
686 { NULL((void*)0) }
687 },
688 * entry;
689
690 for (entry = map; type && entry->name; entry++) {
691 // match literally or with enclosing quotation marks;
692 // libebook writes TYPE="X-EVOLUTION-RADIO"
693 size_t len = strlen(type);
694 if (!g_ascii_strcasecmp (type, entry->name) ||
695 (len == strlen(entry->name) + 2 &&
696 type[0] == '"' &&
697 type[len - 1] == '"' &&
698 !g_ascii_strncasecmp (type + 1, entry->name, strlen(entry->name))))
699 return 1 << entry->type;
700 }
701 return 0;
702}
703
704enum TypeMask {
705#define entry(_x) _x ## _MASK = (1 << _x)
706 entry(OTHER),
707 entry(HOME),
708 entry(WORK),
709 entry(CAR),
710 entry(RADIO),
711 entry(CELL),
712 entry(VOICE),
713 entry(FAX),
714 entry(PAGER)
715#undef entry
716};
717
718/** gather bit map of types, regardless whether short form (TEL;WORK;VOICE)
719 or long form (TEL;TYPE=WORK,VOICE) is used */
720static int
721attribute_get_type (EVCardAttribute *attr)
722{
723 int ret = 0;
724 GList *params = e_vcard_attribute_get_params (attr);
725 GList *p;
726 int match;
727
728 for (p = params; p; p = p->next) {
729 EVCardAttributeParam *param = p->data;
730 const gchar *name = e_vcard_attribute_param_get_name (param);
731 if (name && !g_ascii_strcasecmp (name, "TYPE")) {
732 GList *values = e_vcard_attribute_param_get_values (param);
733 GList *v;
734 for (v = values; v; v = v->next) {
735 const gchar *value = v->data;
736 match = string_to_type (value);
737 ret |= match;
738 }
739 } else {
740 match = string_to_type (name);
741 ret |= match;
742 }
743 }
744 return ret;
745}
746
747static const char *
748attribute_get_nth_value (EVCardAttribute *attr, int nth)
749{
750 GList *values = NULL((void*)0);
751
752 values = e_vcard_attribute_get_values (attr);
753 if (!values)
754 return NULL((void*)0);
755
756 return g_list_nth_data (values, nth);
757}
758
759/* Check if a contact field allready set in the applicationdata xml children*/
760static gboolean
761is_element_set (xmlNodePtr appData, const gchar* name)
762{
763 xmlNodePtr node = NULL((void*)0);
764 g_return_val_if_fail (appData != NULL && name != NULL, FALSE)do{ if (__builtin_expect (__extension__ ({ int _g_boolean_var_
; if ((appData != ((void*)0) && name != ((void*)0))) _g_boolean_var_
= 1; else _g_boolean_var_ = 0; _g_boolean_var_; }), 1)) { } else
{ g_return_if_fail_warning ("libeas", ((const char*) (__func__
)), "appData != NULL && name != NULL"); return ((0));
}; }while (0)
;
765 node = appData;
766 for (node = appData->children; node ; node = node->next)
767 if (!strcmp ( (char*) node->name, name)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
((char*) node->name) && __builtin_constant_p (name
) && (__s1_len = __builtin_strlen ((char*) node->name
), __s2_len = __builtin_strlen (name), (!((size_t)(const void
*)(((char*) node->name) + 1) - (size_t)(const void *)((char
*) node->name) == 1) || __s1_len >= 4) && (!((size_t
)(const void *)((name) + 1) - (size_t)(const void *)(name) ==
1) || __s2_len >= 4)) ? __builtin_strcmp ((char*) node->
name, name) : (__builtin_constant_p ((char*) node->name) &&
((size_t)(const void *)(((char*) node->name) + 1) - (size_t
)(const void *)((char*) node->name) == 1) && (__s1_len
= __builtin_strlen ((char*) node->name), __s1_len < 4)
? (__builtin_constant_p (name) && ((size_t)(const void
*)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp
((char*) node->name, name) : (__extension__ ({ const unsigned
char *__s2 = (const unsigned char *) (const char *) (name); int
__result = (((const unsigned char *) (const char *) ((char*)
node->name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ((char*) node->name))[1] - __s2[1]); if (__s1_len
> 1 && __result == 0) { __result = (((const unsigned
char *) (const char *) ((char*) node->name))[2] - __s2[2]
); if (__s1_len > 2 && __result == 0) __result = (
((const unsigned char *) (const char *) ((char*) node->name
))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (
name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s2_len = __builtin_strlen
(name), __s2_len < 4) ? (__builtin_constant_p ((char*) node
->name) && ((size_t)(const void *)(((char*) node->
name) + 1) - (size_t)(const void *)((char*) node->name) ==
1) ? __builtin_strcmp ((char*) node->name, name) : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) ((char*) node->name); int __result = (((const unsigned
char *) (const char *) (name))[0] - __s2[0]); if (__s2_len >
0 && __result == 0) { __result = (((const unsigned char
*) (const char *) (name))[1] - __s2[1]); if (__s2_len > 1
&& __result == 0) { __result = (((const unsigned char
*) (const char *) (name))[2] - __s2[2]); if (__s2_len > 2
&& __result == 0) __result = (((const unsigned char *
) (const char *) (name))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
((char*) node->name, name)))); })
)
768 return TRUE(!(0));
769
770 return FALSE(0);
771}
772
773static void
774set_xml_element (xmlNodePtr appData, const xmlChar* name, const xmlChar* content)
775{
776 g_return_if_fail (appData->type == XML_ELEMENT_NODE)do{ if (__builtin_expect (__extension__ ({ int _g_boolean_var_
; if ((appData->type == XML_ELEMENT_NODE)) _g_boolean_var_
= 1; else _g_boolean_var_ = 0; _g_boolean_var_; }), 1)) { } else
{ g_return_if_fail_warning ("libeas", ((const char*) (__func__
)), "appData->type == XML_ELEMENT_NODE"); return; }; }while
(0)
;
777 g_return_if_fail (appData->name != NULL)do{ if (__builtin_expect (__extension__ ({ int _g_boolean_var_
; if ((appData->name != ((void*)0))) _g_boolean_var_ = 1; else
_g_boolean_var_ = 0; _g_boolean_var_; }), 1)) { } else { g_return_if_fail_warning
("libeas", ((const char*) (__func__)), "appData->name != NULL"
); return; }; }while (0)
;
778 g_return_if_fail (name != NULL)do{ if (__builtin_expect (__extension__ ({ int _g_boolean_var_
; if ((name != ((void*)0))) _g_boolean_var_ = 1; else _g_boolean_var_
= 0; _g_boolean_var_; }), 1)) { } else { g_return_if_fail_warning
("libeas", ((const char*) (__func__)), "name != NULL"); return
; }; }while (0)
;
779 g_return_if_fail (content != NULL)do{ if (__builtin_expect (__extension__ ({ int _g_boolean_var_
; if ((content != ((void*)0))) _g_boolean_var_ = 1; else _g_boolean_var_
= 0; _g_boolean_var_; }), 1)) { } else { g_return_if_fail_warning
("libeas", ((const char*) (__func__)), "content != NULL"); return
; }; }while (0)
;
780
781 xmlNewTextChild (appData, NULL((void*)0), name, content);
782}
783
784static void
785set_xml_name (xmlNodePtr appData, EVCardAttribute *attr)
786{
787 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_LASTNAME"LastName",
788 (const xmlChar*) attribute_get_nth_value (attr, 0));
789 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_FIRSTNAME"FirstName",
790 (const xmlChar*) attribute_get_nth_value (attr, 1));
791 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_MIDDLENAME"MiddleName",
792 (const xmlChar*) attribute_get_nth_value (attr, 2));
793 /* ActiveSync does not support Prefix */
794 /* set_xml_element(appData, (const xmlChar*) "Prefix",
795 (const xmlChar*)attribute_get_nth_value(attr, 3)); */
796 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_SUFFIX"Suffix",
797 (const xmlChar*) attribute_get_nth_value (attr, 4));
798}
799
800static void
801set_xml_org (xmlNodePtr appData, EVCardAttribute *attr)
802{
803 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_COMPANYNAME"CompanyName",
804 (const xmlChar*) attribute_get_nth_value (attr, 0));
805 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_DEPARTMENT"Department",
806 (const xmlChar*) attribute_get_nth_value (attr, 1));
807 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_OFFICELOCATION"OfficeLocation",
808 (const xmlChar*) attribute_get_nth_value (attr, 2));
809}
810
811static void
812set_xml_address2 (xmlNodePtr appData, EVCardAttribute *attr, const xmlChar* add0,
813 const xmlChar* add1, const xmlChar* add2, const xmlChar* add3,
814 const xmlChar* add4, const xmlChar* add5, const xmlChar* add6)
815{
816 /* cannot add already existing type of address again */
817 if (is_element_set (appData, (const gchar *)add2))
818 return;
819
820#if 0
821 / * AS does not support PostalBox * /
822 set_xml_element (appData, add0, (const xmlChar*) attribute_get_nth_value (attr, 0));
823#endif
824
825#if 0
826 / * AS does not support ExtendedAddress * /
827 set_xml_element (appData, add1, (const xmlChar*) attribute_get_nth_value (attr, 1));
828#endif
829
830 /* Street */
831 set_xml_element (appData, add2, (const xmlChar*) attribute_get_nth_value (attr, 2));
832 /* City */
833 set_xml_element (appData, add3, (const xmlChar*) attribute_get_nth_value (attr, 3));
834 /* State */
835 set_xml_element (appData, add4, (const xmlChar*) attribute_get_nth_value (attr, 4));
836 /* Postalcode */
837 set_xml_element (appData, add5, (const xmlChar*) attribute_get_nth_value (attr, 5));
838 /* Country */
839 set_xml_element (appData, add6, (const xmlChar*) attribute_get_nth_value (attr, 6));
840}
841
842static void
843set_xml_address (xmlNodePtr appData, EVCardAttribute *attr)
844{
845
846 /*
847 ActiveSync protocol limits the addresses to 3 only:
848 -one for home,
849 -one for business,
850 -one for other.
851
852 vcard defines the following values in sequence:
853 post office box;
854 extended address;
855 street address;
856 locality (e.g., city);
857 region (e.g., state or province);
858 postal code;
859 country name.
860 */
861 int type = attribute_get_type (attr);
862
863 /* HOME and OTHER must be set explicitly, WORK is the default */
864 if (type & HOME_MASK) {
865 set_xml_address2 (appData, attr,
866 (const xmlChar*) "PostalBox",
867 (const xmlChar*) "ExtendedAddress",
868 (const xmlChar*) EAS_ELEMENT_HOMESTREET"HomeStreet",
869 (const xmlChar*) EAS_ELEMENT_HOMECITY"HomeCity",
870 (const xmlChar*) EAS_ELEMENT_HOMESTATE"HomeState",
871 (const xmlChar*) EAS_ELEMENT_HOMEPOSTALCODE"HomePostalCode",
872 (const xmlChar*) EAS_ELEMENT_HOMECOUNTRY"HomeCountry");
873 } else if (type & OTHER_MASK) {
874 /* deal with possible other vCard type of addresses:
875 "dom", "intl", "postal", "parcel", "pref" / iana-type / x-name */
876 set_xml_address2 (appData, attr,
877 (const xmlChar*) "PostalBox",
878 (const xmlChar*) "ExtendedAddress",
879 (const xmlChar*) EAS_ELEMENT_OTHERSTREET"OtherStreet",
880 (const xmlChar*) EAS_ELEMENT_OTHERCITY"OtherCity",
881 (const xmlChar*) EAS_ELEMENT_OTHERSTATE"OtherState",
882 (const xmlChar*) EAS_ELEMENT_OTHERPOSTALCODE"OtherPostalCode",
883 (const xmlChar*) EAS_ELEMENT_OTHERCOUNTRY"OtherCountry");
884 } else {
885 set_xml_address2 (appData, attr,
886 (const xmlChar*) "PostalBox",
887 (const xmlChar*) "ExtendedAddress",
888 (const xmlChar*) EAS_ELEMENT_BUSINESSSTREET"BusinessStreet",
889 (const xmlChar*) EAS_ELEMENT_BUSINESSCITY"BusinessCity",
890 (const xmlChar*) EAS_ELEMENT_BUSINESSSTATE"BusinessState",
891 (const xmlChar*) EAS_ELEMENT_BUSINESSPOSTALCODE"BusinessPostalCode",
892 (const xmlChar*) EAS_ELEMENT_BUSINESSCOUNTRY"BusinessCountry");
893 }
894}
895
896
897static void
898set_xml_tel (xmlNodePtr appData, EVCardAttribute *attr)
899{
900 int type = attribute_get_type (attr);
901
902 /* check most specific types first, ignore unknown types (PREF, ISDN, MODEM, ...) */
903 if ((type & WORK_MASK) && (type & FAX_MASK)) {
904 if (!is_element_set (appData, EAS_ELEMENT_BUSINESSFAXNUMBER"BusinessFaxNumber")) {
905 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_BUSINESSFAXNUMBER"BusinessFaxNumber",
906 (const xmlChar*) attribute_get_nth_value (attr, 0));
907 }
908 } else if ((type & HOME_MASK) && (type & FAX_MASK)) {
909 if (!is_element_set (appData, EAS_ELEMENT_HOMEFAXNUMBER"HomeFaxNumber")) {
910 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_HOMEFAXNUMBER"HomeFaxNumber",
911 (const xmlChar*) attribute_get_nth_value (attr, 0));
912 }
913 } else if (type & CELL_MASK) {
914 if (!is_element_set (appData, EAS_ELEMENT_MOBILEPHONENUMBER"MobilePhoneNumber")) {
915 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_MOBILEPHONENUMBER"MobilePhoneNumber",
916 (const xmlChar*) attribute_get_nth_value (attr, 0));
917 }
918 } else if (type & CAR_MASK) {
919 if (!is_element_set (appData, EAS_ELEMENT_CARPHONENUMBER"CarPhoneNumber")) {
920 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_CARPHONENUMBER"CarPhoneNumber",
921 (const xmlChar*) attribute_get_nth_value (attr, 0));
922 }
923 } else if (type & RADIO_MASK) {
924 if (!is_element_set (appData, EAS_ELEMENT_RADIOPHONENUMBER"RadioPhoneNumber")) {
925 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_RADIOPHONENUMBER"RadioPhoneNumber",
926 (const xmlChar*) attribute_get_nth_value (attr, 0));
927 }
928 } else if (type & PAGER_MASK) {
929 if (!is_element_set (appData, EAS_ELEMENT_PAGER"PagerNumber")) {
930 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_PAGER"PagerNumber",
931 (const xmlChar*) attribute_get_nth_value (attr, 0));
932 }
933 } else if (type & WORK_MASK) {
934 /* VOICE is the default which is used if FAX/CELL/... wasn't set explicitly */
935 if (!is_element_set (appData, EAS_ELEMENT_BUSINESSPHONENUMBER"BusinessPhoneNumber")) {
936 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_BUSINESSPHONENUMBER"BusinessPhoneNumber",
937 (const xmlChar*) attribute_get_nth_value (attr, 0));
938
939 } else if (!is_element_set (appData, EAS_ELEMENT_BUSINESS2PHONENUMBER"Business2PhoneNumber")) {
940 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_BUSINESS2PHONENUMBER"Business2PhoneNumber",
941 (const xmlChar*) attribute_get_nth_value (attr, 0));
942 }
943 } else {
944 /* VOICE,HOME is the default */
945 if (!is_element_set (appData, EAS_ELEMENT_HOMEPHONENUMBER"HomePhoneNumber")) {
946 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_HOMEPHONENUMBER"HomePhoneNumber",
947 (const xmlChar*) attribute_get_nth_value (attr, 0));
948 } else if (!is_element_set (appData, EAS_ELEMENT_HOME2PHONENUMBER"Home2PhoneNumber")) {
949 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_HOME2PHONENUMBER"Home2PhoneNumber",
950 (const xmlChar*) attribute_get_nth_value (attr, 0));
951 }
952 }
953}
954
955static void
956set_xml_email (xmlNodePtr appData, EVCardAttribute *attr)
957{
958 if (!is_element_set (appData, EAS_ELEMENT_EMAIL1ADDRESS"Email1Address")) {
959 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_EMAIL1ADDRESS"Email1Address",
960 (const xmlChar*) attribute_get_nth_value (attr, 0));
961 } else if (!is_element_set (appData, EAS_ELEMENT_EMAIL2ADDRESS"Email2Address")) {
962 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_EMAIL2ADDRESS"Email2Address",
963 (const xmlChar*) attribute_get_nth_value (attr, 0));
964 } else if (!is_element_set (appData, EAS_ELEMENT_EMAIL3ADDRESS"Email3Address")) {
965 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_EMAIL3ADDRESS"Email3Address",
966 (const xmlChar*) attribute_get_nth_value (attr, 0));
967 } else
968 g_debug ("all three emails already set, dropping remaining one(s)");
969
970}
971
972static void
973set_xml_categories (xmlNodePtr appData, EVCardAttribute *attr)
974{
975 xmlNodePtr categories = NULL((void*)0);
976 GList *values = NULL((void*)0);
977 GList *l = NULL((void*)0);
978 categories = xmlNewChild (appData, NULL((void*)0), (xmlChar *) EAS_ELEMENT_CATEGORIES"Categories", NULL((void*)0));
979 values = e_vcard_attribute_get_values (attr);
980 for (l = values; l; l = l->next) {
981 set_xml_element (categories, (const xmlChar*) EAS_ELEMENT_CATEGORY"Category",
982 (const xmlChar*) l->data);
983 }
984}
985
986static void
987set_xml_Note_text (xmlNodePtr appData, const char *text)
988{
989 xmlNodePtr body = NULL((void*)0);
990
991 body = xmlNewChild (appData, NULL((void*)0), (xmlChar *)EAS_NAMESPACE_AIRSYNCBASE"airsyncbase:" EAS_ELEMENT_BODY"Body", NULL((void*)0));
992 set_xml_element(body, (const xmlChar*)EAS_NAMESPACE_AIRSYNCBASE"airsyncbase:" EAS_ELEMENT_BODY_TYPE"Type",
993 (const xmlChar*) "1");
994 set_xml_element(body, (const xmlChar*)EAS_NAMESPACE_AIRSYNCBASE"airsyncbase:" EAS_ELEMENT_BODY_SIZE"EstimatedDataSize",
995 (const xmlChar*) "0");
996 /* set_xml_element(body, (const xmlChar*)EAS_NAMESPACE_AIRSYNCBASE EAS_ELEMENT_BODY_TRUNCATED,
997 (const xmlChar*) "0"); */
998 set_xml_element(body, (const xmlChar*)EAS_NAMESPACE_AIRSYNCBASE"airsyncbase:" EAS_ELEMENT_BODY_DATA"Data",
999 (const xmlChar*) (const xmlChar*)text);
1000 /* set_xml_element(body, (const xmlChar*)EAS_NAMESPACE_AIRSYNCBASE EAS_ELEMENT_BODY_PREVIEW,
1001 (const xmlChar*) "0");*/
1002}
1003
1004static void
1005set_xml_Note (xmlNodePtr appData, EVCardAttribute *attr)
1006{
1007 set_xml_Note_text (appData, attribute_get_nth_value(attr, 0));
1008}
1009
1010static void
1011set_xml_contact_date (xmlNodePtr appData, EVCardAttribute *attr, gchar* eas_element)
1012{
1013 /* vCard/Evolution defines the date as YYYY-MM-DD[Thh:mm:ssZ|Thh:mm:ss[+-]hh:mm]
1014 we need to convert it to ActiveSync YYYY-MM-DDT00:00:00.000Z */
1015 const gchar* date = attribute_get_nth_value (attr, 0);
1016 gchar *time = strchr (date, 'T')(__extension__ (__builtin_constant_p ('T') && !__builtin_constant_p
(date) && ('T') == '\0' ? (char *) __rawmemchr (date
, 'T') : __builtin_strchr (date, 'T')))
;
1017 size_t datelen = time ? (time - date) : strlen(date);
1018 int seconds = 0;
1019 long value;
1020 gchar buffer[80];
1021
1022 /*
1023 * parse optional hh:mm:ssZ|Thh:mm:ss[+-]hh:mm:
1024 * no error handling, garbage in/garbage out,
1025 * time in UTC before midnight not supported
1026 * (=> 20101201T00:00:00-01:00 becomes
1027 * 20101201T00:00:00.000Z instead of
1028 * decreasing the date)
1029 */
1030 if (time) {
1031 value = strtol (time + 1, &time, 10);
1032 seconds += value * 60 * 60;
1033 if (time && *time == ':') {
1034 value = strtol (time + 1, &time, 10);
1035 seconds += value * 60;
1036 if (time && *time == ':') {
1037 value = strtol (time + 1, &time, 10);
1038 seconds += value;
1039 if (time && (*time == '-' || *time == '+')) {
1040 /* UTC offset as hour:min */
1041 int sign = *time == '-' ? -1 : +1;
1042 value = strtol (time + 1, &time, 10);
1043 seconds -= sign * value * 60 * 60;
1044 if (time && (*time == ':')) {
1045 value = strtol (time + 1, &time, 10);
1046 seconds -= sign * value * 60;
1047 }
1048 }
1049 }
1050 }
1051 }
1052
1053 /* accept both long (YYYY-MM-DD) and short format for date, produce long version */
1054 if (datelen > sizeof(buffer) - 40)
1055 datelen = sizeof(buffer) - 40;
1056 if (datelen == 4 + 2 + 2)
1057 sprintf (buffer, "%.4s-%.2s-%.2s",
1058 date,
1059 date + 4,
1060 date + 4 + 2);
1061 else {
1062 memcpy (buffer, date, datelen);
1063 buffer[datelen] = 0;
1064 }
1065
1066 /* now format the time */
1067 if (seconds < 0) {
1068 /* would have to change the date; instead reset to midnight */
1069 seconds = 0;
1070 }
1071 sprintf (buffer + strlen (buffer), "T%02d:%02d:%02d.000Z",
1072 seconds / (60 * 60) % 24,
1073 seconds / 60 % 60,
1074 seconds % 60);
1075 set_xml_element (appData, (const xmlChar*) eas_element, (const xmlChar*)buffer);
1076}
1077
1078/**
1079 * Ensure that all XML properties are set. Otherwise removing
1080 * properties is not possible. It would be nice if this could be
1081 * limited to properties which exist on the server, but the daemon
1082 * doesn't track that information.
1083 */
1084static void
1085set_missing_contact_properties (xmlNodePtr appData)
1086{
1087 const char *elements[] = {
1088 EAS_ELEMENT_LASTNAME"LastName",
1089 EAS_ELEMENT_FIRSTNAME"FirstName",
1090 EAS_ELEMENT_MIDDLENAME"MiddleName",
1091 EAS_ELEMENT_SUFFIX"Suffix",
1092 EAS_ELEMENT_COMPANYNAME"CompanyName",
1093 EAS_ELEMENT_DEPARTMENT"Department",
1094 EAS_ELEMENT_OFFICELOCATION"OfficeLocation",
1095 EAS_ELEMENT_BUSINESSFAXNUMBER"BusinessFaxNumber",
1096 EAS_ELEMENT_HOMEFAXNUMBER"HomeFaxNumber",
1097 EAS_ELEMENT_MOBILEPHONENUMBER"MobilePhoneNumber",
1098 EAS_ELEMENT_CARPHONENUMBER"CarPhoneNumber",
1099 EAS_ELEMENT_RADIOPHONENUMBER"RadioPhoneNumber",
1100 EAS_ELEMENT_PAGER"PagerNumber",
1101 EAS_ELEMENT_BUSINESSPHONENUMBER"BusinessPhoneNumber",
1102 EAS_ELEMENT_BUSINESS2PHONENUMBER"Business2PhoneNumber",
1103 EAS_ELEMENT_HOMEPHONENUMBER"HomePhoneNumber",
1104 EAS_ELEMENT_HOME2PHONENUMBER"Home2PhoneNumber",
1105 EAS_ELEMENT_EMAIL1ADDRESS"Email1Address",
1106 EAS_ELEMENT_EMAIL2ADDRESS"Email2Address",
1107 EAS_ELEMENT_EMAIL3ADDRESS"Email3Address",
1108 EAS_ELEMENT_CONTACTS2_NICKNAME"NickName",
1109 EAS_ELEMENT_URL"WebPage",
1110 EAS_ELEMENT_TITLE"Title",
1111 EAS_ELEMENT_ROLE"JobTitle",
1112 EAS_ELEMENT_SPOUSE"Spouse",
1113 EAS_ELEMENT_FILEAS"FileAs",
1114 EAS_ELEMENT_ASSISTANTNAME"AssistantName",
1115 EAS_ELEMENT_CONTACTS2_MANAGERNAME"ManagerName",
1116 EAS_ELEMENT_OFFICELOCATION"OfficeLocation",
1117 EAS_ELEMENT_PHOTO"Picture",
1118
1119 /* can be set like a text element */
1120 EAS_ELEMENT_CATEGORIES"Categories",
1121
1122 NULL((void*)0)
1123 };
1124 int i;
1125
1126 for (i = 0; elements[i]; i++)
1127 if (!is_element_set (appData, elements[i]))
1128 set_xml_element (appData, (const xmlChar *)elements[i], (const xmlChar *)"");
1129
1130 /* special case for body */
1131 if (!is_element_set (appData, EAS_NAMESPACE_AIRSYNCBASE"airsyncbase:" EAS_ELEMENT_BODY"Body"))
1132 set_xml_Note_text (appData, "");
1133}
1134
1135gboolean
1136eas_con_info_translator_parse_request (xmlDocPtr doc,
1137 xmlNodePtr appData,
1138 EasItemInfo* contactInfo)
1139{
1140 gboolean success = FALSE(0);
1141 EVCard* vcard = NULL((void*)0);
1142 GList *a = NULL((void*)0);
1143 GList *attributes = NULL((void*)0);
1144
1145 g_return_val_if_fail (doc != NULL && appData != NULL && contactInfo != NULL, FALSE)do{ if (__builtin_expect (__extension__ ({ int _g_boolean_var_
; if ((doc != ((void*)0) && appData != ((void*)0) &&
contactInfo != ((void*)0))) _g_boolean_var_ = 1; else _g_boolean_var_
= 0; _g_boolean_var_; }), 1)) { } else { g_return_if_fail_warning
("libeas", ((const char*) (__func__)), "doc != NULL && appData != NULL && contactInfo != NULL"
); return ((0)); }; }while (0)
;
1146 g_return_val_if_fail (appData->type == XML_ELEMENT_NODE, FALSE)do{ if (__builtin_expect (__extension__ ({ int _g_boolean_var_
; if ((appData->type == XML_ELEMENT_NODE)) _g_boolean_var_
= 1; else _g_boolean_var_ = 0; _g_boolean_var_; }), 1)) { } else
{ g_return_if_fail_warning ("libeas", ((const char*) (__func__
)), "appData->type == XML_ELEMENT_NODE"); return ((0)); };
}while (0)
;
1147 g_return_val_if_fail (appData->name != NULL, FALSE)do{ if (__builtin_expect (__extension__ ({ int _g_boolean_var_
; if ((appData->name != ((void*)0))) _g_boolean_var_ = 1; else
_g_boolean_var_ = 0; _g_boolean_var_; }), 1)) { } else { g_return_if_fail_warning
("libeas", ((const char*) (__func__)), "appData->name != NULL"
); return ((0)); }; }while (0)
;
1148 g_return_val_if_fail (g_strcmp0 ( (char*) (appData->name), EAS_ELEMENT_APPLICATIONDATA) == 0, FALSE)do{ if (__builtin_expect (__extension__ ({ int _g_boolean_var_
; if ((g_strcmp0 ( (char*) (appData->name), "ApplicationData"
) == 0)) _g_boolean_var_ = 1; else _g_boolean_var_ = 0; _g_boolean_var_
; }), 1)) { } else { g_return_if_fail_warning ("libeas", ((const
char*) (__func__)), "g_strcmp0 ( (char*) (appData->name), EAS_ELEMENT_APPLICATIONDATA) == 0"
); return ((0)); }; }while (0)
;
1149
1150 g_debug ("eas_con_info_translator_parse_request ++");
1151
1152#if !GLIB_CHECK_VERSION(2,36,0)(2 > (2) || (2 == (2) && 54 > (36)) || (2 == (2
) && 54 == (36) && 1 >= (0)))
1153 g_type_init();
1154#endif
1155
1156 vcard = e_vcard_new_from_string (contactInfo->data);
1157 g_return_val_if_fail (vcard != NULL, FALSE)do{ if (__builtin_expect (__extension__ ({ int _g_boolean_var_
; if ((vcard != ((void*)0))) _g_boolean_var_ = 1; else _g_boolean_var_
= 0; _g_boolean_var_; }), 1)) { } else { g_return_if_fail_warning
("libeas", ((const char*) (__func__)), "vcard != NULL"); return
((0)); }; }while (0)
;
1158
1159 /* e_vcard_dump_structure (vcard); */ /* Debug only*/
1160
1161 attributes = e_vcard_get_attributes (vcard);
1162
1163 for (a = attributes; a; a = a->next) {
1164 const char *name = NULL((void*)0);
1165 EVCardAttribute *attr = a->data;
1166 success = TRUE(!(0));
1167 name = e_vcard_attribute_get_name (attr);
1168
1169 /* g_debug("e_vcard_attribute_get_name=%s", name); */
1170
1171 if (!strcmp (name, "BEGIN")__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("BEGIN") && (
__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("BEGIN"), (!((size_t)(const void *)((name) + 1) - (size_t)(
const void *)(name) == 1) || __s1_len >= 4) && (!(
(size_t)(const void *)(("BEGIN") + 1) - (size_t)(const void *
)("BEGIN") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name
, "BEGIN") : (__builtin_constant_p (name) && ((size_t
)(const void *)((name) + 1) - (size_t)(const void *)(name) ==
1) && (__s1_len = __builtin_strlen (name), __s1_len <
4) ? (__builtin_constant_p ("BEGIN") && ((size_t)(const
void *)(("BEGIN") + 1) - (size_t)(const void *)("BEGIN") == 1
) ? __builtin_strcmp (name, "BEGIN") : (__extension__ ({ const
unsigned char *__s2 = (const unsigned char *) (const char *)
("BEGIN"); int __result = (((const unsigned char *) (const char
*) (name))[0] - __s2[0]); if (__s1_len > 0 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[1] - __s2[1]); if (__s1_len > 1 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[2] - __s2[2]); if (__s1_len > 2 && __result
== 0) __result = (((const unsigned char *) (const char *) (name
))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (
"BEGIN") && ((size_t)(const void *)(("BEGIN") + 1) - (
size_t)(const void *)("BEGIN") == 1) && (__s2_len = __builtin_strlen
("BEGIN"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "BEGIN") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("BEGIN"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("BEGIN"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("BEGIN"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("BEGIN"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "BEGIN")))); })
)
1172 continue;
1173
1174 if (!strcmp (name, EVC_VERSION)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("VERSION") &&
(__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("VERSION"), (!((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) || __s1_len >= 4) && (
!((size_t)(const void *)(("VERSION") + 1) - (size_t)(const void
*)("VERSION") == 1) || __s2_len >= 4)) ? __builtin_strcmp
(name, "VERSION") : (__builtin_constant_p (name) && (
(size_t)(const void *)((name) + 1) - (size_t)(const void *)(name
) == 1) && (__s1_len = __builtin_strlen (name), __s1_len
< 4) ? (__builtin_constant_p ("VERSION") && ((size_t
)(const void *)(("VERSION") + 1) - (size_t)(const void *)("VERSION"
) == 1) ? __builtin_strcmp (name, "VERSION") : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) ("VERSION"); int __result = (((const unsigned char *
) (const char *) (name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
("VERSION") && ((size_t)(const void *)(("VERSION") +
1) - (size_t)(const void *)("VERSION") == 1) && (__s2_len
= __builtin_strlen ("VERSION"), __s2_len < 4) ? (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) ? __builtin_strcmp (name, "VERSION"
) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned
char *) (const char *) (name); int __result = (((const unsigned
char *) (const char *) ("VERSION"))[0] - __s2[0]); if (__s2_len
> 0 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("VERSION"))[1] - __s2[1]); if (__s2_len
> 1 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("VERSION"))[2] - __s2[2]); if (__s2_len
> 2 && __result == 0) __result = (((const unsigned
char *) (const char *) ("VERSION"))[3] - __s2[3]); } } __result
; }))) : __builtin_strcmp (name, "VERSION")))); })
)
1175 continue;
1176
1177
1178 /* process attributes that have no param */
1179
1180 /* Name */
1181 if (!strcmp (name, EVC_N)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("N") && (__s1_len
= __builtin_strlen (name), __s2_len = __builtin_strlen ("N")
, (!((size_t)(const void *)((name) + 1) - (size_t)(const void
*)(name) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("N") + 1) - (size_t)(const void *)("N") == 1) || __s2_len
>= 4)) ? __builtin_strcmp (name, "N") : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s1_len = __builtin_strlen
(name), __s1_len < 4) ? (__builtin_constant_p ("N") &&
((size_t)(const void *)(("N") + 1) - (size_t)(const void *)(
"N") == 1) ? __builtin_strcmp (name, "N") : (__extension__ ({
const unsigned char *__s2 = (const unsigned char *) (const char
*) ("N"); int __result = (((const unsigned char *) (const char
*) (name))[0] - __s2[0]); if (__s1_len > 0 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[1] - __s2[1]); if (__s1_len > 1 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[2] - __s2[2]); if (__s1_len > 2 && __result
== 0) __result = (((const unsigned char *) (const char *) (name
))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (
"N") && ((size_t)(const void *)(("N") + 1) - (size_t)
(const void *)("N") == 1) && (__s2_len = __builtin_strlen
("N"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "N") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("N"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("N"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("N"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("N"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "N")))); })
) {
1182 set_xml_name (appData, attr);
1183 continue;
1184 }
1185
1186 /* NICKNAME */
1187 /* TODO: -NickName (Contacts2)-> does not show in Exchange Outlook
1188 -Alias -> causes AS malformed item error:
1189 MS-ASWBXML and wbxml (in wbxml_tables.c) indicate that this
1190 item is not supported when the MS-ASProtocolVersion header is set to 12.1 */
1191 if (!strcmp (name, EVC_NICKNAME)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("NICKNAME") &&
(__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("NICKNAME"), (!((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) || __s1_len >= 4) && (
!((size_t)(const void *)(("NICKNAME") + 1) - (size_t)(const void
*)("NICKNAME") == 1) || __s2_len >= 4)) ? __builtin_strcmp
(name, "NICKNAME") : (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) && (__s1_len = __builtin_strlen (name), __s1_len
< 4) ? (__builtin_constant_p ("NICKNAME") && ((size_t
)(const void *)(("NICKNAME") + 1) - (size_t)(const void *)("NICKNAME"
) == 1) ? __builtin_strcmp (name, "NICKNAME") : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) ("NICKNAME"); int __result = (((const unsigned char *
) (const char *) (name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
("NICKNAME") && ((size_t)(const void *)(("NICKNAME")
+ 1) - (size_t)(const void *)("NICKNAME") == 1) && (
__s2_len = __builtin_strlen ("NICKNAME"), __s2_len < 4) ? (
__builtin_constant_p (name) && ((size_t)(const void *
)((name) + 1) - (size_t)(const void *)(name) == 1) ? __builtin_strcmp
(name, "NICKNAME") : -(__extension__ ({ const unsigned char *
__s2 = (const unsigned char *) (const char *) (name); int __result
= (((const unsigned char *) (const char *) ("NICKNAME"))[0] -
__s2[0]); if (__s2_len > 0 && __result == 0) { __result
= (((const unsigned char *) (const char *) ("NICKNAME"))[1] -
__s2[1]); if (__s2_len > 1 && __result == 0) { __result
= (((const unsigned char *) (const char *) ("NICKNAME"))[2] -
__s2[2]); if (__s2_len > 2 && __result == 0) __result
= (((const unsigned char *) (const char *) ("NICKNAME"))[3] -
__s2[3]); } } __result; }))) : __builtin_strcmp (name, "NICKNAME"
)))); })
) {
1192 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_CONTACTS2_NICKNAME"NickName",
1193 (const xmlChar*) attribute_get_nth_value (attr, 0));
1194 continue;
1195 }
1196
1197 /* Company */
1198 if (!strcmp (name, EVC_ORG)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("ORG") && (__s1_len
= __builtin_strlen (name), __s2_len = __builtin_strlen ("ORG"
), (!((size_t)(const void *)((name) + 1) - (size_t)(const void
*)(name) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("ORG") + 1) - (size_t)(const void *)("ORG") == 1) ||
__s2_len >= 4)) ? __builtin_strcmp (name, "ORG") : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s1_len = __builtin_strlen
(name), __s1_len < 4) ? (__builtin_constant_p ("ORG") &&
((size_t)(const void *)(("ORG") + 1) - (size_t)(const void *
)("ORG") == 1) ? __builtin_strcmp (name, "ORG") : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) ("ORG"); int __result = (((const unsigned char *) (const
char *) (name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
("ORG") && ((size_t)(const void *)(("ORG") + 1) - (size_t
)(const void *)("ORG") == 1) && (__s2_len = __builtin_strlen
("ORG"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "ORG") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("ORG"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("ORG"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("ORG"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("ORG"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "ORG")))); })
) {
1199 set_xml_org (appData, attr);
1200 continue;
1201 }
1202
1203 /* Url */
1204 if (!strcmp (name, EVC_URL)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("URL") && (__s1_len
= __builtin_strlen (name), __s2_len = __builtin_strlen ("URL"
), (!((size_t)(const void *)((name) + 1) - (size_t)(const void
*)(name) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("URL") + 1) - (size_t)(const void *)("URL") == 1) ||
__s2_len >= 4)) ? __builtin_strcmp (name, "URL") : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s1_len = __builtin_strlen
(name), __s1_len < 4) ? (__builtin_constant_p ("URL") &&
((size_t)(const void *)(("URL") + 1) - (size_t)(const void *
)("URL") == 1) ? __builtin_strcmp (name, "URL") : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) ("URL"); int __result = (((const unsigned char *) (const
char *) (name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
("URL") && ((size_t)(const void *)(("URL") + 1) - (size_t
)(const void *)("URL") == 1) && (__s2_len = __builtin_strlen
("URL"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "URL") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("URL"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("URL"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("URL"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("URL"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "URL")))); })
) {
1205 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_URL"WebPage",
1206 (const xmlChar*) attribute_get_nth_value (attr, 0));
1207
1208 continue;
1209 }
1210
1211 /* Birthday */
1212 if (!strcmp (name, EVC_BDAY)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("BDAY") && (
__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("BDAY"), (!((size_t)(const void *)((name) + 1) - (size_t)(const
void *)(name) == 1) || __s1_len >= 4) && (!((size_t
)(const void *)(("BDAY") + 1) - (size_t)(const void *)("BDAY"
) == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "BDAY"
) : (__builtin_constant_p (name) && ((size_t)(const void
*)((name) + 1) - (size_t)(const void *)(name) == 1) &&
(__s1_len = __builtin_strlen (name), __s1_len < 4) ? (__builtin_constant_p
("BDAY") && ((size_t)(const void *)(("BDAY") + 1) - (
size_t)(const void *)("BDAY") == 1) ? __builtin_strcmp (name,
"BDAY") : (__extension__ ({ const unsigned char *__s2 = (const
unsigned char *) (const char *) ("BDAY"); int __result = (((
const unsigned char *) (const char *) (name))[0] - __s2[0]); if
(__s1_len > 0 && __result == 0) { __result = (((const
unsigned char *) (const char *) (name))[1] - __s2[1]); if (__s1_len
> 1 && __result == 0) { __result = (((const unsigned
char *) (const char *) (name))[2] - __s2[2]); if (__s1_len >
2 && __result == 0) __result = (((const unsigned char
*) (const char *) (name))[3] - __s2[3]); } } __result; }))) :
(__builtin_constant_p ("BDAY") && ((size_t)(const void
*)(("BDAY") + 1) - (size_t)(const void *)("BDAY") == 1) &&
(__s2_len = __builtin_strlen ("BDAY"), __s2_len < 4) ? (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) ? __builtin_strcmp (name, "BDAY")
: -(__extension__ ({ const unsigned char *__s2 = (const unsigned
char *) (const char *) (name); int __result = (((const unsigned
char *) (const char *) ("BDAY"))[0] - __s2[0]); if (__s2_len
> 0 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("BDAY"))[1] - __s2[1]); if (__s2_len
> 1 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("BDAY"))[2] - __s2[2]); if (__s2_len
> 2 && __result == 0) __result = (((const unsigned
char *) (const char *) ("BDAY"))[3] - __s2[3]); } } __result
; }))) : __builtin_strcmp (name, "BDAY")))); })
) {
1213 set_xml_contact_date (appData, attr, (gchar*) EAS_ELEMENT_BIRTHDAY"Birthday");
1214 continue;
1215 }
1216
1217 /* Title */
1218 if (!strcmp (name, EVC_TITLE)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("TITLE") && (
__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("TITLE"), (!((size_t)(const void *)((name) + 1) - (size_t)(
const void *)(name) == 1) || __s1_len >= 4) && (!(
(size_t)(const void *)(("TITLE") + 1) - (size_t)(const void *
)("TITLE") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name
, "TITLE") : (__builtin_constant_p (name) && ((size_t
)(const void *)((name) + 1) - (size_t)(const void *)(name) ==
1) && (__s1_len = __builtin_strlen (name), __s1_len <
4) ? (__builtin_constant_p ("TITLE") && ((size_t)(const
void *)(("TITLE") + 1) - (size_t)(const void *)("TITLE") == 1
) ? __builtin_strcmp (name, "TITLE") : (__extension__ ({ const
unsigned char *__s2 = (const unsigned char *) (const char *)
("TITLE"); int __result = (((const unsigned char *) (const char
*) (name))[0] - __s2[0]); if (__s1_len > 0 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[1] - __s2[1]); if (__s1_len > 1 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[2] - __s2[2]); if (__s1_len > 2 && __result
== 0) __result = (((const unsigned char *) (const char *) (name
))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (
"TITLE") && ((size_t)(const void *)(("TITLE") + 1) - (
size_t)(const void *)("TITLE") == 1) && (__s2_len = __builtin_strlen
("TITLE"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "TITLE") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("TITLE"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("TITLE"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("TITLE"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("TITLE"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "TITLE")))); })
) {
1219 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_TITLE"Title",
1220 (const xmlChar*) attribute_get_nth_value (attr, 0));
1221 continue;
1222 }
1223
1224 /* Role */
1225 if (!strcmp (name, EVC_ROLE)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("ROLE") && (
__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("ROLE"), (!((size_t)(const void *)((name) + 1) - (size_t)(const
void *)(name) == 1) || __s1_len >= 4) && (!((size_t
)(const void *)(("ROLE") + 1) - (size_t)(const void *)("ROLE"
) == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "ROLE"
) : (__builtin_constant_p (name) && ((size_t)(const void
*)((name) + 1) - (size_t)(const void *)(name) == 1) &&
(__s1_len = __builtin_strlen (name), __s1_len < 4) ? (__builtin_constant_p
("ROLE") && ((size_t)(const void *)(("ROLE") + 1) - (
size_t)(const void *)("ROLE") == 1) ? __builtin_strcmp (name,
"ROLE") : (__extension__ ({ const unsigned char *__s2 = (const
unsigned char *) (const char *) ("ROLE"); int __result = (((
const unsigned char *) (const char *) (name))[0] - __s2[0]); if
(__s1_len > 0 && __result == 0) { __result = (((const
unsigned char *) (const char *) (name))[1] - __s2[1]); if (__s1_len
> 1 && __result == 0) { __result = (((const unsigned
char *) (const char *) (name))[2] - __s2[2]); if (__s1_len >
2 && __result == 0) __result = (((const unsigned char
*) (const char *) (name))[3] - __s2[3]); } } __result; }))) :
(__builtin_constant_p ("ROLE") && ((size_t)(const void
*)(("ROLE") + 1) - (size_t)(const void *)("ROLE") == 1) &&
(__s2_len = __builtin_strlen ("ROLE"), __s2_len < 4) ? (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) ? __builtin_strcmp (name, "ROLE")
: -(__extension__ ({ const unsigned char *__s2 = (const unsigned
char *) (const char *) (name); int __result = (((const unsigned
char *) (const char *) ("ROLE"))[0] - __s2[0]); if (__s2_len
> 0 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("ROLE"))[1] - __s2[1]); if (__s2_len
> 1 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("ROLE"))[2] - __s2[2]); if (__s2_len
> 2 && __result == 0) __result = (((const unsigned
char *) (const char *) ("ROLE"))[3] - __s2[3]); } } __result
; }))) : __builtin_strcmp (name, "ROLE")))); })
) {
1226 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_ROLE"JobTitle",
1227 (const xmlChar*) attribute_get_nth_value (attr, 0));
1228 continue;
1229 }
1230
1231 /* Spouse - vCard does not support Spouse so we use X-EVOLUTION-SPOUSE*/
1232 if (!strcmp (name, EVC_X_SPOUSE)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("X-EVOLUTION-SPOUSE"
) && (__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("X-EVOLUTION-SPOUSE"), (!((size_t)(const void *)((name) + 1
) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) &&
(!((size_t)(const void *)(("X-EVOLUTION-SPOUSE") + 1) - (size_t
)(const void *)("X-EVOLUTION-SPOUSE") == 1) || __s2_len >=
4)) ? __builtin_strcmp (name, "X-EVOLUTION-SPOUSE") : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s1_len = __builtin_strlen
(name), __s1_len < 4) ? (__builtin_constant_p ("X-EVOLUTION-SPOUSE"
) && ((size_t)(const void *)(("X-EVOLUTION-SPOUSE") +
1) - (size_t)(const void *)("X-EVOLUTION-SPOUSE") == 1) ? __builtin_strcmp
(name, "X-EVOLUTION-SPOUSE") : (__extension__ ({ const unsigned
char *__s2 = (const unsigned char *) (const char *) ("X-EVOLUTION-SPOUSE"
); int __result = (((const unsigned char *) (const char *) (name
))[0] - __s2[0]); if (__s1_len > 0 && __result == 0
) { __result = (((const unsigned char *) (const char *) (name
))[1] - __s2[1]); if (__s1_len > 1 && __result == 0
) { __result = (((const unsigned char *) (const char *) (name
))[2] - __s2[2]); if (__s1_len > 2 && __result == 0
) __result = (((const unsigned char *) (const char *) (name))
[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("X-EVOLUTION-SPOUSE"
) && ((size_t)(const void *)(("X-EVOLUTION-SPOUSE") +
1) - (size_t)(const void *)("X-EVOLUTION-SPOUSE") == 1) &&
(__s2_len = __builtin_strlen ("X-EVOLUTION-SPOUSE"), __s2_len
< 4) ? (__builtin_constant_p (name) && ((size_t)(
const void *)((name) + 1) - (size_t)(const void *)(name) == 1
) ? __builtin_strcmp (name, "X-EVOLUTION-SPOUSE") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("X-EVOLUTION-SPOUSE"))[0] - __s2[0]); if (__s2_len >
0 && __result == 0) { __result = (((const unsigned char
*) (const char *) ("X-EVOLUTION-SPOUSE"))[1] - __s2[1]); if (
__s2_len > 1 && __result == 0) { __result = (((const
unsigned char *) (const char *) ("X-EVOLUTION-SPOUSE"))[2] -
__s2[2]); if (__s2_len > 2 && __result == 0) __result
= (((const unsigned char *) (const char *) ("X-EVOLUTION-SPOUSE"
))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (name
, "X-EVOLUTION-SPOUSE")))); })
) {
1233 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_SPOUSE"Spouse",
1234 (const xmlChar*) attribute_get_nth_value (attr, 0));
1235 continue;
1236 }
1237
1238 /* FileAs - vCard does not support FileAs so we use X-EVOLUTION-FILE-AS*/
1239 if (!strcmp (name, EVC_X_FILE_AS)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("X-EVOLUTION-FILE-AS"
) && (__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("X-EVOLUTION-FILE-AS"), (!((size_t)(const void *)((name) + 1
) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) &&
(!((size_t)(const void *)(("X-EVOLUTION-FILE-AS") + 1) - (size_t
)(const void *)("X-EVOLUTION-FILE-AS") == 1) || __s2_len >=
4)) ? __builtin_strcmp (name, "X-EVOLUTION-FILE-AS") : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s1_len = __builtin_strlen
(name), __s1_len < 4) ? (__builtin_constant_p ("X-EVOLUTION-FILE-AS"
) && ((size_t)(const void *)(("X-EVOLUTION-FILE-AS") +
1) - (size_t)(const void *)("X-EVOLUTION-FILE-AS") == 1) ? __builtin_strcmp
(name, "X-EVOLUTION-FILE-AS") : (__extension__ ({ const unsigned
char *__s2 = (const unsigned char *) (const char *) ("X-EVOLUTION-FILE-AS"
); int __result = (((const unsigned char *) (const char *) (name
))[0] - __s2[0]); if (__s1_len > 0 && __result == 0
) { __result = (((const unsigned char *) (const char *) (name
))[1] - __s2[1]); if (__s1_len > 1 && __result == 0
) { __result = (((const unsigned char *) (const char *) (name
))[2] - __s2[2]); if (__s1_len > 2 && __result == 0
) __result = (((const unsigned char *) (const char *) (name))
[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("X-EVOLUTION-FILE-AS"
) && ((size_t)(const void *)(("X-EVOLUTION-FILE-AS") +
1) - (size_t)(const void *)("X-EVOLUTION-FILE-AS") == 1) &&
(__s2_len = __builtin_strlen ("X-EVOLUTION-FILE-AS"), __s2_len
< 4) ? (__builtin_constant_p (name) && ((size_t)(
const void *)((name) + 1) - (size_t)(const void *)(name) == 1
) ? __builtin_strcmp (name, "X-EVOLUTION-FILE-AS") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("X-EVOLUTION-FILE-AS"))[0] - __s2[0]); if (__s2_len
> 0 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("X-EVOLUTION-FILE-AS"))[1] - __s2[1]
); if (__s2_len > 1 && __result == 0) { __result =
(((const unsigned char *) (const char *) ("X-EVOLUTION-FILE-AS"
))[2] - __s2[2]); if (__s2_len > 2 && __result == 0
) __result = (((const unsigned char *) (const char *) ("X-EVOLUTION-FILE-AS"
))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (name
, "X-EVOLUTION-FILE-AS")))); })
) {
1240 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_FILEAS"FileAs",
1241 (const xmlChar*) attribute_get_nth_value (attr, 0));
1242 continue;
1243 }
1244
1245 /* AssistantName - vCard does not support Assistant so we use X-EVOLUTION-ASSISTANT*/
1246 if (!strcmp (name, EVC_X_ASSISTANT)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("X-EVOLUTION-ASSISTANT"
) && (__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("X-EVOLUTION-ASSISTANT"), (!((size_t)(const void *)((name) +
1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4)
&& (!((size_t)(const void *)(("X-EVOLUTION-ASSISTANT"
) + 1) - (size_t)(const void *)("X-EVOLUTION-ASSISTANT") == 1
) || __s2_len >= 4)) ? __builtin_strcmp (name, "X-EVOLUTION-ASSISTANT"
) : (__builtin_constant_p (name) && ((size_t)(const void
*)((name) + 1) - (size_t)(const void *)(name) == 1) &&
(__s1_len = __builtin_strlen (name), __s1_len < 4) ? (__builtin_constant_p
("X-EVOLUTION-ASSISTANT") && ((size_t)(const void *)
(("X-EVOLUTION-ASSISTANT") + 1) - (size_t)(const void *)("X-EVOLUTION-ASSISTANT"
) == 1) ? __builtin_strcmp (name, "X-EVOLUTION-ASSISTANT") : (
__extension__ ({ const unsigned char *__s2 = (const unsigned char
*) (const char *) ("X-EVOLUTION-ASSISTANT"); int __result = (
((const unsigned char *) (const char *) (name))[0] - __s2[0])
; if (__s1_len > 0 && __result == 0) { __result = (
((const unsigned char *) (const char *) (name))[1] - __s2[1])
; if (__s1_len > 1 && __result == 0) { __result = (
((const unsigned char *) (const char *) (name))[2] - __s2[2])
; if (__s1_len > 2 && __result == 0) __result = ((
(const unsigned char *) (const char *) (name))[3] - __s2[3]);
} } __result; }))) : (__builtin_constant_p ("X-EVOLUTION-ASSISTANT"
) && ((size_t)(const void *)(("X-EVOLUTION-ASSISTANT"
) + 1) - (size_t)(const void *)("X-EVOLUTION-ASSISTANT") == 1
) && (__s2_len = __builtin_strlen ("X-EVOLUTION-ASSISTANT"
), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "X-EVOLUTION-ASSISTANT"
) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned
char *) (const char *) (name); int __result = (((const unsigned
char *) (const char *) ("X-EVOLUTION-ASSISTANT"))[0] - __s2[
0]); if (__s2_len > 0 && __result == 0) { __result
= (((const unsigned char *) (const char *) ("X-EVOLUTION-ASSISTANT"
))[1] - __s2[1]); if (__s2_len > 1 && __result == 0
) { __result = (((const unsigned char *) (const char *) ("X-EVOLUTION-ASSISTANT"
))[2] - __s2[2]); if (__s2_len > 2 && __result == 0
) __result = (((const unsigned char *) (const char *) ("X-EVOLUTION-ASSISTANT"
))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (name
, "X-EVOLUTION-ASSISTANT")))); })
) {
1247 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_ASSISTANTNAME"AssistantName",
1248 (const xmlChar*) attribute_get_nth_value (attr, 0));
1249 continue;
1250 }
1251
1252 /* ManagerName - vCard does not support Manager so we use X-EVOLUTION-MANAGER*/
1253 if (!strcmp (name, EVC_X_MANAGER)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("X-EVOLUTION-MANAGER"
) && (__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("X-EVOLUTION-MANAGER"), (!((size_t)(const void *)((name) + 1
) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) &&
(!((size_t)(const void *)(("X-EVOLUTION-MANAGER") + 1) - (size_t
)(const void *)("X-EVOLUTION-MANAGER") == 1) || __s2_len >=
4)) ? __builtin_strcmp (name, "X-EVOLUTION-MANAGER") : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s1_len = __builtin_strlen
(name), __s1_len < 4) ? (__builtin_constant_p ("X-EVOLUTION-MANAGER"
) && ((size_t)(const void *)(("X-EVOLUTION-MANAGER") +
1) - (size_t)(const void *)("X-EVOLUTION-MANAGER") == 1) ? __builtin_strcmp
(name, "X-EVOLUTION-MANAGER") : (__extension__ ({ const unsigned
char *__s2 = (const unsigned char *) (const char *) ("X-EVOLUTION-MANAGER"
); int __result = (((const unsigned char *) (const char *) (name
))[0] - __s2[0]); if (__s1_len > 0 && __result == 0
) { __result = (((const unsigned char *) (const char *) (name
))[1] - __s2[1]); if (__s1_len > 1 && __result == 0
) { __result = (((const unsigned char *) (const char *) (name
))[2] - __s2[2]); if (__s1_len > 2 && __result == 0
) __result = (((const unsigned char *) (const char *) (name))
[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("X-EVOLUTION-MANAGER"
) && ((size_t)(const void *)(("X-EVOLUTION-MANAGER") +
1) - (size_t)(const void *)("X-EVOLUTION-MANAGER") == 1) &&
(__s2_len = __builtin_strlen ("X-EVOLUTION-MANAGER"), __s2_len
< 4) ? (__builtin_constant_p (name) && ((size_t)(
const void *)((name) + 1) - (size_t)(const void *)(name) == 1
) ? __builtin_strcmp (name, "X-EVOLUTION-MANAGER") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("X-EVOLUTION-MANAGER"))[0] - __s2[0]); if (__s2_len
> 0 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("X-EVOLUTION-MANAGER"))[1] - __s2[1]
); if (__s2_len > 1 && __result == 0) { __result =
(((const unsigned char *) (const char *) ("X-EVOLUTION-MANAGER"
))[2] - __s2[2]); if (__s2_len > 2 && __result == 0
) __result = (((const unsigned char *) (const char *) ("X-EVOLUTION-MANAGER"
))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (name
, "X-EVOLUTION-MANAGER")))); })
) {
1254 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_CONTACTS2_MANAGERNAME"ManagerName",
1255 (const xmlChar*) attribute_get_nth_value (attr, 0));
1256 continue;
1257 }
1258
1259 /* Anniversary - vCard does not support Anniversary so we use X-EVOLUTION-ANNIVERSARY*/
1260 if (!strcmp (name, EVC_X_ANNIVERSARY)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("X-EVOLUTION-ANNIVERSARY"
) && (__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("X-EVOLUTION-ANNIVERSARY"), (!((size_t)(const void *)((name
) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >=
4) && (!((size_t)(const void *)(("X-EVOLUTION-ANNIVERSARY"
) + 1) - (size_t)(const void *)("X-EVOLUTION-ANNIVERSARY") ==
1) || __s2_len >= 4)) ? __builtin_strcmp (name, "X-EVOLUTION-ANNIVERSARY"
) : (__builtin_constant_p (name) && ((size_t)(const void
*)((name) + 1) - (size_t)(const void *)(name) == 1) &&
(__s1_len = __builtin_strlen (name), __s1_len < 4) ? (__builtin_constant_p
("X-EVOLUTION-ANNIVERSARY") && ((size_t)(const void *
)(("X-EVOLUTION-ANNIVERSARY") + 1) - (size_t)(const void *)("X-EVOLUTION-ANNIVERSARY"
) == 1) ? __builtin_strcmp (name, "X-EVOLUTION-ANNIVERSARY") :
(__extension__ ({ const unsigned char *__s2 = (const unsigned
char *) (const char *) ("X-EVOLUTION-ANNIVERSARY"); int __result
= (((const unsigned char *) (const char *) (name))[0] - __s2
[0]); if (__s1_len > 0 && __result == 0) { __result
= (((const unsigned char *) (const char *) (name))[1] - __s2
[1]); if (__s1_len > 1 && __result == 0) { __result
= (((const unsigned char *) (const char *) (name))[2] - __s2
[2]); if (__s1_len > 2 && __result == 0) __result =
(((const unsigned char *) (const char *) (name))[3] - __s2[3
]); } } __result; }))) : (__builtin_constant_p ("X-EVOLUTION-ANNIVERSARY"
) && ((size_t)(const void *)(("X-EVOLUTION-ANNIVERSARY"
) + 1) - (size_t)(const void *)("X-EVOLUTION-ANNIVERSARY") ==
1) && (__s2_len = __builtin_strlen ("X-EVOLUTION-ANNIVERSARY"
), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "X-EVOLUTION-ANNIVERSARY"
) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned
char *) (const char *) (name); int __result = (((const unsigned
char *) (const char *) ("X-EVOLUTION-ANNIVERSARY"))[0] - __s2
[0]); if (__s2_len > 0 && __result == 0) { __result
= (((const unsigned char *) (const char *) ("X-EVOLUTION-ANNIVERSARY"
))[1] - __s2[1]); if (__s2_len > 1 && __result == 0
) { __result = (((const unsigned char *) (const char *) ("X-EVOLUTION-ANNIVERSARY"
))[2] - __s2[2]); if (__s2_len > 2 && __result == 0
) __result = (((const unsigned char *) (const char *) ("X-EVOLUTION-ANNIVERSARY"
))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp (name
, "X-EVOLUTION-ANNIVERSARY")))); })
) {
1261 set_xml_contact_date (appData, attr, (gchar*) EAS_ELEMENT_ANNIVERSARY"Anniversary");
1262 continue;
1263 }
1264
1265 /* Note */
1266 if (!strcmp (name, EVC_NOTE)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("NOTE") && (
__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("NOTE"), (!((size_t)(const void *)((name) + 1) - (size_t)(const
void *)(name) == 1) || __s1_len >= 4) && (!((size_t
)(const void *)(("NOTE") + 1) - (size_t)(const void *)("NOTE"
) == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "NOTE"
) : (__builtin_constant_p (name) && ((size_t)(const void
*)((name) + 1) - (size_t)(const void *)(name) == 1) &&
(__s1_len = __builtin_strlen (name), __s1_len < 4) ? (__builtin_constant_p
("NOTE") && ((size_t)(const void *)(("NOTE") + 1) - (
size_t)(const void *)("NOTE") == 1) ? __builtin_strcmp (name,
"NOTE") : (__extension__ ({ const unsigned char *__s2 = (const
unsigned char *) (const char *) ("NOTE"); int __result = (((
const unsigned char *) (const char *) (name))[0] - __s2[0]); if
(__s1_len > 0 && __result == 0) { __result = (((const
unsigned char *) (const char *) (name))[1] - __s2[1]); if (__s1_len
> 1 && __result == 0) { __result = (((const unsigned
char *) (const char *) (name))[2] - __s2[2]); if (__s1_len >
2 && __result == 0) __result = (((const unsigned char
*) (const char *) (name))[3] - __s2[3]); } } __result; }))) :
(__builtin_constant_p ("NOTE") && ((size_t)(const void
*)(("NOTE") + 1) - (size_t)(const void *)("NOTE") == 1) &&
(__s2_len = __builtin_strlen ("NOTE"), __s2_len < 4) ? (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) ? __builtin_strcmp (name, "NOTE")
: -(__extension__ ({ const unsigned char *__s2 = (const unsigned
char *) (const char *) (name); int __result = (((const unsigned
char *) (const char *) ("NOTE"))[0] - __s2[0]); if (__s2_len
> 0 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("NOTE"))[1] - __s2[1]); if (__s2_len
> 1 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("NOTE"))[2] - __s2[2]); if (__s2_len
> 2 && __result == 0) __result = (((const unsigned
char *) (const char *) ("NOTE"))[3] - __s2[3]); } } __result
; }))) : __builtin_strcmp (name, "NOTE")))); })
) {
1267 set_xml_Note (appData, attr);
1268 continue;
1269 }
1270
1271 /* Photo (AS: name is "Picture") */
1272 /* Evolution saves Photo as base64 encoded so there is no need to encode*/
1273 if (!strcmp (name, EVC_PHOTO)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("PHOTO") && (
__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("PHOTO"), (!((size_t)(const void *)((name) + 1) - (size_t)(
const void *)(name) == 1) || __s1_len >= 4) && (!(
(size_t)(const void *)(("PHOTO") + 1) - (size_t)(const void *
)("PHOTO") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name
, "PHOTO") : (__builtin_constant_p (name) && ((size_t
)(const void *)((name) + 1) - (size_t)(const void *)(name) ==
1) && (__s1_len = __builtin_strlen (name), __s1_len <
4) ? (__builtin_constant_p ("PHOTO") && ((size_t)(const
void *)(("PHOTO") + 1) - (size_t)(const void *)("PHOTO") == 1
) ? __builtin_strcmp (name, "PHOTO") : (__extension__ ({ const
unsigned char *__s2 = (const unsigned char *) (const char *)
("PHOTO"); int __result = (((const unsigned char *) (const char
*) (name))[0] - __s2[0]); if (__s1_len > 0 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[1] - __s2[1]); if (__s1_len > 1 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[2] - __s2[2]); if (__s1_len > 2 && __result
== 0) __result = (((const unsigned char *) (const char *) (name
))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (
"PHOTO") && ((size_t)(const void *)(("PHOTO") + 1) - (
size_t)(const void *)("PHOTO") == 1) && (__s2_len = __builtin_strlen
("PHOTO"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "PHOTO") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("PHOTO"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("PHOTO"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("PHOTO"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("PHOTO"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "PHOTO")))); })
) {
1274 set_xml_element (appData, (const xmlChar*) EAS_ELEMENT_PHOTO"Picture",
1275 (const xmlChar*) attribute_get_nth_value (attr, 0));
1276 continue;
1277 }
1278
1279 /* Categories */
1280 if (!strcmp (name, (const char *) EVC_CATEGORIES)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ((const char *) "CATEGORIES"
) && (__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
((const char *) "CATEGORIES"), (!((size_t)(const void *)((name
) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >=
4) && (!((size_t)(const void *)(((const char *) "CATEGORIES"
) + 1) - (size_t)(const void *)((const char *) "CATEGORIES") ==
1) || __s2_len >= 4)) ? __builtin_strcmp (name, (const char
*) "CATEGORIES") : (__builtin_constant_p (name) && (
(size_t)(const void *)((name) + 1) - (size_t)(const void *)(name
) == 1) && (__s1_len = __builtin_strlen (name), __s1_len
< 4) ? (__builtin_constant_p ((const char *) "CATEGORIES"
) && ((size_t)(const void *)(((const char *) "CATEGORIES"
) + 1) - (size_t)(const void *)((const char *) "CATEGORIES") ==
1) ? __builtin_strcmp (name, (const char *) "CATEGORIES") : (
__extension__ ({ const unsigned char *__s2 = (const unsigned char
*) (const char *) ((const char *) "CATEGORIES"); int __result
= (((const unsigned char *) (const char *) (name))[0] - __s2
[0]); if (__s1_len > 0 && __result == 0) { __result
= (((const unsigned char *) (const char *) (name))[1] - __s2
[1]); if (__s1_len > 1 && __result == 0) { __result
= (((const unsigned char *) (const char *) (name))[2] - __s2
[2]); if (__s1_len > 2 && __result == 0) __result =
(((const unsigned char *) (const char *) (name))[3] - __s2[3
]); } } __result; }))) : (__builtin_constant_p ((const char *
) "CATEGORIES") && ((size_t)(const void *)(((const char
*) "CATEGORIES") + 1) - (size_t)(const void *)((const char *
) "CATEGORIES") == 1) && (__s2_len = __builtin_strlen
((const char *) "CATEGORIES"), __s2_len < 4) ? (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) ? __builtin_strcmp (name, (const char
*) "CATEGORIES") : -(__extension__ ({ const unsigned char *__s2
= (const unsigned char *) (const char *) (name); int __result
= (((const unsigned char *) (const char *) ((const char *) "CATEGORIES"
))[0] - __s2[0]); if (__s2_len > 0 && __result == 0
) { __result = (((const unsigned char *) (const char *) ((const
char *) "CATEGORIES"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ((const char *) "CATEGORIES"))[2] - __s2[2]); if (__s2_len
> 2 && __result == 0) __result = (((const unsigned
char *) (const char *) ((const char *) "CATEGORIES"))[3] - __s2
[3]); } } __result; }))) : __builtin_strcmp (name, (const char
*) "CATEGORIES")))); })
) {
1281 set_xml_categories (appData, attr);
1282 continue;
1283 }
1284
1285 /* EMail */
1286 if (!strcmp (name, EVC_EMAIL)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("EMAIL") && (
__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("EMAIL"), (!((size_t)(const void *)((name) + 1) - (size_t)(
const void *)(name) == 1) || __s1_len >= 4) && (!(
(size_t)(const void *)(("EMAIL") + 1) - (size_t)(const void *
)("EMAIL") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name
, "EMAIL") : (__builtin_constant_p (name) && ((size_t
)(const void *)((name) + 1) - (size_t)(const void *)(name) ==
1) && (__s1_len = __builtin_strlen (name), __s1_len <
4) ? (__builtin_constant_p ("EMAIL") && ((size_t)(const
void *)(("EMAIL") + 1) - (size_t)(const void *)("EMAIL") == 1
) ? __builtin_strcmp (name, "EMAIL") : (__extension__ ({ const
unsigned char *__s2 = (const unsigned char *) (const char *)
("EMAIL"); int __result = (((const unsigned char *) (const char
*) (name))[0] - __s2[0]); if (__s1_len > 0 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[1] - __s2[1]); if (__s1_len > 1 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[2] - __s2[2]); if (__s1_len > 2 && __result
== 0) __result = (((const unsigned char *) (const char *) (name
))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (
"EMAIL") && ((size_t)(const void *)(("EMAIL") + 1) - (
size_t)(const void *)("EMAIL") == 1) && (__s2_len = __builtin_strlen
("EMAIL"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "EMAIL") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("EMAIL"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("EMAIL"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("EMAIL"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("EMAIL"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "EMAIL")))); })
) {
1287 set_xml_email (appData, attr);
1288 continue;
1289 }
1290
1291 /* Telephone */
1292 if (!strcmp (name, EVC_TEL)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("TEL") && (__s1_len
= __builtin_strlen (name), __s2_len = __builtin_strlen ("TEL"
), (!((size_t)(const void *)((name) + 1) - (size_t)(const void
*)(name) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("TEL") + 1) - (size_t)(const void *)("TEL") == 1) ||
__s2_len >= 4)) ? __builtin_strcmp (name, "TEL") : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s1_len = __builtin_strlen
(name), __s1_len < 4) ? (__builtin_constant_p ("TEL") &&
((size_t)(const void *)(("TEL") + 1) - (size_t)(const void *
)("TEL") == 1) ? __builtin_strcmp (name, "TEL") : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) ("TEL"); int __result = (((const unsigned char *) (const
char *) (name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
("TEL") && ((size_t)(const void *)(("TEL") + 1) - (size_t
)(const void *)("TEL") == 1) && (__s2_len = __builtin_strlen
("TEL"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "TEL") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("TEL"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("TEL"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("TEL"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("TEL"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "TEL")))); })
) {
1293 set_xml_tel (appData, attr);
1294 continue;
1295 }
1296
1297 if (!strcmp (name, EVC_ADR)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("ADR") && (__s1_len
= __builtin_strlen (name), __s2_len = __builtin_strlen ("ADR"
), (!((size_t)(const void *)((name) + 1) - (size_t)(const void
*)(name) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("ADR") + 1) - (size_t)(const void *)("ADR") == 1) ||
__s2_len >= 4)) ? __builtin_strcmp (name, "ADR") : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s1_len = __builtin_strlen
(name), __s1_len < 4) ? (__builtin_constant_p ("ADR") &&
((size_t)(const void *)(("ADR") + 1) - (size_t)(const void *
)("ADR") == 1) ? __builtin_strcmp (name, "ADR") : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) ("ADR"); int __result = (((const unsigned char *) (const
char *) (name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
("ADR") && ((size_t)(const void *)(("ADR") + 1) - (size_t
)(const void *)("ADR") == 1) && (__s2_len = __builtin_strlen
("ADR"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "ADR") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("ADR"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("ADR"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("ADR"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("ADR"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "ADR")))); })
) {
1298 set_xml_address (appData, attr);
1299 continue;
1300 }
1301
1302#if 0
1303 /* ActiveSync does not support the following vCard fields: */
1304
1305 /* FullName */
1306 if (!strcmp (name, EVC_FN)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("FN") && (__s1_len
= __builtin_strlen (name), __s2_len = __builtin_strlen ("FN"
), (!((size_t)(const void *)((name) + 1) - (size_t)(const void
*)(name) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("FN") + 1) - (size_t)(const void *)("FN") == 1) || __s2_len
>= 4)) ? __builtin_strcmp (name, "FN") : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s1_len = __builtin_strlen
(name), __s1_len < 4) ? (__builtin_constant_p ("FN") &&
((size_t)(const void *)(("FN") + 1) - (size_t)(const void *)
("FN") == 1) ? __builtin_strcmp (name, "FN") : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) ("FN"); int __result = (((const unsigned char *) (const
char *) (name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
("FN") && ((size_t)(const void *)(("FN") + 1) - (size_t
)(const void *)("FN") == 1) && (__s2_len = __builtin_strlen
("FN"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "FN") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("FN"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("FN"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("FN"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("FN"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "FN")))); })
) {
1307 continue;
1308 }
1309
1310 /* Uid */
1311 if (!strcmp (name, EVC_UID)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("UID") && (__s1_len
= __builtin_strlen (name), __s2_len = __builtin_strlen ("UID"
), (!((size_t)(const void *)((name) + 1) - (size_t)(const void
*)(name) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("UID") + 1) - (size_t)(const void *)("UID") == 1) ||
__s2_len >= 4)) ? __builtin_strcmp (name, "UID") : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s1_len = __builtin_strlen
(name), __s1_len < 4) ? (__builtin_constant_p ("UID") &&
((size_t)(const void *)(("UID") + 1) - (size_t)(const void *
)("UID") == 1) ? __builtin_strcmp (name, "UID") : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) ("UID"); int __result = (((const unsigned char *) (const
char *) (name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
("UID") && ((size_t)(const void *)(("UID") + 1) - (size_t
)(const void *)("UID") == 1) && (__s2_len = __builtin_strlen
("UID"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "UID") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("UID"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("UID"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("UID"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("UID"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "UID")))); })
) {
1312 continue;
1313 }
1314
1315 /* Address Labeling */
1316 if (!strcmp (name, EVC_LABEL)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("LABEL") && (
__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("LABEL"), (!((size_t)(const void *)((name) + 1) - (size_t)(
const void *)(name) == 1) || __s1_len >= 4) && (!(
(size_t)(const void *)(("LABEL") + 1) - (size_t)(const void *
)("LABEL") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name
, "LABEL") : (__builtin_constant_p (name) && ((size_t
)(const void *)((name) + 1) - (size_t)(const void *)(name) ==
1) && (__s1_len = __builtin_strlen (name), __s1_len <
4) ? (__builtin_constant_p ("LABEL") && ((size_t)(const
void *)(("LABEL") + 1) - (size_t)(const void *)("LABEL") == 1
) ? __builtin_strcmp (name, "LABEL") : (__extension__ ({ const
unsigned char *__s2 = (const unsigned char *) (const char *)
("LABEL"); int __result = (((const unsigned char *) (const char
*) (name))[0] - __s2[0]); if (__s1_len > 0 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[1] - __s2[1]); if (__s1_len > 1 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[2] - __s2[2]); if (__s1_len > 2 && __result
== 0) __result = (((const unsigned char *) (const char *) (name
))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (
"LABEL") && ((size_t)(const void *)(("LABEL") + 1) - (
size_t)(const void *)("LABEL") == 1) && (__s2_len = __builtin_strlen
("LABEL"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "LABEL") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("LABEL"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("LABEL"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("LABEL"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("LABEL"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "LABEL")))); })
) {
1317 continue;
1318 }
1319
1320 /* Mailer */
1321 if (!strcmp (name, EVC_MAILER)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("MAILER") &&
(__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("MAILER"), (!((size_t)(const void *)((name) + 1) - (size_t)
(const void *)(name) == 1) || __s1_len >= 4) && (!
((size_t)(const void *)(("MAILER") + 1) - (size_t)(const void
*)("MAILER") == 1) || __s2_len >= 4)) ? __builtin_strcmp (
name, "MAILER") : (__builtin_constant_p (name) && ((size_t
)(const void *)((name) + 1) - (size_t)(const void *)(name) ==
1) && (__s1_len = __builtin_strlen (name), __s1_len <
4) ? (__builtin_constant_p ("MAILER") && ((size_t)(const
void *)(("MAILER") + 1) - (size_t)(const void *)("MAILER") ==
1) ? __builtin_strcmp (name, "MAILER") : (__extension__ ({ const
unsigned char *__s2 = (const unsigned char *) (const char *)
("MAILER"); int __result = (((const unsigned char *) (const char
*) (name))[0] - __s2[0]); if (__s1_len > 0 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[1] - __s2[1]); if (__s1_len > 1 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[2] - __s2[2]); if (__s1_len > 2 && __result
== 0) __result = (((const unsigned char *) (const char *) (name
))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (
"MAILER") && ((size_t)(const void *)(("MAILER") + 1) -
(size_t)(const void *)("MAILER") == 1) && (__s2_len =
__builtin_strlen ("MAILER"), __s2_len < 4) ? (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) ? __builtin_strcmp (name, "MAILER"
) : -(__extension__ ({ const unsigned char *__s2 = (const unsigned
char *) (const char *) (name); int __result = (((const unsigned
char *) (const char *) ("MAILER"))[0] - __s2[0]); if (__s2_len
> 0 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("MAILER"))[1] - __s2[1]); if (__s2_len
> 1 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("MAILER"))[2] - __s2[2]); if (__s2_len
> 2 && __result == 0) __result = (((const unsigned
char *) (const char *) ("MAILER"))[3] - __s2[3]); } } __result
; }))) : __builtin_strcmp (name, "MAILER")))); })
) {
1322 continue;
1323 }
1324
1325 /* Timezone */
1326 if (!strcmp (name, "TZ")__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("TZ") && (__s1_len
= __builtin_strlen (name), __s2_len = __builtin_strlen ("TZ"
), (!((size_t)(const void *)((name) + 1) - (size_t)(const void
*)(name) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("TZ") + 1) - (size_t)(const void *)("TZ") == 1) || __s2_len
>= 4)) ? __builtin_strcmp (name, "TZ") : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s1_len = __builtin_strlen
(name), __s1_len < 4) ? (__builtin_constant_p ("TZ") &&
((size_t)(const void *)(("TZ") + 1) - (size_t)(const void *)
("TZ") == 1) ? __builtin_strcmp (name, "TZ") : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) ("TZ"); int __result = (((const unsigned char *) (const
char *) (name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
("TZ") && ((size_t)(const void *)(("TZ") + 1) - (size_t
)(const void *)("TZ") == 1) && (__s2_len = __builtin_strlen
("TZ"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "TZ") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("TZ"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("TZ"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("TZ"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("TZ"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "TZ")))); })
) {
1327 continue;
1328 }
1329
1330 /* Location */
1331 if (!strcmp (name, EVC_GEO)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("GEO") && (__s1_len
= __builtin_strlen (name), __s2_len = __builtin_strlen ("GEO"
), (!((size_t)(const void *)((name) + 1) - (size_t)(const void
*)(name) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("GEO") + 1) - (size_t)(const void *)("GEO") == 1) ||
__s2_len >= 4)) ? __builtin_strcmp (name, "GEO") : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s1_len = __builtin_strlen
(name), __s1_len < 4) ? (__builtin_constant_p ("GEO") &&
((size_t)(const void *)(("GEO") + 1) - (size_t)(const void *
)("GEO") == 1) ? __builtin_strcmp (name, "GEO") : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) ("GEO"); int __result = (((const unsigned char *) (const
char *) (name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
("GEO") && ((size_t)(const void *)(("GEO") + 1) - (size_t
)(const void *)("GEO") == 1) && (__s2_len = __builtin_strlen
("GEO"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "GEO") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("GEO"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("GEO"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("GEO"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("GEO"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "GEO")))); })
) {
1332 continue;
1333 }
1334
1335 /* Logo */
1336 if (!strcmp (name, EVC_LOGO)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("LOGO") && (
__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("LOGO"), (!((size_t)(const void *)((name) + 1) - (size_t)(const
void *)(name) == 1) || __s1_len >= 4) && (!((size_t
)(const void *)(("LOGO") + 1) - (size_t)(const void *)("LOGO"
) == 1) || __s2_len >= 4)) ? __builtin_strcmp (name, "LOGO"
) : (__builtin_constant_p (name) && ((size_t)(const void
*)((name) + 1) - (size_t)(const void *)(name) == 1) &&
(__s1_len = __builtin_strlen (name), __s1_len < 4) ? (__builtin_constant_p
("LOGO") && ((size_t)(const void *)(("LOGO") + 1) - (
size_t)(const void *)("LOGO") == 1) ? __builtin_strcmp (name,
"LOGO") : (__extension__ ({ const unsigned char *__s2 = (const
unsigned char *) (const char *) ("LOGO"); int __result = (((
const unsigned char *) (const char *) (name))[0] - __s2[0]); if
(__s1_len > 0 && __result == 0) { __result = (((const
unsigned char *) (const char *) (name))[1] - __s2[1]); if (__s1_len
> 1 && __result == 0) { __result = (((const unsigned
char *) (const char *) (name))[2] - __s2[2]); if (__s1_len >
2 && __result == 0) __result = (((const unsigned char
*) (const char *) (name))[3] - __s2[3]); } } __result; }))) :
(__builtin_constant_p ("LOGO") && ((size_t)(const void
*)(("LOGO") + 1) - (size_t)(const void *)("LOGO") == 1) &&
(__s2_len = __builtin_strlen ("LOGO"), __s2_len < 4) ? (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) ? __builtin_strcmp (name, "LOGO")
: -(__extension__ ({ const unsigned char *__s2 = (const unsigned
char *) (const char *) (name); int __result = (((const unsigned
char *) (const char *) ("LOGO"))[0] - __s2[0]); if (__s2_len
> 0 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("LOGO"))[1] - __s2[1]); if (__s2_len
> 1 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("LOGO"))[2] - __s2[2]); if (__s2_len
> 2 && __result == 0) __result = (((const unsigned
char *) (const char *) ("LOGO"))[3] - __s2[3]); } } __result
; }))) : __builtin_strcmp (name, "LOGO")))); })
) {
1337 continue;
1338 }
1339
1340 /* Revision */
1341 if (!strcmp (name, EVC_REV)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("REV") && (__s1_len
= __builtin_strlen (name), __s2_len = __builtin_strlen ("REV"
), (!((size_t)(const void *)((name) + 1) - (size_t)(const void
*)(name) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("REV") + 1) - (size_t)(const void *)("REV") == 1) ||
__s2_len >= 4)) ? __builtin_strcmp (name, "REV") : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s1_len = __builtin_strlen
(name), __s1_len < 4) ? (__builtin_constant_p ("REV") &&
((size_t)(const void *)(("REV") + 1) - (size_t)(const void *
)("REV") == 1) ? __builtin_strcmp (name, "REV") : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) ("REV"); int __result = (((const unsigned char *) (const
char *) (name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
("REV") && ((size_t)(const void *)(("REV") + 1) - (size_t
)(const void *)("REV") == 1) && (__s2_len = __builtin_strlen
("REV"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "REV") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("REV"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("REV"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("REV"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("REV"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "REV")))); })
) {
1342 continue;
1343 }
1344
1345 /* Sound */
1346 if (!strcmp (name, "SOUND")__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("SOUND") && (
__s1_len = __builtin_strlen (name), __s2_len = __builtin_strlen
("SOUND"), (!((size_t)(const void *)((name) + 1) - (size_t)(
const void *)(name) == 1) || __s1_len >= 4) && (!(
(size_t)(const void *)(("SOUND") + 1) - (size_t)(const void *
)("SOUND") == 1) || __s2_len >= 4)) ? __builtin_strcmp (name
, "SOUND") : (__builtin_constant_p (name) && ((size_t
)(const void *)((name) + 1) - (size_t)(const void *)(name) ==
1) && (__s1_len = __builtin_strlen (name), __s1_len <
4) ? (__builtin_constant_p ("SOUND") && ((size_t)(const
void *)(("SOUND") + 1) - (size_t)(const void *)("SOUND") == 1
) ? __builtin_strcmp (name, "SOUND") : (__extension__ ({ const
unsigned char *__s2 = (const unsigned char *) (const char *)
("SOUND"); int __result = (((const unsigned char *) (const char
*) (name))[0] - __s2[0]); if (__s1_len > 0 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[1] - __s2[1]); if (__s1_len > 1 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
name))[2] - __s2[2]); if (__s1_len > 2 && __result
== 0) __result = (((const unsigned char *) (const char *) (name
))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (
"SOUND") && ((size_t)(const void *)(("SOUND") + 1) - (
size_t)(const void *)("SOUND") == 1) && (__s2_len = __builtin_strlen
("SOUND"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "SOUND") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("SOUND"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("SOUND"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("SOUND"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("SOUND"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "SOUND")))); })
) {
1347 continue;
1348 }
1349
1350 /* Public Key */
1351 if (!strcmp (name, EVC_KEY)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(name) && __builtin_constant_p ("KEY") && (__s1_len
= __builtin_strlen (name), __s2_len = __builtin_strlen ("KEY"
), (!((size_t)(const void *)((name) + 1) - (size_t)(const void
*)(name) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("KEY") + 1) - (size_t)(const void *)("KEY") == 1) ||
__s2_len >= 4)) ? __builtin_strcmp (name, "KEY") : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s1_len = __builtin_strlen
(name), __s1_len < 4) ? (__builtin_constant_p ("KEY") &&
((size_t)(const void *)(("KEY") + 1) - (size_t)(const void *
)("KEY") == 1) ? __builtin_strcmp (name, "KEY") : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) ("KEY"); int __result = (((const unsigned char *) (const
char *) (name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
("KEY") && ((size_t)(const void *)(("KEY") + 1) - (size_t
)(const void *)("KEY") == 1) && (__s2_len = __builtin_strlen
("KEY"), __s2_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (name, "KEY") : -(__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) ("KEY"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("KEY"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("KEY"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("KEY"))[3] - __s2[3]); } } __result; }))) : __builtin_strcmp
(name, "KEY")))); })
) {
1352 continue;
1353 }
1354#endif
1355 }
1356
1357
1358 g_object_unref (vcard);
1359
1360 set_missing_contact_properties (appData);
1361
1362 if (getenv ("EAS_DEBUG") && (atoi (g_getenv ("EAS_DEBUG")) >= 4)) {
1363 xmlChar* dump_buffer = NULL((void*)0);
1364 int dump_buffer_size = 0;
1365 xmlIndentTreeOutput(*(__xmlIndentTreeOutput())) = 1;
1366 xmlDocDumpFormatMemory (doc, &dump_buffer, &dump_buffer_size, 1);
1367 g_debug ("XML DOCUMENT DUMPED:\n%s", dump_buffer);
1368 xmlFree (dump_buffer);
1369 }
1370
1371 g_debug ("eas_con_info_translator_parse_request --");
1372 return success;
1373}