aboutsummaryrefslogtreecommitdiffstats
path: root/libical/src/libical/icaltypes.c
diff options
context:
space:
mode:
Diffstat (limited to 'libical/src/libical/icaltypes.c')
-rw-r--r--libical/src/libical/icaltypes.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/libical/src/libical/icaltypes.c b/libical/src/libical/icaltypes.c
index e726904fcf..4afc8916bb 100644
--- a/libical/src/libical/icaltypes.c
+++ b/libical/src/libical/icaltypes.c
@@ -4,6 +4,7 @@
CREATOR: eric 16 May 1999
$Id$
+
$Locker$
@@ -149,6 +150,42 @@ void* icalattachtype_get_binary(struct icalattachtype* v)
}
+struct icaltriggertype icaltriggertype_from_string(const char* str)
+{
+
+
+ struct icaltriggertype tr, null_tr;
+ int old_ieaf = icalerror_errors_are_fatal;
+
+ tr.time= icaltime_null_time();
+ tr.duration = icaldurationtype_from_int(0);
+
+ null_tr = tr;
+
+ if(str == 0) goto error;
+
+
+ icalerror_errors_are_fatal = 0;
+
+ tr.time = icaltime_from_string(str);
+
+ icalerror_errors_are_fatal = old_ieaf;
+
+ if (icaltime_is_null_time(tr.time)){
+
+ tr.duration = icaldurationtype_from_string(str);
+
+ if(icaldurationtype_as_int(tr.duration) == 0) goto error;
+ }
+
+ return tr;
+
+ error:
+ icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);
+ return null_tr;
+
+}
+
struct icalreqstattype icalreqstattype_from_string(char* str)
{