To Add a Calendar
Example 10-2 Adding a Calendar Named "activity" to Host "host1"
#include <csa/csa.h>
CSA_access_rights *setup_access_list() {
CSA_access_rights *ptr1, *ptr2;
/* Allow any user to view public and confidential entries and
* user "user1" to view and insert public entries.
* The special user name "world" means any user.
*/
ptr2 = (CSA_access_rights *)calloc(1, sizeof(CSA_access_rights));
ptr2->user = (CSA_calendar_user *)calloc(1, sizeof(CSA_calendar_user));
ptr2->user->user_name = strdup("world");
ptr2->user->user_type = CSA_USER_TYPE_INDIVIDUAL;
ptr2->flags = CSA_VIEW_PUBLIC_ENTRIES | CSA_VIEW_CONFIDENTIAL_ENTRIES;
ptr1 = (CSA_access_rights *)calloc(1, sizeof(CSA_access_rights));
ptr1->user = (CSA_calendar_user *)calloc(1, sizeof(CSA_calendar_user));
ptr1->user->user_name = strdup("user1");
ptr1->user->user_type = CSA_USER_TYPE_INDIVIDUAL;
ptr1->flags = CSA_VIEW_PUBLIC_ENTRIES | CSA_INSERT_PUBLIC_ENTRIES;
ptr1->next = ptr2;
}
void destroy_access_list(CSA_access_rights *list)
{
CSA_access_rights *ptr;
while (list != NULL) {
ptr = list->next;
if (list->user) {
if (list->user->user_name)
free(list->user->user_name);
free(list->user);
} free(list);
list = ptr;
}
}
add_calendar()
{
CSA_return_code stat;
CSA_calendar_user caddr;
CSA_attribute attr;
CSA_attribute_value attr_val;
/* Specify the calendar to add */
caddr.user_name = NULL;
caddr.user_type = NULL;
caddr.calendar_address = "activity@host1";
caddr.calendar_user_extensions = NULL;
/* set up the access list */
attr_val.type = CSA_VALUE_ACCESS_LIST;
attr_val.item.access_list_value = setup_access_list();
attr.name = CSA_CAL_ATTR_ACCESS_LIST;
attr.value = &attr_val;
attr.attribute_extensions = NULL;
stat = csa_add_calendar(NULL, &caddr, 1, &attr, NULL);
destroy_access_list(attr_val.item.access_list_value);
}