1 #include "pEp_internal.h"
9 DYNAMIC_API bloblist_t *new_bloblist(char *blob, size_t size, const char *mime_type,
12 bloblist_t * bloblist = calloc(1, sizeof(bloblist_t));
18 bloblist->mime_type = strdup(mime_type);
19 if (bloblist->mime_type == NULL) {
26 bloblist->filename = strdup(filename);
27 if (bloblist->filename == NULL) {
28 free(bloblist->mime_type);
34 bloblist->data = blob;
35 bloblist->size = size;
40 DYNAMIC_API void free_bloblist(bloblist_t *bloblist)
44 free_bloblist(bloblist->next);
46 free(bloblist->mime_type);
47 free(bloblist->filename);
52 DYNAMIC_API bloblist_t *bloblist_dup(const bloblist_t *src)
54 bloblist_t *bloblist = NULL;
58 bloblist = new_bloblist(src->data, src->size, src->mime_type, src->filename);
63 bloblist->next = bloblist_dup(src->next);
64 if (bloblist->next == NULL)
71 free_bloblist(bloblist);
75 DYNAMIC_API bloblist_t *bloblist_add(bloblist_t *bloblist, char *blob, size_t size,
76 const char *mime_type, const char *filename)
81 return new_bloblist(blob, size, mime_type, filename);
83 if (bloblist->data == NULL) {
85 bloblist->mime_type = strdup(mime_type);
86 if (bloblist->mime_type == NULL) {
92 bloblist->filename = strdup(filename);
93 if (bloblist->filename == NULL) {
94 free(bloblist->mime_type);
99 bloblist->data = blob;
100 bloblist->size = size;
104 if (bloblist->next == NULL) {
105 bloblist->next = new_bloblist(blob, size, mime_type, filename);
106 return bloblist->next;
109 return bloblist_add(bloblist->next, blob, size, mime_type, filename);
112 DYNAMIC_API int bloblist_length(const bloblist_t *bloblist)
115 bloblist_t *_bloblist;
119 if (bloblist->data == NULL)
122 for (_bloblist = bloblist->next; _bloblist != NULL;
123 _bloblist = _bloblist->next)