Diffstat (limited to 'libical/src/libical/icalparameter.c') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libical/src/libical/icalparameter.c | 113 |
1 files changed, 58 insertions, 55 deletions
diff --git a/libical/src/libical/icalparameter.c b/libical/src/libical/icalparameter.c index 156ecdb..759306f 100644 --- a/libical/src/libical/icalparameter.c +++ b/libical/src/libical/icalparameter.c | |||
@@ -80,7 +80,4 @@ icalparameter_new (icalparameter_kind kind) | |||
80 | void | 80 | void |
81 | icalparameter_free (icalparameter* parameter) | 81 | icalparameter_free (icalparameter* param) |
82 | { | 82 | { |
83 | struct icalparameter_impl * impl; | ||
84 | |||
85 | impl = (struct icalparameter_impl*)parameter; | ||
86 | 83 | ||
@@ -91,6 +88,6 @@ icalparameter_free (icalparameter* parameter) | |||
91 | #ifdef ICAL_FREE_ON_LIST_IS_ERROR | 88 | #ifdef ICAL_FREE_ON_LIST_IS_ERROR |
92 | icalerror_assert( (impl->parent ==0),"Tried to free a parameter that is still attached to a component. "); | 89 | icalerror_assert( (param->parent ==0),"Tried to free a parameter that is still attached to a component. "); |
93 | 90 | ||
94 | #else | 91 | #else |
95 | if(impl->parent !=0){ | 92 | if(param->parent !=0){ |
96 | return; | 93 | return; |
@@ -100,15 +97,15 @@ icalparameter_free (icalparameter* parameter) | |||
100 | 97 | ||
101 | if (impl->string != 0){ | 98 | if (param->string != 0){ |
102 | free ((void*)impl->string); | 99 | free ((void*)param->string); |
103 | } | 100 | } |
104 | 101 | ||
105 | if (impl->x_name != 0){ | 102 | if (param->x_name != 0){ |
106 | free ((void*)impl->x_name); | 103 | free ((void*)param->x_name); |
107 | } | 104 | } |
108 | 105 | ||
109 | memset(impl,0,sizeof(impl)); | 106 | memset(param,0,sizeof(param)); |
110 | 107 | ||
111 | impl->parent = 0; | 108 | param->parent = 0; |
112 | impl->id[0] = 'X'; | 109 | param->id[0] = 'X'; |
113 | free(impl); | 110 | free(param); |
114 | } | 111 | } |
@@ -118,11 +115,9 @@ icalparameter_free (icalparameter* parameter) | |||
118 | icalparameter* | 115 | icalparameter* |
119 | icalparameter_new_clone(icalparameter* param) | 116 | icalparameter_new_clone(icalparameter* old) |
120 | { | 117 | { |
121 | struct icalparameter_impl *old; | ||
122 | struct icalparameter_impl *new; | 118 | struct icalparameter_impl *new; |
123 | 119 | ||
124 | old = (struct icalparameter_impl *)param; | ||
125 | new = icalparameter_new_impl(old->kind); | 120 | new = icalparameter_new_impl(old->kind); |
126 | 121 | ||
127 | icalerror_check_arg_rz((param!=0),"param"); | 122 | icalerror_check_arg_rz((old!=0),"param"); |
128 | 123 | ||
@@ -199,6 +194,16 @@ icalparameter* icalparameter_new_from_string(const char *str) | |||
199 | 194 | ||
195 | /** | ||
196 | * Return a string representation of the parameter according to RFC2445. | ||
197 | * | ||
198 | * param= param-name "=" param-value | ||
199 | * param-name= iana-token / x-token | ||
200 | * param-value= paramtext /quoted-string | ||
201 | * paramtext= *SAFE-SHARE | ||
202 | * quoted-string= DQUOTE *QSAFE-CHARE DQUOTE | ||
203 | * QSAFE-CHAR= any character except CTLs and DQUOTE | ||
204 | * SAFE-CHAR= any character except CTLs, DQUOTE. ";", ":", "," | ||
205 | */ | ||
200 | char* | 206 | char* |
201 | icalparameter_as_ical_string (icalparameter* parameter) | 207 | icalparameter_as_ical_string (icalparameter* param) |
202 | { | 208 | { |
203 | struct icalparameter_impl* impl; | ||
204 | size_t buf_size = 1024; | 209 | size_t buf_size = 1024; |
@@ -209,3 +214,3 @@ icalparameter_as_ical_string (icalparameter* parameter) | |||
209 | 214 | ||
210 | icalerror_check_arg_rz( (parameter!=0), "parameter"); | 215 | icalerror_check_arg_rz( (param!=0), "parameter"); |
211 | 216 | ||
@@ -219,8 +224,7 @@ icalparameter_as_ical_string (icalparameter* parameter) | |||
219 | buf_ptr = buf; | 224 | buf_ptr = buf; |
220 | impl = (struct icalparameter_impl*)parameter; | ||
221 | 225 | ||
222 | if(impl->kind == ICAL_X_PARAMETER) { | 226 | if(param->kind == ICAL_X_PARAMETER) { |
223 | 227 | ||
224 | icalmemory_append_string(&buf, &buf_ptr, &buf_size, | 228 | icalmemory_append_string(&buf, &buf_ptr, &buf_size, |
225 | icalparameter_get_xname(impl)); | 229 | icalparameter_get_xname(param)); |
226 | 230 | ||
@@ -228,6 +232,6 @@ icalparameter_as_ical_string (icalparameter* parameter) | |||
228 | 232 | ||
229 | kind_string = icalparameter_kind_to_string(impl->kind); | 233 | kind_string = icalparameter_kind_to_string(param->kind); |
230 | 234 | ||
231 | if (impl->kind == ICAL_NO_PARAMETER || | 235 | if (param->kind == ICAL_NO_PARAMETER || |
232 | impl->kind == ICAL_ANY_PARAMETER || | 236 | param->kind == ICAL_ANY_PARAMETER || |
233 | kind_string == 0) | 237 | kind_string == 0) |
@@ -246,6 +250,16 @@ icalparameter_as_ical_string (icalparameter* parameter) | |||
246 | 250 | ||
247 | if(impl->string !=0){ | 251 | if(param->string !=0){ |
248 | icalmemory_append_string(&buf, &buf_ptr, &buf_size, impl->string); | 252 | int qm = 0; |
249 | } else if (impl->data != 0){ | 253 | |
250 | const char* str = icalparameter_enum_to_string(impl->data); | 254 | /* Encapsulate the property in quotes if necessary */ |
255 | if (strpbrk(param->string, ";:,") != 0) { | ||
256 | icalmemory_append_char (&buf, &buf_ptr, &buf_size, '"'); | ||
257 | qm = 1; | ||
258 | } | ||
259 | icalmemory_append_string(&buf, &buf_ptr, &buf_size, param->string); | ||
260 | if (qm == 1) { | ||
261 | icalmemory_append_char (&buf, &buf_ptr, &buf_size, '"'); | ||
262 | } | ||
263 | } else if (param->data != 0){ | ||
264 | const char* str = icalparameter_enum_to_string(param->data); | ||
251 | icalmemory_append_string(&buf, &buf_ptr, &buf_size, str); | 265 | icalmemory_append_string(&buf, &buf_ptr, &buf_size, str); |
@@ -280,3 +294,3 @@ icalparameter_isa (icalparameter* parameter) | |||
280 | 294 | ||
281 | return ((struct icalparameter_impl *)parameter)->kind; | 295 | return parameter->kind; |
282 | } | 296 | } |
@@ -304,3 +318,2 @@ icalparameter_set_xname (icalparameter* param, const char* v) | |||
304 | { | 318 | { |
305 | struct icalparameter_impl *impl = (struct icalparameter_impl*)param; | ||
306 | icalerror_check_arg_rv( (param!=0),"param"); | 319 | icalerror_check_arg_rv( (param!=0),"param"); |
@@ -308,9 +321,9 @@ icalparameter_set_xname (icalparameter* param, const char* v) | |||
308 | 321 | ||
309 | if (impl->x_name != 0){ | 322 | if (param->x_name != 0){ |
310 | free((void*)impl->x_name); | 323 | free((void*)param->x_name); |
311 | } | 324 | } |
312 | 325 | ||
313 | impl->x_name = icalmemory_strdup(v); | 326 | param->x_name = icalmemory_strdup(v); |
314 | 327 | ||
315 | if (impl->x_name == 0){ | 328 | if (param->x_name == 0){ |
316 | errno = ENOMEM; | 329 | errno = ENOMEM; |
@@ -323,6 +336,5 @@ icalparameter_get_xname (icalparameter* param) | |||
323 | { | 336 | { |
324 | struct icalparameter_impl *impl = (struct icalparameter_impl*)param; | ||
325 | icalerror_check_arg_rz( (param!=0),"param"); | 337 | icalerror_check_arg_rz( (param!=0),"param"); |
326 | 338 | ||
327 | return impl->x_name; | 339 | return param->x_name; |
328 | } | 340 | } |
@@ -332,4 +344,2 @@ icalparameter_set_xvalue (icalparameter* param, const char* v) | |||
332 | { | 344 | { |
333 | struct icalparameter_impl *impl = (struct icalparameter_impl*)param; | ||
334 | |||
335 | icalerror_check_arg_rv( (param!=0),"param"); | 345 | icalerror_check_arg_rv( (param!=0),"param"); |
@@ -337,9 +347,9 @@ icalparameter_set_xvalue (icalparameter* param, const char* v) | |||
337 | 347 | ||
338 | if (impl->string != 0){ | 348 | if (param->string != 0){ |
339 | free((void*)impl->string); | 349 | free((void*)param->string); |
340 | } | 350 | } |
341 | 351 | ||
342 | impl->string = icalmemory_strdup(v); | 352 | param->string = icalmemory_strdup(v); |
343 | 353 | ||
344 | if (impl->string == 0){ | 354 | if (param->string == 0){ |
345 | errno = ENOMEM; | 355 | errno = ENOMEM; |
@@ -352,8 +362,5 @@ icalparameter_get_xvalue (icalparameter* param) | |||
352 | { | 362 | { |
353 | struct icalparameter_impl *impl = (struct icalparameter_impl*)param; | ||
354 | |||
355 | icalerror_check_arg_rz( (param!=0),"param"); | 363 | icalerror_check_arg_rz( (param!=0),"param"); |
356 | 364 | ||
357 | return impl->string; | 365 | return param->string; |
358 | |||
359 | } | 366 | } |
@@ -363,7 +370,5 @@ void icalparameter_set_parent(icalparameter* param, | |||
363 | { | 370 | { |
364 | struct icalparameter_impl *impl = (struct icalparameter_impl*)param; | ||
365 | |||
366 | icalerror_check_arg_rv( (param!=0),"param"); | 371 | icalerror_check_arg_rv( (param!=0),"param"); |
367 | 372 | ||
368 | impl->parent = property; | 373 | param->parent = property; |
369 | } | 374 | } |
@@ -372,7 +377,5 @@ icalproperty* icalparameter_get_parent(icalparameter* param) | |||
372 | { | 377 | { |
373 | struct icalparameter_impl *impl = (struct icalparameter_impl*)param; | ||
374 | |||
375 | icalerror_check_arg_rz( (param!=0),"param"); | 378 | icalerror_check_arg_rz( (param!=0),"param"); |
376 | 379 | ||
377 | return impl->parent; | 380 | return param->parent; |
378 | } | 381 | } |