#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); } |