view src/protocols/msn/utils.c @ 8445:46f3c447da4d

[gaim-migrate @ 9175] Mar 13 20:58:37 <nosnilmot> LSchiere2: ping Mar 13 21:04:28 <LSchiere2> semi-pong Mar 13 21:05:11 <nosnilmot> LSchiere2: simple one, do you want a patch that splits changelog into ChangeLog & po/ChangeLog ? Mar 13 21:05:24 <LSchiere2> sure. go ahead Mar 13 21:06:13 <nosnilmot> http://www.nosnilmot.com/patches/gaim-0.76cvs-i18n-changelog.patch ... Mar 13 21:58:31 <nosnilmot> LSchiere2: did you get that changelog patch? Mar 13 22:01:44 <LSchiere2> i grabbed it, nothing more .... Mar 14 00:53:07 <LSchiere> nosnilmot: i left that patch at work accidentally All times in GST (Gaim Standard Time). committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Sun, 14 Mar 2004 19:01:53 +0000
parents 67f9b43c402a
children 06f57183e29f
line wrap: on
line source

/**
 * @file utils.c Utility functions
 *
 * gaim
 *
 * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
#include "msn.h"

void
msn_parse_format(const char *mime, char **pre_ret, char **post_ret)
{
	char *cur;
	GString *pre  = g_string_new(NULL);
	GString *post = g_string_new(NULL);
	unsigned int colors[3];

	if (pre_ret  != NULL) *pre_ret  = NULL;
	if (post_ret != NULL) *post_ret = NULL;

	cur = strstr(mime, "FN=");

	if (cur && (*(cur = cur + 3) != ';')) {
		pre = g_string_append(pre, "<FONT FACE=\"");

		while (*cur && *cur != ';') {
			pre = g_string_append_c(pre, *cur);
			cur++;
		}

		pre = g_string_append(pre, "\">");
		post = g_string_prepend(post, "</FONT>");
	}

	cur = strstr(mime, "EF=");

	if (cur && (*(cur = cur + 3) != ';')) {
		while (*cur && *cur != ';') {
			pre = g_string_append_c(pre, '<');
			pre = g_string_append_c(pre, *cur);
			pre = g_string_append_c(pre, '>');
			cur++;
		}
	}

	cur = strstr(mime, "CO=");

	if (cur && (*(cur = cur + 3) != ';')) {
		int i;

		i = sscanf(cur, "%02x%02x%02x;", &colors[0], &colors[1], &colors[2]);

		if (i > 0) {
			char tag[64];

			if (i == 1) {
				colors[2] = colors[0];
				colors[1] = 0;
				colors[0] = 0;
			}
			else if (i == 2) {
				colors[2] = colors[1];
				colors[1] = colors[0];
				colors[0] = 0;
			}

			g_snprintf(tag, sizeof(tag),
					   "<FONT COLOR=\"#%02hhx%02hhx%02hhx\">",
					   colors[2], colors[1], colors[0]);

			pre = g_string_append(pre, tag);
			post = g_string_prepend(post, "</FONT>");
		}
	}

	cur = g_strdup(gaim_url_decode(pre->str));
	g_string_free(pre, TRUE);

	if (pre_ret != NULL)
		*pre_ret = cur;
	else
		g_free(cur);

	cur = g_strdup(gaim_url_decode(post->str));
	g_string_free(post, TRUE);

	if (post_ret != NULL)
		*post_ret = cur;
	else
		g_free(cur);
}