view libpurple/plugins/perl/common/Proxy.xs @ 30818:9d386bf63eab

Stop using custom encodings (and LATIN-1, for that matter) for sending OSCAR messages (ICBM, chat, Direct IM). Now, we use ASCII if a message contains ASCII characters only, and UTF-16 in all other cases. That fixes #10833 (offline messages now will be sent as UTF-16) and also a whole bunch of potential problems we can get with charset 0x3. Different clients tend to interpret this charset differently; for instance, the official client always interprets it as LATIN-1, while alternative clients may decode it as some other user-specified 8-bit encoding. On the other hand, ASCII messages (charset 0x0) and UTF-16 messages (charset 0x2) are understood uniformly by all clients. I also cleaned-up the code a little (got rid of code paths that were never executed, flags that were always set, unused struct members, etc.)
author ivan.komarov@soc.pidgin.im
date Tue, 27 Jul 2010 21:17:01 +0000
parents a158ef76d340
children
line wrap: on
line source

#include "module.h"

MODULE = Purple::Proxy  PACKAGE = Purple::Proxy  PREFIX = purple_proxy_
PROTOTYPES: ENABLE

BOOT:
{
	HV *stash = gv_stashpv("Purple::ProxyType", 1);

	static const constiv *civ, const_iv[] = {
#define const_iv(name) {#name, (IV)PURPLE_PROXY_##name}
		const_iv(USE_GLOBAL),
		const_iv(NONE),
		const_iv(HTTP),
		const_iv(SOCKS4),
		const_iv(SOCKS5),
		const_iv(USE_ENVVAR),
	};

	for (civ = const_iv + sizeof(const_iv) / sizeof(const_iv[0]); civ-- > const_iv; )
		newCONSTSUB(stash, (char *)civ->name, newSViv(civ->iv));
}

Purple::Handle
purple_proxy_get_handle()

MODULE = Purple::Proxy  PACKAGE = Purple::ProxyInfo  PREFIX = purple_proxy_info_
PROTOTYPES: ENABLE

void
purple_proxy_info_destroy(info)
	Purple::ProxyInfo info

const char *
purple_proxy_info_get_host(info)
	Purple::ProxyInfo info

const char *
purple_proxy_info_get_password(info)
	Purple::ProxyInfo info

int
purple_proxy_info_get_port(info)
	Purple::ProxyInfo info

Purple::ProxyType
purple_proxy_info_get_type(info)
	Purple::ProxyInfo info

const char *
purple_proxy_info_get_username(info)
	Purple::ProxyInfo info

Purple::ProxyInfo
purple_proxy_info_new()

void
purple_proxy_info_set_host(info, host)
	Purple::ProxyInfo info
	const char *host

void
purple_proxy_info_set_password(info, password)
	Purple::ProxyInfo info
	const char *password

void
purple_proxy_info_set_port(info, port)
	Purple::ProxyInfo info
	int port

void
purple_proxy_info_set_type(info, type)
	Purple::ProxyInfo info
	Purple::ProxyType type

void
purple_proxy_info_set_username(info, username)
	Purple::ProxyInfo info
	const char *username

MODULE = Purple::Proxy  PACKAGE = Purple::Proxy  PREFIX = purple_
PROTOTYPES: ENABLE

Purple::ProxyInfo
purple_global_proxy_get_info()