diff -r aef5a4bc78f3 -r 42b5eb9d5af2 src/etpan_mime.c --- a/src/etpan_mime.c Sat Mar 07 20:29:13 2015 +0100 +++ b/src/etpan_mime.c Sun Mar 08 00:35:18 2015 +0100 @@ -23,14 +23,9 @@ name[MAX_MESSAGE_ID - 1] = 0; now = time(NULL); -#ifndef WIN32 + value = random(); - gethostname(name, MAX_MESSAGE_ID - 1); -#else - value = now; - strcpy(name, "WINDOWS"); -#endif if (boundary_prefix == NULL) boundary_prefix = ""; @@ -124,7 +119,7 @@ parameters = content->ct_parameters; r = clist_append(parameters, param); - if (r != 0) { + if (r) { clist_free(parameters); mailmime_parameter_free(param); goto free_list; @@ -294,9 +289,8 @@ if (field == NULL) return -1; - r = clist_append(list, field); - if (r == -1) + if (r) _free_field(field); return r; @@ -343,3 +337,36 @@ return result; } +struct mailimf_mailbox * mailbox_from_string( + const char *name, + const char *address + ) +{ + struct mailimf_mailbox *mb = NULL; + char *_name = NULL; + char *_address = NULL; + + assert(address); + + _name = name ? strdup(name) : strdup(""); + if (_name == NULL) + goto enomem; + + _address = strdup(address); + if (_address == NULL) + goto enomem; + + mb = mailimf_mailbox_new(_name, _address); + assert(mb); + if (mb == NULL) + goto enomem; + + return mb; + +enomem: + free(_name); + free(_address); + + return NULL; +} +