Esempio n. 1
0
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);
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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;
}