summaryrefslogtreecommitdiff
path: root/src/libical/icalparameter.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libical/icalparameter.c')
-rw-r--r--src/libical/icalparameter.c74
1 files changed, 67 insertions, 7 deletions
diff --git a/src/libical/icalparameter.c b/src/libical/icalparameter.c
index 571f2ae..aa7520a 100644
--- a/src/libical/icalparameter.c
+++ b/src/libical/icalparameter.c
@@ -27,7 +27,6 @@
Graham Davison <g.m.davison@computer.org>
======================================================================*/
-/*#line 29 "icalparameter.c.in"*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
@@ -43,6 +42,11 @@
#include <errno.h>
#include <string.h> /* for memset() */
+#if defined(_MSC_VER)
+#define snprintf _snprintf
+#define strcasecmp stricmp
+#endif
+
/* In icalderivedparameter */
icalparameter* icalparameter_new_from_value_string(icalparameter_kind kind,const char* val);
@@ -104,7 +108,7 @@ icalparameter_free (icalparameter* param)
free ((void*)param->x_name);
}
- memset(param,0,sizeof(param));
+ memset(param,0,sizeof(icalparameter));
param->parent = 0;
param->id[0] = 'X';
@@ -167,6 +171,7 @@ icalparameter* icalparameter_new_from_string(const char *str)
if(eq == 0){
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+ free(cpy);
return 0;
}
@@ -178,6 +183,7 @@ icalparameter* icalparameter_new_from_string(const char *str)
if(kind == ICAL_NO_PARAMETER){
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+ free(cpy);
return 0;
}
@@ -185,6 +191,8 @@ icalparameter* icalparameter_new_from_string(const char *str)
if(kind == ICAL_X_PARAMETER){
icalparameter_set_xname(param,cpy);
+ } else if(kind == ICAL_IANA_PARAMETER) {
+ icalparameter_set_iana_name(param, cpy);
}
free(cpy);
@@ -220,7 +228,6 @@ icalparameter_as_ical_string_r(icalparameter* param)
size_t buf_size = 1024;
char* buf;
char* buf_ptr;
- char *out_buf;
const char *kind_string;
icalerror_check_arg_rz( (param!=0), "parameter");
@@ -233,10 +240,11 @@ icalparameter_as_ical_string_r(icalparameter* param)
buf_ptr = buf;
if(param->kind == ICAL_X_PARAMETER) {
-
- icalmemory_append_string(&buf, &buf_ptr, &buf_size,
- icalparameter_get_xname(param));
-
+ icalmemory_append_string(&buf, &buf_ptr, &buf_size,
+ icalparameter_get_xname(param));
+ } else if (param->kind == ICAL_IANA_PARAMETER) {
+ icalmemory_append_string(&buf, &buf_ptr, &buf_size,
+ icalparameter_get_iana_name(param));
} else {
kind_string = icalparameter_kind_to_string(param->kind);
@@ -246,6 +254,7 @@ icalparameter_as_ical_string_r(icalparameter* param)
kind_string == 0)
{
icalerror_set_errno(ICAL_BADARG_ERROR);
+ free(buf);
return 0;
}
@@ -274,6 +283,7 @@ icalparameter_as_ical_string_r(icalparameter* param)
icalmemory_append_string(&buf, &buf_ptr, &buf_size, str);
} else {
icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+ free(buf);
return 0;
}
@@ -365,6 +375,26 @@ icalparameter_get_xvalue (icalparameter* param)
return param->string;
}
+void icalparameter_set_iana_value (icalparameter* param, const char* v)
+{
+ icalparameter_set_xvalue(param, v);
+}
+
+const char* icalparameter_get_iana_value(icalparameter* param)
+{
+ return icalparameter_get_xvalue(param);
+}
+
+void icalparameter_set_iana_name (icalparameter* param, const char* v)
+{
+ icalparameter_set_xname(param, v);
+}
+
+const char* icalparameter_get_iana_name (icalparameter* param)
+{
+ return icalparameter_get_xname(param);
+}
+
void icalparameter_set_parent(icalparameter* param,
icalproperty* property)
{
@@ -380,6 +410,36 @@ icalproperty* icalparameter_get_parent(icalparameter* param)
return param->parent;
}
+/* returns 1 if parameters have same name in ICAL, otherwise 0 */
+int icalparameter_has_same_name(icalparameter* param1, icalparameter* param2)
+{
+ icalparameter_kind kind1;
+ icalparameter_kind kind2;
+ const char *name1;
+ const char *name2;
+
+ icalerror_check_arg_rz( (param1!=0),"param1");
+ icalerror_check_arg_rz( (param2!=0),"param2");
+
+ kind1 = icalparameter_isa(param1);
+ kind2 = icalparameter_isa(param2);
+
+ if (kind1 != kind2)
+ return 0;
+
+ if (kind1 == ICAL_X_PARAMETER) {
+ name1 = icalparameter_get_xname(param1);
+ name2 = icalparameter_get_xname(param2);
+ if (strcasecmp(name1, name2) != 0)
+ return 0;
+ } else if (kind1 == ICAL_IANA_PARAMETER) {
+ name1 = icalparameter_get_iana_name(param1);
+ name2 = icalparameter_get_iana_name(param2);
+ if (strcasecmp(name1, name2) != 0)
+ return 0;
+ }
+ return 1;
+}
/* Everything below this line is machine generated. Do not edit. */
/* ALTREP */