File: | activesyncd/eas-daemon/libeas/eas-con-info-translator.c |
Warning: | line 765, column 2 Value stored to 'node' is never read |
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 |
158 | static 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 | |
177 | static void |
178 | add_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 | |
205 | static void |
206 | add_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 */ |
227 | static 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 | |
249 | static 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 | |
259 | static 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 | |
270 | static 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 | |
281 | static 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 | |
292 | gchar* 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 | |
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; |
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 */ |
656 | enum Type { |
657 | OTHER, |
658 | HOME, |
659 | WORK, |
660 | CAR, |
661 | RADIO, |
662 | CELL, |
663 | VOICE, |
664 | FAX, |
665 | PAGER, |
666 | }; |
667 | |
668 | static int |
669 | string_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 | |
704 | enum 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 */ |
720 | static int |
721 | attribute_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 | |
747 | static const char * |
748 | attribute_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*/ |
760 | static gboolean |
761 | is_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; |
Value stored to 'node' is never read | |
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 | |
773 | static void |
774 | set_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 | |
784 | static void |
785 | set_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 | |
800 | static void |
801 | set_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 | |
811 | static void |
812 | set_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 | |
842 | static void |
843 | set_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 | |
897 | static void |
898 | set_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 | |
955 | static void |
956 | set_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 | |
972 | static void |
973 | set_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 | |
986 | static void |
987 | set_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 | |
1004 | static void |
1005 | set_xml_Note (xmlNodePtr appData, EVCardAttribute *attr) |
1006 | { |
1007 | set_xml_Note_text (appData, attribute_get_nth_value(attr, 0)); |
1008 | } |
1009 | |
1010 | static void |
1011 | set_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 | */ |
1084 | static void |
1085 | set_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 | |
1135 | gboolean |
1136 | eas_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 | } |