8 +parse_boundary(const char* ct)
10 + const char BOUNDARY[] = "boundary=";
11 + char *boundary_begin = g_strstr_len(ct, -1, BOUNDARY);
14 + if (!boundary_begin)
17 + boundary_begin += sizeof(BOUNDARY) - 1;
19 + if (*boundary_begin == '"') {
20 + boundary_end = strchr(++boundary_begin, '"');
24 + boundary_end = strchr(boundary_begin, ' ');
25 + if (!boundary_end) {
26 + boundary_end = strchr(boundary_begin, ';');
28 + boundary_end = boundary_begin + strlen(boundary_begin);
32 + return g_strndup(boundary_begin, boundary_end - boundary_begin);
36 purple_mime_document_parsen(const char *buf, gsize len)
39 const char *ct = fields_get(&doc->fields, "content-type");
40 if(ct && purple_str_has_prefix(ct, "multipart")) {
41 - char *bd = strrchr(ct, '=');
43 + char *bd = parse_boundary(ct);
45 doc_parts_load(doc, bd, b, n);