summaryrefslogtreecommitdiffabout
path: root/libical/src/libical/icalparameter.c
Side-by-side diff
Diffstat (limited to 'libical/src/libical/icalparameter.c') (more/less context) (ignore whitespace changes)
-rw-r--r--libical/src/libical/icalparameter.c113
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)
void
-icalparameter_free (icalparameter* parameter)
+icalparameter_free (icalparameter* param)
{
- struct icalparameter_impl * impl;
-
- impl = (struct icalparameter_impl*)parameter;
@@ -91,6 +88,6 @@ icalparameter_free (icalparameter* parameter)
#ifdef ICAL_FREE_ON_LIST_IS_ERROR
- icalerror_assert( (impl->parent ==0),"Tried to free a parameter that is still attached to a component. ");
+ icalerror_assert( (param->parent ==0),"Tried to free a parameter that is still attached to a component. ");
#else
- if(impl->parent !=0){
+ if(param->parent !=0){
return;
@@ -100,15 +97,15 @@ icalparameter_free (icalparameter* parameter)
- if (impl->string != 0){
- free ((void*)impl->string);
+ if (param->string != 0){
+ free ((void*)param->string);
}
- if (impl->x_name != 0){
- free ((void*)impl->x_name);
+ if (param->x_name != 0){
+ free ((void*)param->x_name);
}
- memset(impl,0,sizeof(impl));
+ memset(param,0,sizeof(param));
- impl->parent = 0;
- impl->id[0] = 'X';
- free(impl);
+ param->parent = 0;
+ param->id[0] = 'X';
+ free(param);
}
@@ -118,11 +115,9 @@ icalparameter_free (icalparameter* parameter)
icalparameter*
-icalparameter_new_clone(icalparameter* param)
+icalparameter_new_clone(icalparameter* old)
{
- struct icalparameter_impl *old;
struct icalparameter_impl *new;
- old = (struct icalparameter_impl *)param;
new = icalparameter_new_impl(old->kind);
- icalerror_check_arg_rz((param!=0),"param");
+ icalerror_check_arg_rz((old!=0),"param");
@@ -199,6 +194,16 @@ icalparameter* icalparameter_new_from_string(const char *str)
+/**
+ * Return a string representation of the parameter according to RFC2445.
+ *
+ * param = param-name "=" param-value
+ * param-name = iana-token / x-token
+ * param-value = paramtext /quoted-string
+ * paramtext = *SAFE-SHARE
+ * quoted-string= DQUOTE *QSAFE-CHARE DQUOTE
+ * QSAFE-CHAR = any character except CTLs and DQUOTE
+ * SAFE-CHAR = any character except CTLs, DQUOTE. ";", ":", ","
+ */
char*
-icalparameter_as_ical_string (icalparameter* parameter)
+icalparameter_as_ical_string (icalparameter* param)
{
- struct icalparameter_impl* impl;
size_t buf_size = 1024;
@@ -209,3 +214,3 @@ icalparameter_as_ical_string (icalparameter* parameter)
- icalerror_check_arg_rz( (parameter!=0), "parameter");
+ icalerror_check_arg_rz( (param!=0), "parameter");
@@ -219,8 +224,7 @@ icalparameter_as_ical_string (icalparameter* parameter)
buf_ptr = buf;
- impl = (struct icalparameter_impl*)parameter;
- if(impl->kind == ICAL_X_PARAMETER) {
+ if(param->kind == ICAL_X_PARAMETER) {
icalmemory_append_string(&buf, &buf_ptr, &buf_size,
- icalparameter_get_xname(impl));
+ icalparameter_get_xname(param));
@@ -228,6 +232,6 @@ icalparameter_as_ical_string (icalparameter* parameter)
- kind_string = icalparameter_kind_to_string(impl->kind);
+ kind_string = icalparameter_kind_to_string(param->kind);
- if (impl->kind == ICAL_NO_PARAMETER ||
- impl->kind == ICAL_ANY_PARAMETER ||
+ if (param->kind == ICAL_NO_PARAMETER ||
+ param->kind == ICAL_ANY_PARAMETER ||
kind_string == 0)
@@ -246,6 +250,16 @@ icalparameter_as_ical_string (icalparameter* parameter)
- if(impl->string !=0){
- icalmemory_append_string(&buf, &buf_ptr, &buf_size, impl->string);
- } else if (impl->data != 0){
- const char* str = icalparameter_enum_to_string(impl->data);
+ if(param->string !=0){
+ int qm = 0;
+
+ /* Encapsulate the property in quotes if necessary */
+ if (strpbrk(param->string, ";:,") != 0) {
+ icalmemory_append_char (&buf, &buf_ptr, &buf_size, '"');
+ qm = 1;
+ }
+ icalmemory_append_string(&buf, &buf_ptr, &buf_size, param->string);
+ if (qm == 1) {
+ icalmemory_append_char (&buf, &buf_ptr, &buf_size, '"');
+ }
+ } else if (param->data != 0){
+ const char* str = icalparameter_enum_to_string(param->data);
icalmemory_append_string(&buf, &buf_ptr, &buf_size, str);
@@ -280,3 +294,3 @@ icalparameter_isa (icalparameter* parameter)
- return ((struct icalparameter_impl *)parameter)->kind;
+ return parameter->kind;
}
@@ -304,3 +318,2 @@ icalparameter_set_xname (icalparameter* param, const char* v)
{
- struct icalparameter_impl *impl = (struct icalparameter_impl*)param;
icalerror_check_arg_rv( (param!=0),"param");
@@ -308,9 +321,9 @@ icalparameter_set_xname (icalparameter* param, const char* v)
- if (impl->x_name != 0){
- free((void*)impl->x_name);
+ if (param->x_name != 0){
+ free((void*)param->x_name);
}
- impl->x_name = icalmemory_strdup(v);
+ param->x_name = icalmemory_strdup(v);
- if (impl->x_name == 0){
+ if (param->x_name == 0){
errno = ENOMEM;
@@ -323,6 +336,5 @@ icalparameter_get_xname (icalparameter* param)
{
- struct icalparameter_impl *impl = (struct icalparameter_impl*)param;
icalerror_check_arg_rz( (param!=0),"param");
- return impl->x_name;
+ return param->x_name;
}
@@ -332,4 +344,2 @@ icalparameter_set_xvalue (icalparameter* param, const char* v)
{
- struct icalparameter_impl *impl = (struct icalparameter_impl*)param;
-
icalerror_check_arg_rv( (param!=0),"param");
@@ -337,9 +347,9 @@ icalparameter_set_xvalue (icalparameter* param, const char* v)
- if (impl->string != 0){
- free((void*)impl->string);
+ if (param->string != 0){
+ free((void*)param->string);
}
- impl->string = icalmemory_strdup(v);
+ param->string = icalmemory_strdup(v);
- if (impl->string == 0){
+ if (param->string == 0){
errno = ENOMEM;
@@ -352,8 +362,5 @@ icalparameter_get_xvalue (icalparameter* param)
{
- struct icalparameter_impl *impl = (struct icalparameter_impl*)param;
-
icalerror_check_arg_rz( (param!=0),"param");
- return impl->string;
-
+ return param->string;
}
@@ -363,7 +370,5 @@ void icalparameter_set_parent(icalparameter* param,
{
- struct icalparameter_impl *impl = (struct icalparameter_impl*)param;
-
icalerror_check_arg_rv( (param!=0),"param");
- impl->parent = property;
+ param->parent = property;
}
@@ -372,7 +377,5 @@ icalproperty* icalparameter_get_parent(icalparameter* param)
{
- struct icalparameter_impl *impl = (struct icalparameter_impl*)param;
-
icalerror_check_arg_rz( (param!=0),"param");
- return impl->parent;
+ return param->parent;
}