void dpl_vec_buckets_free(dpl_vec_t *vec) { int i; for (i = 0;i < vec->n_items;i++) dpl_bucket_free((dpl_bucket_t *) dpl_vec_get(vec, i)); dpl_vec_free(vec); }
static dpl_status_t parse_list_all_my_buckets_bucket(xmlNode *node, dpl_vec_t *vec) { xmlNode *tmp; dpl_bucket_t *bucket = NULL; int ret; bucket = malloc(sizeof (*bucket)); if (NULL == bucket) goto bad; memset(bucket, 0, sizeof (*bucket)); for (tmp = node; NULL != tmp; tmp = tmp->next) { if (tmp->type == XML_ELEMENT_NODE) { DPRINTF("name: %s\n", tmp->name); if (!strcmp((char *) tmp->name, "Name")) { bucket->name = strdup((char *) tmp->children->content); if (NULL == bucket->name) goto bad; } if (!strcmp((char *) tmp->name, "CreationDate")) { bucket->creation_time = dpl_iso8601totime((char *) tmp->children->content); } } else if (tmp->type == XML_TEXT_NODE) { DPRINTF("content: %s\n", tmp->content); } } ret = dpl_vec_add(vec, bucket); if (DPL_SUCCESS != ret) goto bad; return DPL_SUCCESS; bad: if (NULL != bucket) dpl_bucket_free(bucket); return DPL_FAILURE; }