END_TEST START_TEST(test_encoding) { char *raw, *enc, *dec; raw = g_strdup( "Kristoffer Br�nemyr"); enc = g_mime_utils_header_encode_phrase((char *)raw); dec = g_mime_utils_header_decode_phrase((char *)enc); fail_unless(MATCH(raw,dec),"decode/encode failed"); g_free(raw); g_free(dec); g_free(enc); }
static void _internet_address_decode_name (InternetAddress *ia, GString *name) { char *value, *buf = NULL; char *phrase; if (!g_utf8_validate (name->str, name->len, NULL)) { /* A (broken) mailer has sent us raw 8bit/multibyte text data... */ buf = g_mime_utils_decode_8bit (name->str, name->len); phrase = buf; } else { phrase = name->str; } /* decode the phrase */ g_mime_utils_unquote_string (phrase); value = g_mime_utils_header_decode_phrase (phrase); g_free (ia->name); ia->name = value; g_free (buf); }
static int envelope_decode_address (SpruceIMAPEngine *engine, GString *addrs, GError **err) { char *addr, *name = NULL, *user = NULL; unsigned char *literal = NULL; spruce_imap_token_t token; const char *domain = NULL; InternetAddress *ia; int part = 0; size_t n; if (spruce_imap_engine_next_token (engine, &token, err) == -1) return -1; if (token.token == SPRUCE_IMAP_TOKEN_NIL) { return 0; } else if (token.token != '(') { spruce_imap_utils_set_unexpected_token_error (err, engine, &token); return -1; } if (addrs->len > 0) g_string_append (addrs, ", "); do { if (spruce_imap_engine_next_token (engine, &token, err) == -1) goto exception; literal = NULL; switch (token.token) { case SPRUCE_IMAP_TOKEN_NIL: break; case SPRUCE_IMAP_TOKEN_ATOM: case SPRUCE_IMAP_TOKEN_QSTRING: switch (part) { case 0: name = g_mime_utils_header_decode_phrase (token.v.qstring); break; case 2: user = g_strdup (token.v.qstring); break; case 3: domain = token.v.qstring; break; } break; case SPRUCE_IMAP_TOKEN_LITERAL: if (spruce_imap_engine_literal (engine, &literal, &n, err) == -1) goto exception; switch (part) { case 0: name = g_mime_utils_header_decode_phrase ((char *) literal); g_free (literal); break; case 2: user = (char *) literal; break; case 3: domain = (char *) literal; break; } break; default: spruce_imap_utils_set_unexpected_token_error (err, engine, &token); goto exception; } part++; } while (part < 4); addr = g_strdup_printf ("%s@%s", user, domain); g_free (literal); g_free (user); ia = internet_address_mailbox_new (name, addr); g_free (name); g_free (addr); addr = internet_address_to_string (ia, FALSE); g_object_unref (ia); g_string_append (addrs, addr); g_free (addr); if (spruce_imap_engine_next_token (engine, &token, err) == -1) return -1; if (token.token != ')') { spruce_imap_utils_set_unexpected_token_error (err, engine, &token); return -1; } return 0; exception: g_free (name); g_free (user); return -1; }