aboutsummaryrefslogtreecommitdiffstats
path: root/libical/src/libicalvcal/icalvcal.c
diff options
context:
space:
mode:
Diffstat (limited to 'libical/src/libicalvcal/icalvcal.c')
-rw-r--r--libical/src/libicalvcal/icalvcal.c67
1 files changed, 32 insertions, 35 deletions
diff --git a/libical/src/libicalvcal/icalvcal.c b/libical/src/libicalvcal/icalvcal.c
index f5d417cb6d..9ab3fa899e 100644
--- a/libical/src/libicalvcal/icalvcal.c
+++ b/libical/src/libicalvcal/icalvcal.c
@@ -42,11 +42,6 @@
#include "icalvcal.h"
#include <string.h>
-#ifdef WIN32
-#define snprintf _snprintf
-#define strcasecmp stricmp
-#endif
-
enum datatype {
COMPONENT,
PROPERTY,
@@ -67,7 +62,6 @@ int weekday_codes[] = {
ICAL_SATURDAY_WEEKDAY
};
-
struct conversion_table_struct {
char* vcalname;
enum datatype type;
@@ -155,10 +149,10 @@ static void convert_floating_time_to_utc (struct icaltimetype *itt)
}
-static void icalvcal_traverse_objects(VObject *object,
- icalcomponent* last_comp,
- icalproperty* last_prop,
- icalvcal_defaults *defaults)
+static int icalvcal_traverse_objects(VObject *object,
+ icalcomponent* last_comp,
+ icalproperty* last_prop,
+ icalvcal_defaults *defaults)
{
VObjectIterator iterator;
char* name = "[No Name]";
@@ -167,8 +161,7 @@ static void icalvcal_traverse_objects(VObject *object,
if ( vObjectName(object)== 0){
printf("ERROR, object has no name");
- assert(0);
- return;
+ return 0;
}
name = (char*)vObjectName(object);
@@ -191,8 +184,7 @@ static void icalvcal_traverse_objects(VObject *object,
icalproperty_set_x_name(prop,name);
icalcomponent_add_property(last_comp,prop);
} else {
- assert(0);
- return;
+ return 0;
}
} else {
@@ -211,8 +203,9 @@ static void icalvcal_traverse_objects(VObject *object,
object, last_comp, defaults));
if (subc) {
- icalcomponent_add_component(last_comp,subc);
- }
+ icalcomponent_add_component(last_comp,subc);
+ }
+
break;
}
@@ -227,7 +220,7 @@ static void icalvcal_traverse_objects(VObject *object,
object, last_comp, defaults));
if (prop)
- icalcomponent_add_property(last_comp,prop);
+ icalcomponent_add_property(last_comp,prop);
last_prop = prop;
@@ -267,7 +260,6 @@ static void icalvcal_traverse_objects(VObject *object,
/* Do Nothing. */
break;
}
-
}
}
@@ -282,12 +274,16 @@ static void icalvcal_traverse_objects(VObject *object,
should use it as the 'last_comp' */
if(subc!=0){
- icalvcal_traverse_objects(eachProp,subc,last_prop,defaults);
+ if (!icalvcal_traverse_objects(eachProp,subc,last_prop,defaults))
+ return 0;
} else {
- icalvcal_traverse_objects(eachProp,last_comp,last_prop,defaults);
+ if (!icalvcal_traverse_objects(eachProp,last_comp,last_prop,defaults))
+ return 0;
}
}
+
+ return 1;
}
icalcomponent* icalvcal_convert_with_defaults (VObject *object,
@@ -313,7 +309,8 @@ icalcomponent* icalvcal_convert_with_defaults (VObject *object,
printf ("===========================================\n");
#endif
- icalvcal_traverse_objects(object,container,0,defaults);
+ if (!icalvcal_traverse_objects(object,container,0,defaults))
+ return 0;
/* HACK. I am using the extra 'container' component because I am
lazy. I know there is a way to get rid of it, but I did not care
@@ -449,7 +446,7 @@ static int get_alarm_properties (icalcomponent *comp, VObject *object,
icalcomponent_add_property (comp, trigger_prop);
}
-
+
} else if (!strcmp (name, VCSnoozeTimeProp)) {
struct icaldurationtype d;
@@ -458,7 +455,7 @@ static int get_alarm_properties (icalcomponent *comp, VObject *object,
which we don't handle at present. Though it is unlikely they
will be used as a snooze time between repeated alarms! */
d = icaldurationtype_from_string (s);
-
+
duration_prop = icalproperty_new_duration (d);
icalcomponent_add_property (comp, duration_prop);
@@ -534,7 +531,7 @@ static int get_alarm_properties (icalcomponent *comp, VObject *object,
if (!summary_prop) {
summary_prop = icalproperty_new_summary (s);
icalcomponent_add_property (comp, summary_prop);
- }
+ }
}
if (free_string)
@@ -695,23 +692,23 @@ void* alarm_comp(int icaltype, VObject *o, icalcomponent *comp,
int is_valid_alarm;
icalcomponent* c = icalcomponent_new(ICAL_VALARM_COMPONENT);
-
+
is_valid_alarm = get_alarm_properties (c, o, icaltype, defaults);
if (is_valid_alarm) {
- return (void*)c;
+ return (void*)c;
} else {
icalcomponent_free (c);
return NULL;
}
}
-
/* These #defines indicate conversion routines that are not defined yet. */
#define parameter 0
#define rsvp_parameter 0
+
void* transp_prop(int icaltype, VObject *object, icalcomponent *comp,
icalvcal_defaults *defaults)
{
@@ -721,12 +718,11 @@ void* transp_prop(int icaltype, VObject *object, icalcomponent *comp,
s = get_string_value (object, &free_string);
-
/* In vCalendar "0" means opaque, "1" means transparent, and >1 is
implementation-specific. So we just check for "1" and output
TRANSPARENT. For anything else, the default OPAQUE will be used. */
if (!strcmp (s, "1")) {
- prop = icalproperty_new_transp (ICAL_TRANSP_TRANSPARENT);
+ prop = icalproperty_new_transp ("TRANSPARENT");
}
if (free_string)
@@ -735,6 +731,7 @@ void* transp_prop(int icaltype, VObject *object, icalcomponent *comp,
return (void*)prop;
}
+
void* sequence_prop(int icaltype, VObject *object, icalcomponent *comp,
icalvcal_defaults *defaults)
{
@@ -1016,8 +1013,8 @@ static char* rrule_parse_weekly_days (char *s,
e = s + 2;
if (*e == ' ' || *e == '\t' || *e == '\0') {
found_day = day;
- break;
- }
+ break;
+ }
}
}
@@ -1070,8 +1067,8 @@ static char* rrule_parse_monthly_days (char *s,
} else if (*e == '-') {
e++;
month_day = -month_day;
+ }
}
- }
/* Check the next char is whitespace or the end of the string. */
if (*e != ' ' && *e != '\t' && *e != '\0')
@@ -1391,10 +1388,9 @@ void* dc_prop(int icaltype, VObject *object, icalcomponent *comp,
icalproperty *prop;
icalvalue *value;
icalvalue_kind value_kind;
- char *s,*t=0;
+ char *s;
int free_string;
-
prop = icalproperty_new(kind);
value_kind = icalenum_property_kind_to_value_kind (icalproperty_isa(prop));
@@ -1422,6 +1418,7 @@ struct conversion_table_struct conversion_table[] =
{VCCalProp, COMPONENT, comp, ICAL_VCALENDAR_COMPONENT},
{VCTodoProp, COMPONENT, comp, ICAL_VTODO_COMPONENT},
{VCEventProp, COMPONENT, comp, ICAL_VEVENT_COMPONENT},
+
{VCAAlarmProp, COMPONENT, alarm_comp, ICAL_XAUDIOALARM_COMPONENT},
{VCDAlarmProp, COMPONENT, alarm_comp, ICAL_XDISPLAYALARM_COMPONENT},
{VCMAlarmProp, COMPONENT, alarm_comp, ICAL_XEMAILALARM_COMPONENT},
@@ -1481,6 +1478,7 @@ struct conversion_table_struct conversion_table[] =
{VCSnoozeTimeProp, IGNORE,0, 0},
{VCRepeatCountProp, IGNORE,0, 0},
{VCValueProp, IGNORE,0, 0},
+{VCAudioContentProp, IGNORE,0, 0},
{VCProcedureNameProp, IGNORE,0, 0},
{VCDisplayStringProp, IGNORE,0, 0},
{VCEmailAddressProp, IGNORE,0, 0},
@@ -1497,7 +1495,6 @@ struct conversion_table_struct conversion_table[] =
{VCAppleLinkProp, UNSUPPORTED,0, 0},
{VCAttachProp, UNSUPPORTED,0, 0},
{VCATTMailProp, UNSUPPORTED,0, 0},
-{VCAudioContentProp, UNSUPPORTED,0, 0},
{VCAVIProp, UNSUPPORTED,0, 0},
{VCBase64Prop, UNSUPPORTED,0, 0},
{VCBBSProp, UNSUPPORTED,0, 0},