aboutsummaryrefslogtreecommitdiffstats
path: root/libical/src/libical/icalparameter.c
diff options
context:
space:
mode:
Diffstat (limited to 'libical/src/libical/icalparameter.c')
-rw-r--r--libical/src/libical/icalparameter.c178
1 files changed, 151 insertions, 27 deletions
diff --git a/libical/src/libical/icalparameter.c b/libical/src/libical/icalparameter.c
index cf37eb07b2..c77c223f1c 100644
--- a/libical/src/libical/icalparameter.c
+++ b/libical/src/libical/icalparameter.c
@@ -4,23 +4,23 @@
CREATOR: eric 09 May 1999
$Id$
+
$Locker$
- (C) COPYRIGHT 1999 Eric Busboom
- http://www.softwarestudio.org
+ (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of either:
+
+ The LGPL as published by the Free Software Foundation, version
+ 2.1, available at: http://www.fsf.org/copyleft/lesser.html
+
+ Or:
- The contents of this file are subject to the Mozilla Public License
- Version 1.0 (the "License"); you may not use this file except in
- compliance with the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS"
- basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
- the License for the specific language governing rights and
- limitations under the License.
+ The Mozilla Public License Version 1.0. You may obtain a copy of
+ the License at http://www.mozilla.org/MPL/
- The original author is Eric Busboom
The original code is icalderivedparameters.{c,h}
Contributions from:
@@ -114,7 +114,7 @@ icalparameter_new_clone(icalparameter* param)
memcpy(new,old,sizeof(struct icalparameter_impl));
if (old->string != 0){
- new->string = strdup(old->string);
+ new->string = icalmemory_strdup(old->string);
if (new->string == 0){
icalparameter_free(new);
return 0;
@@ -122,7 +122,7 @@ icalparameter_new_clone(icalparameter* param)
}
if (old->x_name != 0){
- new->x_name = strdup(old->x_name);
+ new->x_name = icalmemory_strdup(old->x_name);
if (new->x_name == 0){
icalparameter_free(new);
return 0;
@@ -132,6 +132,116 @@ icalparameter_new_clone(icalparameter* param)
return new;
}
+#if 0
+
+struct param_string_map {
+ icalparameter_kind kind;
+ int val; /* Actually, union of several types of enums */
+ char* str;
+} param_string_map[] =
+{
+ {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_INDIVIDUAL,"INDIVIDUAL"},
+ {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_GROUP,"GROUP"},
+ {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_RESOURCE,"RESOURCE"},
+ {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_ROOM,"ROOM"},
+ {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_UNKNOWN,"UNKNOWN"},
+ {ICAL_FBTYPE_PARAMETER,ICAL_FBTYPE_FREE,"FREE"},
+ {ICAL_FBTYPE_PARAMETER,ICAL_FBTYPE_BUSY,"BUSY"},
+ {ICAL_FBTYPE_PARAMETER,ICAL_FBTYPE_BUSYUNAVAILABLE,"BUSYUNAVAILABLE"},
+ {ICAL_FBTYPE_PARAMETER,ICAL_FBTYPE_BUSYTENTATIVE,"BUSYTENTATIVE"},
+ {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_NEEDSACTION,"NEEDSACTION"},
+ {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_ACCEPTED,"ACCEPTED"},
+ {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_DECLINED,"DECLINED"},
+ {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_TENTATIVE,"TENTATIVE"},
+ {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_DELEGATED,"DELEGATED"},
+ {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_COMPLETED,"COMPLETED"},
+ {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_INPROCESS,"INPROCESS"},
+ {ICAL_RANGE_PARAMETER,ICAL_RANGE_THISANDPRIOR,"THISANDPRIOR"},
+ {ICAL_RANGE_PARAMETER,ICAL_RANGE_THISANDFUTURE,"THISANDFUTURE"},
+ {ICAL_RELATED_PARAMETER,ICAL_RELATED_START,"START"},
+ {ICAL_RELATED_PARAMETER,ICAL_RELATED_END,"END"},
+ {ICAL_RELTYPE_PARAMETER,ICAL_RELTYPE_PARENT,"PARENT"},
+ {ICAL_RELTYPE_PARAMETER,ICAL_RELTYPE_CHILD,"CHILD"},
+ {ICAL_RELTYPE_PARAMETER,ICAL_RELTYPE_SIBLING,"SIBLING"},
+ {ICAL_ROLE_PARAMETER,ICAL_ROLE_CHAIR,"CHAIR"},
+ {ICAL_RSVP_PARAMETER,ICAL_RSVP_PARAMETER,"TRUE"},
+ {ICAL_RSVP_PARAMETER,ICAL_RSVP_PARAMETER,"FALSE"},
+ {ICAL_VALUE_PARAMETER,ICAL_VALUE_BINARY,"BINARY"},
+ {ICAL_VALUE_PARAMETER,ICAL_VALUE_BOOLEAN,"BOOLEAN"},
+ {ICAL_VALUE_PARAMETER,ICAL_VALUE_DATE,"DATE"},
+ {ICAL_VALUE_PARAMETER,ICAL_VALUE_DURATION,"DURATION"},
+ {ICAL_VALUE_PARAMETER,ICAL_VALUE_FLOAT,"FLOAT"},
+ {ICAL_VALUE_PARAMETER,ICAL_VALUE_INTEGER,"INTEGER"},
+ {ICAL_VALUE_PARAMETER,ICAL_VALUE_PERIOD,"PERIOD"},
+ {ICAL_VALUE_PARAMETER,ICAL_VALUE_RECUR,"RECUR"},
+ {ICAL_VALUE_PARAMETER,ICAL_VALUE_TEXT,"TEXT"},
+ {ICAL_VALUE_PARAMETER,ICAL_VALUE_TIME,"TIME"},
+ {ICAL_VALUE_PARAMETER,ICAL_VALUE_URI,"URI"},
+ {ICAL_VALUE_PARAMETER,ICAL_VALUE_XNAME,"ERROR"},
+ {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_COMPONENTPARSEERROR,"COMPONENT_PARSE_ERROR"},
+ {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_PROPERTYPARSEERROR,"PROPERTY_PARSE_ERROR"},
+ {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR,"PARAMETER_NAME_PARSE_ERROR"},
+ {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR,"PARAMETER_VALUE_PARSE_ERROR"},
+ {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_VALUEPARSEERROR,"VALUE_PARSE_ERROR"},
+ {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_INVALIDITIP,"INVALID_ITIP"},
+ {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_UNKVCALPROP,"UNKNOWN_VCAL_PROP_ERROR"},
+ {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_MIMEPARSEERROR,"MIME_PARSE_ERROR"},
+ {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_EQUAL,"EQUAL"},
+ {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_NOTEQUAL,"NOTEQUAL"},
+ {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_LESS,"LESS"},
+ {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_GREATER,"GREATER"},
+ {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_LESSEQUAL,"LESSEQUAL"},
+ {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_GREATEREQUAL,"GREATEREQUAL"},
+ {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_REGEX,"REGEX"},
+ {ICAL_NO_PARAMETER,0,""},
+
+};
+
+
+icalparameter* icalparameter_new_from_string(icalparameter_kind kind, char* val)
+{
+ int i =0;
+ icalparameter* param=0;
+
+ icalerror_check_arg_rz((val!=0),"val");
+
+ switch(kind){
+ case ICAL_SENTBY_PARAMETER:
+ case ICAL_TZID_PARAMETER:
+ case ICAL_X_PARAMETER:
+ case ICAL_FMTTYPE_PARAMETER:
+ case ICAL_LANGUAGE_PARAMETER:
+ case ICAL_MEMBER_PARAMETER:
+ case ICAL_DELEGATEDFROM_PARAMETER:
+ case ICAL_DELEGATEDTO_PARAMETER:
+ case ICAL_DIR_PARAMETER:
+ case ICAL_ALTREP_PARAMETER:
+ case ICAL_CN_PARAMETER:
+ {
+ if (impl->string == 0){ return no_parameter;}
+ strcpy(tend,impl->string);break;
+ break;
+ }
+
+ case ICAL_NO_PARAMETER:
+ case ICAL_ANY_PARAMETER:
+ {
+ }
+
+ default: {
+ /* All other types are enumerated */
+ for(i = 0; param_string_map[i].kind != ICAL_NO_PARAMETER){
+ if(kind == param_string_map[i].kind &&
+ strcmp(val,param_string_map[i].str) == 0){
+
+
+ }
+ }
+ }
+}
+
+#endif
+
icalparameter* icalparameter_new_from_string(icalparameter_kind kind, char* val)
{
@@ -427,6 +537,12 @@ icalparameter* icalparameter_new_from_string(icalparameter_kind kind, char* val)
else if(strcmp(val,"INVALID_ITIP") == 0){
param = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_INVALIDITIP);
}
+ else if(strcmp(val,"MIME_PARSE_ERROR") == 0){
+ param = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_MIMEPARSEERROR);
+ }
+ else if(strcmp(val,"UNKNOWN_VCAL_PROP_ERROR") == 0){
+ param = icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_UNKVCALPROP);
+ }
break;
}
@@ -839,6 +955,14 @@ icalparameter_as_ical_string (icalparameter* parameter)
{
strcpy(tend,"INVALID_ITIP");break;
}
+ case ICAL_XLICERRORTYPE_UNKVCALPROP:
+ {
+ strcpy(tend,"UNKNOWN_VCAL_PROP_ERROR");break;
+ }
+ case ICAL_XLICERRORTYPE_MIMEPARSEERROR:
+ {
+ strcpy(tend,"MIME_PARSE_ERROR");break;
+ }
}
break;
}
@@ -969,7 +1093,7 @@ icalparameter_set_xname (icalparameter* param, char* v)
free(impl->x_name);
}
- impl->x_name = strdup(v);
+ impl->x_name = icalmemory_strdup(v);
if (impl->x_name == 0){
errno = ENOMEM;
@@ -998,7 +1122,7 @@ icalparameter_set_xvalue (icalparameter* param, char* v)
free(impl->string);
}
- impl->string = strdup(v);
+ impl->string = icalmemory_strdup(v);
if (impl->string == 0){
errno = ENOMEM;
@@ -1071,7 +1195,7 @@ void icalparameter_set_altrep(icalparameter* param, char* v)
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = strdup(v);
+ ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
}
/* CN */
@@ -1107,7 +1231,7 @@ void icalparameter_set_cn(icalparameter* param, char* v)
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = strdup(v);
+ ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
}
/* CUTYPE */
@@ -1184,7 +1308,7 @@ void icalparameter_set_delegatedfrom(icalparameter* param, char* v)
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = strdup(v);
+ ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
}
/* DELEGATED-TO */
@@ -1220,7 +1344,7 @@ void icalparameter_set_delegatedto(icalparameter* param, char* v)
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = strdup(v);
+ ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
}
/* DIR */
@@ -1256,7 +1380,7 @@ void icalparameter_set_dir(icalparameter* param, char* v)
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = strdup(v);
+ ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
}
/* ENCODING */
@@ -1374,7 +1498,7 @@ void icalparameter_set_fmttype(icalparameter* param, char* v)
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = strdup(v);
+ ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
}
/* LANGUAGE */
@@ -1410,7 +1534,7 @@ void icalparameter_set_language(icalparameter* param, char* v)
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = strdup(v);
+ ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
}
/* MEMBER */
@@ -1446,7 +1570,7 @@ void icalparameter_set_member(icalparameter* param, char* v)
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = strdup(v);
+ ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
}
/* PARTSTAT */
@@ -1719,7 +1843,7 @@ void icalparameter_set_sentby(icalparameter* param, char* v)
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = strdup(v);
+ ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
}
/* TZID */
@@ -1755,7 +1879,7 @@ void icalparameter_set_tzid(icalparameter* param, char* v)
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = strdup(v);
+ ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
}
/* VALUE */
@@ -1832,7 +1956,7 @@ void icalparameter_set_x(icalparameter* param, char* v)
icalerror_check_arg_rv( (param!=0), "param");
icalerror_clear_errno();
- ((struct icalparameter_impl*)param)->string = strdup(v);
+ ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);
}
/* X-LIC-ERRORTYPE */