diff options
Diffstat (limited to 'libical/src/libical/icaltypes.c')
-rw-r--r-- | libical/src/libical/icaltypes.c | 37 |
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) { |