Mercurial > pidgin
view src/protocols/msn/utils.c @ 6096:94e4cf59bacb
[gaim-migrate @ 6555]
(21:55:33) Robot101: LSchiere2: while you're round, fancy renaming a file? StdAfx.h in src/win32/ to stdafx.h.
(21:55:50) LSchiere2: Robot101: is there a reason?
(21:55:57) Robot101: LSchiere2: yeah, try and put a vitriolic comment about windows and/or herman and his build system into
the CVS message.
(21:56:14) ***LSchiere2 listens for the why
(21:56:33) Robot101: because it gets included as "stdafx.h"
(21:56:38) LSchiere2: that's a good reason
(21:56:53) SimGuy: windows filesystems and their not-caring-ness
(21:57:03) Robot101: so gcc on Linux doesn't find it. just because you're building on a retarded platform doesn't mean you
have to be all retarded about it.
(21:57:14) Robot101: (yeah, use that as the commit message)
(21:57:31) LSchiere2: how many places is it included? ie would it be easier to just change the include?
(21:58:00) Robot101: we want to discourage this camelcaps as much as possible, so let's just embrace the fact he included it
as lowercase.
(21:58:13) ***LSchiere2 detects evasion
(21:58:26) LSchiere2: you do realize do you not that cvs does NOT handle renaming a file well at all
(21:58:37) Robot101: detect someone who is on a windows laptop ssh'd to a machine which doesn't have a gaim tree on
(21:58:50) Robot101: the file isn't ours
(21:58:55) Robot101: it's just ripped from some other project
(21:58:58) zx64: mv File file; cvs remove File; cvs add file; cvs ci; done
(21:59:00) Robot101: we havn't changed it much.any
(21:59:04) RUBotzman left the room ("Bye all").
(21:59:11) LSchiere2: yes i'm aware of the steps involved zx64
(21:59:12) Robot101: *much/any
committer: Tailor Script <tailor@pidgin.im>
| author | Luke Schierer <lschiere@pidgin.im> |
|---|---|
| date | Sat, 12 Jul 2003 02:00:38 +0000 |
| parents | 13a37cacd10b |
| children | 8ba58b296cc1 |
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" char * msn_url_decode(const char *str) { static char buf[MSN_BUF_LEN]; int i, j = 0; char *bum; g_return_val_if_fail(str != NULL, NULL); for (i = 0; i < strlen(str); i++) { char hex[3]; if (str[i] != '%') buf[j++] = str[i]; else { strncpy(hex, str + ++i, 2); hex[2] = '\0'; /* i is pointing to the start of the number */ i++; /* * Now it's at the end and at the start of the for loop * will be at the next character. */ buf[j++] = strtol(hex, NULL, 16); } } buf[j] = '\0'; if (!g_utf8_validate(buf, -1, (const char **)&bum)) *bum = '\0'; return buf; } char * msn_url_encode(const char *str) { static char buf[MSN_BUF_LEN]; int i, j = 0; g_return_val_if_fail(str != NULL, NULL); for (i = 0; i < strlen(str); i++) { if (isalnum(str[i])) buf[j++] = str[i]; else { sprintf(buf + j, "%%%02x", (unsigned char)str[i]); j += 3; } } buf[j] = '\0'; return buf; } char * msn_parse_format(const char *mime) { char *cur; GString *ret = g_string_new(NULL); unsigned int colors[3]; cur = strstr(mime, "FN="); if (cur && (*(cur = cur + 3) != ';')) { ret = g_string_append(ret, "<FONT FACE=\""); while (*cur && *cur != ';') { ret = g_string_append_c(ret, *cur); cur++; } ret = g_string_append(ret, "\">"); } cur = strstr(mime, "EF="); if (cur && (*(cur = cur + 3) != ';')) { while (*cur && *cur != ';') { ret = g_string_append_c(ret, '<'); ret = g_string_append_c(ret, *cur); ret = g_string_append_c(ret, '>'); 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]); ret = g_string_append(ret, tag); } } cur = msn_url_decode(ret->str); g_string_free(ret, TRUE); return cur; }
