void test_properties() { icalproperty *prop; icalparameter *param; icalvalue *value; char *str; icalproperty *clone; /* Create a new property */ prop = icalproperty_vanew_comment( "Another Comment", icalparameter_new_cn("A Common Name 1"), icalparameter_new_cn("A Common Name 2"), icalparameter_new_cn("A Common Name 3"), icalparameter_new_cn("A Common Name 4"), 0); /* Iterate through all of the parameters in the property */ for(param = icalproperty_get_first_parameter(prop,ICAL_ANY_PARAMETER); param != 0; param = icalproperty_get_next_parameter(prop,ICAL_ANY_PARAMETER)) { printf("Prop parameter: %s\n",icalparameter_get_cn(param)); } /* Get a string representation of the property's value */ printf("Prop value: %s\n",icalproperty_get_comment(prop)); /* Spit out the property in its RFC 5545 representation */ str = icalproperty_as_ical_string_r(prop); printf("As iCAL string:\n %s\n", str); free(str); /* Make a copy of the property. Caller owns the memory */ clone = icalproperty_new_clone(prop); /* Get a reference to the value within the clone property */ value = icalproperty_get_value(clone); str = icalvalue_as_ical_string_r(value); printf("Value: %s", str); free(str); /* Free the original and the clone */ icalproperty_free(clone); icalproperty_free(prop); }
struct icalbdbset_id icalbdbset_get_id(icalcomponent *comp) { icalcomponent *inner; struct icalbdbset_id id; icalproperty *p; inner = icalcomponent_get_first_real_component(comp); p = icalcomponent_get_first_property(inner, ICAL_UID_PROPERTY); assert(p != 0); id.uid = strdup(icalproperty_get_uid(p)); p = icalcomponent_get_first_property(inner, ICAL_SEQUENCE_PROPERTY); if (p == 0) { id.sequence = 0; } else { id.sequence = icalproperty_get_sequence(p); } p = icalcomponent_get_first_property(inner, ICAL_RECURRENCEID_PROPERTY); if (p == 0) { id.recurrence_id = 0; } else { icalvalue *v; v = icalproperty_get_value(p); id.recurrence_id = icalvalue_as_ical_string_r(v); assert(id.recurrence_id != 0); } return id; }
char *icallangbind_property_eval_string_r(icalproperty *prop, char *sep) { char tmp[25]; size_t buf_size = 1024; char *buf; char *buf_ptr; icalparameter *param; icalvalue *value; if (prop == 0) { return 0; } buf = icalmemory_new_buffer(buf_size); buf_ptr = buf; APPENDS("{ "); value = icalproperty_get_value(prop); APPENDS(" 'name' "); APPENDS(sep); APPENDC('\''); APPENDS(icalproperty_kind_to_string(icalproperty_isa(prop))); APPENDC('\''); if (value) { APPENDS(", 'value_type' "); APPENDS(sep); APPENDC('\''); APPENDS(icalvalue_kind_to_string(icalvalue_isa(value))); APPENDC('\''); } APPENDS(", 'pid' "); APPENDS(sep); APPENDC('\''); snprintf(tmp, 25, "%p", prop); APPENDS(tmp); APPENDC('\''); if (value) { switch (icalvalue_isa(value)) { case ICAL_ATTACH_VALUE: case ICAL_BINARY_VALUE: case ICAL_NO_VALUE:{ icalerror_set_errno(ICAL_INTERNAL_ERROR); break; } default: { char *str = icalvalue_as_ical_string_r(value); char *copy = (char *)malloc(strlen(str) + 1); const char *i; char *j; if (copy == 0) { icalerror_set_errno(ICAL_NEWFAILED_ERROR); break; } /* Remove any newlines */ for (j = copy, i = str; *i != 0; j++, i++) { if (*i == '\n') { i++; } *j = *i; } *j = 0; APPENDS(", 'value'"); APPENDS(sep); APPENDC('\''); APPENDS(copy); APPENDC('\''); free(copy); free(str); break; } } } /* Add Parameters */ for (param = icalproperty_get_first_parameter(prop, ICAL_ANY_PARAMETER); param != 0; param = icalproperty_get_next_parameter(prop, ICAL_ANY_PARAMETER)) { char *copy = icalparameter_as_ical_string_r(param); char *v; if (copy == 0) { icalerror_set_errno(ICAL_NEWFAILED_ERROR); continue; } v = strchr(copy, '='); if (v == 0) { free(copy); continue; } *v = 0; v++; APPENDS(", "); APPENDC('\''); APPENDS(copy); APPENDC('\''); APPENDS(sep); APPENDC('\''); APPENDS(v); APPENDC('\''); free(copy); } APPENDC('}'); return buf; }