19#include "icalerror_p.h"
25static icalcomponent *icalmessage_get_inner(
const icalcomponent *comp)
30 return (icalcomponent *)comp;
34static char *lowercase(
const char *str)
49 for (p = n; *p != 0; p++) {
50 *p = tolower((
int)*p);
56static icalproperty *icalmessage_find_attendee(
const icalcomponent *comp,
const char *user)
58 icalcomponent *inner = icalmessage_get_inner(comp);
59 icalproperty *p, *attendee = 0;
66 lattendee = lowercase(icalproperty_get_attendee(p));
68 if (strstr(lattendee, user) != 0) {
81static void icalmessage_copy_properties(
const icalcomponent *to,
const icalcomponent *from,
82 icalproperty_kind kind)
84 icalcomponent *to_inner = icalmessage_get_inner(to);
85 icalcomponent *from_inner = icalmessage_get_inner(from);
87 if (to_inner == 0 && from_inner == 0) {
101static icalcomponent *icalmessage_new_reply_base(
const icalcomponent *c,
102 const char *user,
const char *msg)
104 icalproperty *attendee;
107 icalcomponent *reply =
116 icalcomponent *inner = icalmessage_get_inner(reply);
118 icalerror_check_arg_rz(c,
"c");
120 icalmessage_copy_properties(reply, c, ICAL_UID_PROPERTY);
121 icalmessage_copy_properties(reply, c, ICAL_ORGANIZER_PROPERTY);
122 icalmessage_copy_properties(reply, c, ICAL_RECURRENCEID_PROPERTY);
123 icalmessage_copy_properties(reply, c, ICAL_SUMMARY_PROPERTY);
124 icalmessage_copy_properties(reply, c, ICAL_SEQUENCE_PROPERTY);
134 attendee = icalmessage_find_attendee(c, user);
157 icalcomponent *reply;
158 icalproperty *attendee;
159 icalcomponent *inner;
161 icalerror_check_arg_rz(c,
"c");
163 reply = icalmessage_new_reply_base(c, user, msg);
169 inner = icalmessage_get_inner(reply);
180 icalcomponent *reply;
181 icalproperty *attendee;
182 icalcomponent *inner;
184 icalerror_check_arg_rz(c,
"c");
186 reply = icalmessage_new_reply_base(c, user, msg);
187 inner = icalmessage_get_inner(reply);
201 const icalcomponent *newc,
202 const char *user,
const char *msg)
204 icalcomponent *reply;
206 icalerror_check_arg_rz(oldc,
"oldc");
207 icalerror_check_arg_rz(newc,
"newc");
209 reply = icalmessage_new_reply_base(newc, user, msg);
218 const char *delegatee,
const char *msg)
220 icalcomponent *reply;
221 icalproperty *attendee;
222 icalcomponent *inner;
224 icalerror_check_arg_rz(c,
"c");
226 reply = icalmessage_new_reply_base(c, user, msg);
227 inner = icalmessage_get_inner(reply);
241icalcomponent *icalmessage_new_delegate_request(
const icalcomponent *c,
243 const char *delegatee,
const char *msg)
245 icalcomponent *reply;
246 icalproperty *attendee;
247 icalcomponent *inner;
248 icalparameter *delegateeParam;
250 icalerror_check_arg_rz(c,
"c");
252 reply = icalmessage_new_reply_base(c, user, msg);
253 inner = icalmessage_get_inner(reply);
267 delegateeParam = icalparameter_new_delegatedfrom(icalproperty_get_attendee(attendee));
270 icalproperty_vanew_attendee(delegatee, delegateeParam, (
void *)0));
280 icalcomponent *reply;
281 icalcomponent *inner, *cinner;
284 icalerror_check_arg_rz(c,
"c");
287 reply = icalmessage_new_reply_base(c, user, msg);
288 inner = icalmessage_get_inner(reply);
289 cinner = icalmessage_get_inner(c);
icalproperty * icalcomponent_get_first_property(icalcomponent *c, icalproperty_kind kind)
void icalcomponent_set_dtstamp(icalcomponent *comp, struct icaltimetype v)
icalcomponent * icalcomponent_vanew(icalcomponent_kind kind,...)
void icalcomponent_set_method(icalcomponent *comp, icalproperty_method method)
icalcomponent * icalcomponent_get_first_real_component(const icalcomponent *c)
void icalcomponent_add_property(icalcomponent *component, icalproperty *property)
icalcomponent_kind icalcomponent_isa(const icalcomponent *component)
void icalcomponent_free(icalcomponent *c)
icalproperty * icalcomponent_get_next_property(icalcomponent *c, icalproperty_kind kind)
@ ICAL_VCALENDAR_COMPONENT
void icalerror_set_errno(icalerrorenum x)
Sets the icalerrno to a given error.
@ ICAL_MALFORMEDDATA_ERROR
icalcomponent * icalmessage_new_counterpropose_reply(const icalcomponent *oldc, const icalcomponent *newc, const char *user, const char *msg)
icalcomponent * icalmessage_new_delegate_reply(const icalcomponent *c, const char *user, const char *delegatee, const char *msg)
icalcomponent * icalmessage_new_error_reply(const icalcomponent *c, const char *user, const char *msg, const char *debug, icalrequeststatus code)
icalcomponent * icalmessage_new_accept_reply(const icalcomponent *c, const char *user, const char *msg)
icalcomponent * icalmessage_new_decline_reply(const icalcomponent *c, const char *user, const char *msg)
Defines functions for creating component reply messages.
void icalparameter_free(icalparameter *param)
Frees an icalparameter object.
icalproperty * icalproperty_clone(const icalproperty *old)
void icalproperty_set_parameter(icalproperty *prop, icalparameter *parameter)
struct icaltimetype icaltime_from_timet_with_zone(const icaltime_t tm, const bool is_date, const icaltimezone *zone)
Constructor.
Declares macros for determining the library version.