Thu, 10 Apr 2003 06:09:26 +0000
[gaim-migrate @ 5455]
jabber XHTML support. since people tend to not like to write valid XHTML
all of the time, we now have html_to_xhtml() which does its best to figure
out what you meant. i'm tired, hope this works for everyone
| 1 | 1 | /* |
| 2 | * gaim | |
| 3 | * | |
| 4 | * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
| 5 | * | |
| 6 | * This program is free software; you can redistribute it and/or modify | |
| 7 | * it under the terms of the GNU General Public License as published by | |
| 8 | * the Free Software Foundation; either version 2 of the License, or | |
| 9 | * (at your option) any later version. | |
| 10 | * | |
| 11 | * This program is distributed in the hope that it will be useful, | |
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | * GNU General Public License for more details. | |
| 15 | * | |
| 16 | * You should have received a copy of the GNU General Public License | |
| 17 | * along with this program; if not, write to the Free Software | |
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 19 | * | |
| 20 | */ | |
| 21 | ||
|
349
6f7d28b0f98d
[gaim-migrate @ 359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
278
diff
changeset
|
22 | #ifdef HAVE_CONFIG_H |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
23 | #include <config.h> |
|
349
6f7d28b0f98d
[gaim-migrate @ 359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
278
diff
changeset
|
24 | #endif |
| 3630 | 25 | |
| 26 | #ifndef _WIN32 | |
| 1 | 27 | #include <unistd.h> |
| 3630 | 28 | #include <sys/time.h> |
| 29 | #include <sys/wait.h> | |
| 30 | #else | |
| 31 | #include <direct.h> | |
| 32 | #include <io.h> | |
| 33 | #endif | |
| 34 | ||
| 1 | 35 | #include <errno.h> |
| 36 | #include <stdio.h> | |
| 37 | #include <stdlib.h> | |
| 38 | #include <sys/types.h> | |
| 39 | #include <sys/stat.h> | |
| 40 | #include <string.h> | |
|
210
4226cbf12850
[gaim-migrate @ 220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
209
diff
changeset
|
41 | #include <ctype.h> |
| 3478 | 42 | #ifdef HAVE_ICONV |
| 3361 | 43 | #include <iconv.h> |
| 3478 | 44 | #endif |
|
1376
06cf71686faf
[gaim-migrate @ 1386]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1293
diff
changeset
|
45 | #include <math.h> |
| 1 | 46 | #include "gaim.h" |
|
1575
220b4d845309
[gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1560
diff
changeset
|
47 | #include "prpl.h" |
| 4687 | 48 | #include "gtklist.h" |
| 1 | 49 | |
|
5084
21d2e7ec99ce
[gaim-migrate @ 5439]
Herman Bloggs <herman@bluedigits.com>
parents:
5078
diff
changeset
|
50 | #ifndef _WIN32 |
|
4672
e7d6052fdc32
[gaim-migrate @ 4983]
Mark Doliner <markdoliner@pidgin.im>
parents:
4650
diff
changeset
|
51 | #include <sys/socket.h> |
|
e7d6052fdc32
[gaim-migrate @ 4983]
Mark Doliner <markdoliner@pidgin.im>
parents:
4650
diff
changeset
|
52 | #include <arpa/inet.h> |
|
5084
21d2e7ec99ce
[gaim-migrate @ 5439]
Herman Bloggs <herman@bluedigits.com>
parents:
5078
diff
changeset
|
53 | #else |
| 3630 | 54 | #include "win32dep.h" |
| 55 | #endif | |
| 56 | ||
| 57 | #ifndef MAXPATHLEN | |
| 58 | #define MAXPATHLEN 1024 | |
| 59 | #endif | |
| 60 | ||
| 61 | static char home_dir[MAXPATHLEN]; | |
| 62 | ||
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
63 | char *full_date() |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
64 | { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
65 | char *date; |
| 70 | 66 | time_t tme; |
| 67 | ||
| 68 | time(&tme); | |
| 69 | date = ctime(&tme); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
70 | date[strlen(date) - 1] = '\0'; |
| 70 | 71 | return date; |
| 72 | } | |
| 73 | ||
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
74 | G_GNUC_CONST static gint badchar(char c) |
| 1 | 75 | { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
76 | switch (c) { |
| 970 | 77 | case ' ': |
| 78 | case ',': | |
| 79 | case '(': | |
| 80 | case ')': | |
| 81 | case '\0': | |
|
976
553a33f54fe2
[gaim-migrate @ 986]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
970
diff
changeset
|
82 | case '\n': |
| 970 | 83 | case '<': |
| 84 | case '>': | |
|
1706
fb78a15b2872
[gaim-migrate @ 1716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1622
diff
changeset
|
85 | case '"': |
|
413
5b6c63b5ba38
[gaim-migrate @ 423]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
373
diff
changeset
|
86 | return 1; |
| 970 | 87 | default: |
| 88 | return 0; | |
| 89 | } | |
| 1 | 90 | } |
| 91 | ||
| 92 | ||
|
1376
06cf71686faf
[gaim-migrate @ 1386]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1293
diff
changeset
|
93 | gchar *sec_to_text(guint sec) |
| 1 | 94 | { |
| 4834 | 95 | guint daze, hrs, min; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
96 | char *ret = g_malloc(256); |
| 1 | 97 | |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
98 | daze = sec / (60 * 60 * 24); |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
99 | hrs = (sec % (60 * 60 * 24)) / (60 * 60); |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
100 | min = (sec % (60 * 60)) / 60; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
101 | sec = min % 60; |
| 1 | 102 | |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
103 | if (daze) { |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
104 | if (hrs || min) { |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
105 | if (hrs) { |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
106 | if (min) { |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
107 | g_snprintf(ret, 256, |
| 4834 | 108 | "%d %s, %d %s, %d %s.", |
| 109 | daze, ngettext("day","days",daze), | |
| 110 | hrs, ngettext("hour","hours",hrs), min, ngettext("minute","minutes",min)); | |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
111 | } else { |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
112 | g_snprintf(ret, 256, |
| 4834 | 113 | "%d %s, %d %s.", |
| 114 | daze, ngettext("day","days",daze), hrs, ngettext("hour","hours",hrs)); | |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
115 | } |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
116 | } else { |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
117 | g_snprintf(ret, 256, |
| 4834 | 118 | "%d %s, %d %s.", |
| 119 | daze, ngettext("day","days",daze), min, ngettext("minute","minutes",min)); | |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
120 | } |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
121 | } else |
| 4834 | 122 | g_snprintf(ret, 256, "%d %s.", daze, ngettext("day","days",daze)); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
123 | } else { |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
124 | if (hrs) { |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
125 | if (min) { |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
126 | g_snprintf(ret, 256, |
| 4834 | 127 | "%d %s, %d %s.", |
| 128 | hrs, ngettext("hour","hours",hrs), min, ngettext("minute","minutes",min)); | |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
129 | } else { |
| 4834 | 130 | g_snprintf(ret, 256, "%d %s.", hrs, ngettext("hour","hours",hrs)); |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
131 | } |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
132 | } else { |
| 4834 | 133 | g_snprintf(ret, 256, "%d %s.", min, ngettext("minute","minutes",min)); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
134 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
135 | } |
| 1 | 136 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
137 | return ret; |
| 1 | 138 | } |
| 139 | ||
| 140 | gint linkify_text(char *text) | |
| 141 | { | |
| 5093 | 142 | char *c, *t, *q = NULL; |
|
1622
baf5ef62fb5c
[gaim-migrate @ 1632]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1609
diff
changeset
|
143 | char *cpy = g_malloc(strlen(text) * 3 + 1); |
|
baf5ef62fb5c
[gaim-migrate @ 1632]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1609
diff
changeset
|
144 | char url_buf[BUF_LEN * 4]; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
145 | int cnt = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
146 | /* Assumes you have a buffer able to cary at least BUF_LEN * 2 bytes */ |
| 1 | 147 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
148 | strncpy(cpy, text, strlen(text)); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
149 | cpy[strlen(text)] = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
150 | c = cpy; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
151 | while (*c) { |
| 5093 | 152 | if(!q && (*c == '\"' || *c == '\'')) { |
| 153 | q = c; | |
| 154 | } else if(q) { | |
| 155 | if(*c == *q) | |
| 156 | q = NULL; | |
| 157 | } else if (!g_ascii_strncasecmp(c, "<A", 2)) { | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
158 | while (1) { |
| 4793 | 159 | if (!g_ascii_strncasecmp(c, "/A>", 3)) { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
160 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
161 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
162 | text[cnt++] = *c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
163 | c++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
164 | if (!(*c)) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
165 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
166 | } |
| 4793 | 167 | } else if ((*c=='h') && (!g_ascii_strncasecmp(c, "http://", 7) || (!g_ascii_strncasecmp(c, "https://", 8)))) { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
168 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
169 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
170 | if (badchar(*t)) { |
| 925 | 171 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
172 | if (*(t) == ',' && (*(t + 1) != ' ')) { |
| 925 | 173 | t++; |
| 174 | continue; | |
| 175 | } | |
| 176 | ||
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
177 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
178 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
179 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
180 | url_buf[t - c] = 0; |
|
2614
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
181 | cnt += g_snprintf(&text[cnt], 1024, "<A HREF=\"%s\">%s</A>", |
|
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
182 | url_buf, url_buf); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
183 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
184 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
185 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
186 | if (!t) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
187 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
188 | t++; |
| 1 | 189 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
190 | } |
| 4793 | 191 | } else if (!g_ascii_strncasecmp(c, "www.", 4)) { |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
192 | if (c[4] != '.') { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
193 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
194 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
195 | if (badchar(*t)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
196 | if (t - c == 4) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
197 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
198 | } |
| 925 | 199 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
200 | if (*(t) == ',' && (*(t + 1) != ' ')) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
201 | t++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
202 | continue; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
203 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
204 | |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
205 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
206 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
207 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
208 | url_buf[t - c] = 0; |
|
2614
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
209 | cnt += g_snprintf(&text[cnt], 1024, |
|
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
210 | "<A HREF=\"http://%s\">%s</A>", url_buf, |
|
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
211 | url_buf); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
212 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
213 | break; |
| 925 | 214 | } |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
215 | if (!t) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
216 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
217 | t++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
218 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
219 | } |
| 4793 | 220 | } else if (!g_ascii_strncasecmp(c, "ftp://", 6)) { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
221 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
222 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
223 | if (badchar(*t)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
224 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
225 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
226 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
227 | url_buf[t - c] = 0; |
|
2614
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
228 | cnt += g_snprintf(&text[cnt], 1024, "<A HREF=\"%s\">%s</A>", |
|
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
229 | url_buf, url_buf); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
230 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
231 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
232 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
233 | if (!t) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
234 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
235 | t++; |
| 1 | 236 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
237 | } |
| 4793 | 238 | } else if (!g_ascii_strncasecmp(c, "ftp.", 4)) { |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
239 | if (c[4] != '.') { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
240 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
241 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
242 | if (badchar(*t)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
243 | if (t - c == 4) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
244 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
245 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
246 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
247 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
248 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
249 | url_buf[t - c] = 0; |
|
2614
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
250 | cnt += g_snprintf(&text[cnt], 1024, |
|
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
251 | "<A HREF=\"ftp://%s\">%s</A>", url_buf, |
|
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
252 | url_buf); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
253 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
254 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
255 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
256 | if (!t) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
257 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
258 | t++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
259 | } |
| 924 | 260 | } |
| 4793 | 261 | } else if (!g_ascii_strncasecmp(c, "mailto:", 7)) { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
262 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
263 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
264 | if (badchar(*t)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
265 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
266 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
267 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
268 | url_buf[t - c] = 0; |
|
2614
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
269 | cnt += g_snprintf(&text[cnt], 1024, "<A HREF=\"%s\">%s</A>", |
|
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
270 | url_buf, url_buf); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
271 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
272 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
273 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
274 | if (!t) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
275 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
276 | t++; |
| 1 | 277 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
278 | } |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
279 | } else if (c != cpy && (*c == '@')) { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
280 | char *tmp; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
281 | int flag; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
282 | int len = 0; |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
283 | const char illegal_chars[] = "!@#$%^&*()[]{}/|\\<>\":;\r\n \0"; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
284 | url_buf[0] = 0; |
| 1 | 285 | |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
286 | if (strchr(illegal_chars,*(c - 1)) || strchr(illegal_chars, *(c + 1))) |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
287 | flag = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
288 | else |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
289 | flag = 1; |
| 1 | 290 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
291 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
292 | while (flag) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
293 | if (badchar(*t)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
294 | cnt -= (len - 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
295 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
296 | } else { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
297 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
298 | tmp = g_malloc(len + 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
299 | tmp[len] = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
300 | tmp[0] = *t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
301 | strncpy(tmp + 1, url_buf, len - 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
302 | strcpy(url_buf, tmp); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
303 | url_buf[len] = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
304 | g_free(tmp); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
305 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
306 | if (t < cpy) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
307 | cnt = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
308 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
309 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
310 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
311 | } |
| 1 | 312 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
313 | t = c + 1; |
| 1 | 314 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
315 | while (flag) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
316 | if (badchar(*t)) { |
|
3331
524e2b90c255
[gaim-migrate @ 3349]
Christian Hammond <chipx86@chipx86.com>
parents:
3330
diff
changeset
|
317 | char *d; |
|
524e2b90c255
[gaim-migrate @ 3349]
Christian Hammond <chipx86@chipx86.com>
parents:
3330
diff
changeset
|
318 | |
|
524e2b90c255
[gaim-migrate @ 3349]
Christian Hammond <chipx86@chipx86.com>
parents:
3330
diff
changeset
|
319 | for (d = url_buf + strlen(url_buf) - 1; *d == '.'; d--, t--) |
|
524e2b90c255
[gaim-migrate @ 3349]
Christian Hammond <chipx86@chipx86.com>
parents:
3330
diff
changeset
|
320 | *d = '\0'; |
|
3330
fc82ec88ac96
[gaim-migrate @ 3348]
Christian Hammond <chipx86@chipx86.com>
parents:
3279
diff
changeset
|
321 | |
|
2614
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
322 | cnt += g_snprintf(&text[cnt], 1024, |
|
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
323 | "<A HREF=\"mailto:%s\">%s</A>", url_buf, |
|
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
324 | url_buf); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
325 | text[cnt] = 0; |
| 1 | 326 | |
| 327 | ||
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
328 | c = t; |
| 1 | 329 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
330 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
331 | } else { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
332 | strncat(url_buf, t, 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
333 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
334 | url_buf[len] = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
335 | } |
| 1 | 336 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
337 | t++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
338 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
339 | } |
| 1 | 340 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
341 | if (*c == 0) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
342 | break; |
| 1 | 343 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
344 | text[cnt++] = *c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
345 | c++; |
| 1 | 346 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
347 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
348 | text[cnt] = 0; |
|
845
6e0bd2401bed
[gaim-migrate @ 855]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
831
diff
changeset
|
349 | g_free(cpy); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
350 | return cnt; |
| 1 | 351 | } |
| 352 | ||
| 353 | ||
|
4888
09f16a932490
[gaim-migrate @ 5218]
Christian Hammond <chipx86@chipx86.com>
parents:
4853
diff
changeset
|
354 | static const char alphabet[] = |
|
09f16a932490
[gaim-migrate @ 5218]
Christian Hammond <chipx86@chipx86.com>
parents:
4853
diff
changeset
|
355 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" |
|
09f16a932490
[gaim-migrate @ 5218]
Christian Hammond <chipx86@chipx86.com>
parents:
4853
diff
changeset
|
356 | "0123456789+/"; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
357 | |
| 3147 | 358 | /* XXX Find bug */ |
|
1920
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
359 | char *tobase64(const char *text) |
| 1 | 360 | { |
| 361 | char *out = NULL; | |
|
1920
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
362 | const char *c; |
| 1 | 363 | unsigned int tmp = 0; |
| 364 | int len = 0, n = 0; | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
365 | |
| 1 | 366 | c = text; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
367 | |
|
1829
e9d6f01e9fc9
[gaim-migrate @ 1839]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1826
diff
changeset
|
368 | while (*c) { |
| 1 | 369 | tmp = tmp << 8; |
| 370 | tmp += *c; | |
| 371 | n++; | |
| 372 | ||
| 373 | if (n == 3) { | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
374 | out = g_realloc(out, len + 4); |
| 1 | 375 | out[len] = alphabet[(tmp >> 18) & 0x3f]; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
376 | out[len + 1] = alphabet[(tmp >> 12) & 0x3f]; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
377 | out[len + 2] = alphabet[(tmp >> 6) & 0x3f]; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
378 | out[len + 3] = alphabet[tmp & 0x3f]; |
| 1 | 379 | len += 4; |
| 380 | tmp = 0; | |
| 381 | n = 0; | |
| 382 | } | |
| 383 | c++; | |
| 384 | } | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
385 | switch (n) { |
| 1238 | 386 | |
| 1 | 387 | case 2: |
|
1829
e9d6f01e9fc9
[gaim-migrate @ 1839]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1826
diff
changeset
|
388 | tmp <<= 8; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
389 | out = g_realloc(out, len + 5); |
|
1829
e9d6f01e9fc9
[gaim-migrate @ 1839]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1826
diff
changeset
|
390 | out[len] = alphabet[(tmp >> 18) & 0x3f]; |
|
e9d6f01e9fc9
[gaim-migrate @ 1839]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1826
diff
changeset
|
391 | out[len + 1] = alphabet[(tmp >> 12) & 0x3f]; |
|
e9d6f01e9fc9
[gaim-migrate @ 1839]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1826
diff
changeset
|
392 | out[len + 2] = alphabet[(tmp >> 6) & 0x3f]; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
393 | out[len + 3] = '='; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
394 | out[len + 4] = 0; |
| 1238 | 395 | break; |
| 1 | 396 | case 1: |
|
1829
e9d6f01e9fc9
[gaim-migrate @ 1839]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1826
diff
changeset
|
397 | tmp <<= 16; |
|
1843
aeeac3ee7ac5
[gaim-migrate @ 1853]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1829
diff
changeset
|
398 | out = g_realloc(out, len + 5); |
|
aeeac3ee7ac5
[gaim-migrate @ 1853]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1829
diff
changeset
|
399 | out[len] = alphabet[(tmp >> 18) & 0x3f]; |
|
aeeac3ee7ac5
[gaim-migrate @ 1853]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1829
diff
changeset
|
400 | out[len + 1] = alphabet[(tmp >> 12) & 0x3f]; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
401 | out[len + 2] = '='; |
|
1843
aeeac3ee7ac5
[gaim-migrate @ 1853]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1829
diff
changeset
|
402 | out[len + 3] = '='; |
|
aeeac3ee7ac5
[gaim-migrate @ 1853]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1829
diff
changeset
|
403 | out[len + 4] = 0; |
| 1238 | 404 | break; |
| 1 | 405 | case 0: |
|
1843
aeeac3ee7ac5
[gaim-migrate @ 1853]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1829
diff
changeset
|
406 | out = g_realloc(out, len + 1); |
|
aeeac3ee7ac5
[gaim-migrate @ 1853]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1829
diff
changeset
|
407 | out[len] = 0; |
| 1 | 408 | break; |
| 409 | } | |
| 410 | return out; | |
| 411 | } | |
| 412 | ||
| 413 | ||
|
1920
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
414 | void frombase64(const char *text, char **data, int *size) |
| 1 | 415 | { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
416 | char *out = NULL; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
417 | char tmp = 0; |
|
1920
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
418 | const char *c; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
419 | gint32 tmp2 = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
420 | int len = 0, n = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
421 | |
|
1920
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
422 | if (!text || !data) |
|
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
423 | return; |
|
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
424 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
425 | c = text; |
| 1 | 426 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
427 | while (*c) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
428 | if (*c >= 'A' && *c <= 'Z') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
429 | tmp = *c - 'A'; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
430 | } else if (*c >= 'a' && *c <= 'z') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
431 | tmp = 26 + (*c - 'a'); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
432 | } else if (*c >= '0' && *c <= 57) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
433 | tmp = 52 + (*c - '0'); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
434 | } else if (*c == '+') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
435 | tmp = 62; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
436 | } else if (*c == '/') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
437 | tmp = 63; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
438 | } else if (*c == '=') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
439 | if (n == 3) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
440 | out = g_realloc(out, len + 2); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
441 | out[len] = (char)(tmp2 >> 10) & 0xff; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
442 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
443 | out[len] = (char)(tmp2 >> 2) & 0xff; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
444 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
445 | } else if (n == 2) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
446 | out = g_realloc(out, len + 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
447 | out[len] = (char)(tmp2 >> 4) & 0xff; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
448 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
449 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
450 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
451 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
452 | tmp2 = ((tmp2 << 6) | (tmp & 0xff)); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
453 | n++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
454 | if (n == 4) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
455 | out = g_realloc(out, len + 3); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
456 | out[len] = (char)((tmp2 >> 16) & 0xff); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
457 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
458 | out[len] = (char)((tmp2 >> 8) & 0xff); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
459 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
460 | out[len] = (char)(tmp2 & 0xff); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
461 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
462 | tmp2 = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
463 | n = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
464 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
465 | c++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
466 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
467 | |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
468 | out = g_realloc(out, len + 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
469 | out[len] = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
470 | |
|
1920
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
471 | *data = out; |
|
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
472 | if (size) |
|
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
473 | *size = len; |
| 1 | 474 | } |
| 475 | ||
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
476 | /* |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
477 | * Converts raw data to a pretty, null-terminated base16 string. |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
478 | */ |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
479 | char *tobase16(const char *data, int length) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
480 | { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
481 | int i; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
482 | char *ascii = NULL; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
483 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
484 | if (!data || !length) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
485 | return NULL; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
486 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
487 | ascii = (char *)malloc(length*2 + 1); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
488 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
489 | for (i=0; i<length; i++) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
490 | snprintf(&ascii[i*2], 3, "%02hhx", data[i]); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
491 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
492 | return ascii; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
493 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
494 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
495 | /* |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
496 | * Converts a null-terminated string of hexidecimal to raw data. |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
497 | */ |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
498 | int frombase16(const char *ascii, char **raw) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
499 | { |
|
5078
b1c4f9c928cb
[gaim-migrate @ 5431]
Mark Doliner <markdoliner@pidgin.im>
parents:
5024
diff
changeset
|
500 | int len, i, accumulator=0; |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
501 | char *data; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
502 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
503 | if (!ascii || !(len = strlen(ascii)) || (len % 2)) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
504 | return 0; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
505 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
506 | data = (char *)malloc((len/2)*sizeof(char)); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
507 | for (i=0; i<len; i++) { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
508 | if (!(i % 2)) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
509 | accumulator = 0; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
510 | else |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
511 | accumulator = accumulator << 4; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
512 | if (isdigit(ascii[i])) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
513 | accumulator |= ascii[i]-48; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
514 | else switch(ascii[i]) { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
515 | case 'a': case 'A': accumulator|=10; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
516 | case 'b': case 'B': accumulator|=11; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
517 | case 'c': case 'C': accumulator|=12; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
518 | case 'd': case 'D': accumulator|=13; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
519 | case 'e': case 'E': accumulator|=14; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
520 | case 'f': case 'F': accumulator|=15; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
521 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
522 | if (i % 2) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
523 | data[(i-1)/2] = accumulator; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
524 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
525 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
526 | *raw = data; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
527 | return len/2; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
528 | } |
| 1 | 529 | |
| 530 | char *normalize(const char *s) | |
| 531 | { | |
| 532 | static char buf[BUF_LEN]; | |
| 4793 | 533 | char *tmp; |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
534 | int i, j; |
| 1 | 535 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
536 | g_return_val_if_fail((s != NULL), NULL); |
| 26 | 537 | |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
538 | strncpy(buf, s, BUF_LEN); |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
539 | for (i=0, j=0; buf[j]; i++, j++) { |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
540 | while (buf[j] == ' ') |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
541 | j++; |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
542 | buf[i] = buf[j]; |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
543 | } |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
544 | buf[i] = '\0'; |
| 4793 | 545 | |
| 546 | tmp = g_utf8_strdown(buf, -1); | |
| 4899 | 547 | g_snprintf(buf, sizeof(buf), "%s", tmp); |
| 4793 | 548 | g_free(tmp); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
549 | |
| 1 | 550 | return buf; |
| 551 | } | |
| 552 | ||
| 553 | char *date() | |
| 554 | { | |
| 555 | static char date[80]; | |
| 556 | time_t tme; | |
| 557 | time(&tme); | |
| 558 | strftime(date, sizeof(date), "%H:%M:%S", localtime(&tme)); | |
| 559 | return date; | |
| 560 | } | |
| 561 | ||
|
3806
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
562 | void clean_pid(void) |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
563 | { |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
564 | #ifndef _WIN32 |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
565 | int status; |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
566 | pid_t pid; |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
567 | |
| 3890 | 568 | do { |
| 569 | pid = waitpid(-1, &status, WNOHANG); | |
| 3891 | 570 | } while (pid != 0 && pid != (pid_t)-1); |
| 3890 | 571 | if(pid == (pid_t)-1 && errno != ECHILD) { |
|
3806
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
572 | char errmsg[BUFSIZ]; |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
573 | sprintf(errmsg, "Warning: waitpid() returned %d", pid); |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
574 | perror(errmsg); |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
575 | } |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
576 | #endif |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
577 | } |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
578 | |
| 4491 | 579 | struct gaim_account *gaim_account_find(const char *name, int protocol) |
| 1 | 580 | { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
581 | char *who = g_strdup(normalize(name)); |
| 4491 | 582 | GSList *accts = gaim_accounts; |
| 583 | struct gaim_account *account; | |
| 1 | 584 | |
| 4491 | 585 | while (accts) { |
| 586 | account = (struct gaim_account *)accts->data; | |
| 587 | if (!strcmp(normalize(account->username), who)) { | |
|
1030
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
588 | if (protocol != -1) { |
| 4491 | 589 | if (account->protocol == protocol) { |
|
1030
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
590 | g_free(who); |
| 4491 | 591 | return account; |
|
1030
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
592 | } |
|
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
593 | } else { |
|
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
594 | g_free(who); |
| 4491 | 595 | return account; |
|
1030
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
596 | } |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
597 | |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
598 | } |
| 4491 | 599 | accts = accts->next; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
600 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
601 | g_free(who); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
602 | return NULL; |
| 1 | 603 | } |
| 180 | 604 | |
| 206 | 605 | |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
606 | /* Look for %n, %d, or %t in msg, and replace with the sender's name, date, |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
607 | or time */ |
|
4890
d87a9b5bbe57
[gaim-migrate @ 5220]
Christian Hammond <chipx86@chipx86.com>
parents:
4888
diff
changeset
|
608 | char *away_subs(const char *msg, const char *name) |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
609 | { |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
610 | char *c; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
611 | static char cpy[BUF_LONG]; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
612 | int cnt = 0; |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
613 | time_t t = time(0); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
614 | struct tm *tme = localtime(&t); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
615 | char tmp[20]; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
616 | |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
617 | cpy[0] = '\0'; |
| 4921 | 618 | c = (char *)msg; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
619 | while (*c) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
620 | switch (*c) { |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
621 | case '%': |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
622 | if (*(c + 1)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
623 | switch (*(c + 1)) { |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
624 | case 'n': |
| 1976 | 625 | /* append name */ |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
626 | strcpy(cpy + cnt, name); |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
627 | cnt += strlen(name); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
628 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
629 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
630 | case 'd': |
| 1976 | 631 | /* append date */ |
|
2161
aaa15bb4d65e
[gaim-migrate @ 2171]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2155
diff
changeset
|
632 | strftime(tmp, 20, "%m/%d/%Y", tme); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
633 | strcpy(cpy + cnt, tmp); |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
634 | cnt += strlen(tmp); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
635 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
636 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
637 | case 't': |
| 1976 | 638 | /* append time */ |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
639 | strftime(tmp, 20, "%r", tme); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
640 | strcpy(cpy + cnt, tmp); |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
641 | cnt += strlen(tmp); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
642 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
643 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
644 | default: |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
645 | cpy[cnt++] = *c; |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
646 | } |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
647 | } |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
648 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
649 | default: |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
650 | cpy[cnt++] = *c; |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
651 | } |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
652 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
653 | } |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
654 | cpy[cnt] = '\0'; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
655 | return (cpy); |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
656 | } |
|
603
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
657 | |
|
4890
d87a9b5bbe57
[gaim-migrate @ 5220]
Christian Hammond <chipx86@chipx86.com>
parents:
4888
diff
changeset
|
658 | char *stylize(const gchar *text, int length) |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
659 | { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
660 | gchar *buf; |
|
2016
6ff4dc6efef3
[gaim-migrate @ 2026]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1985
diff
changeset
|
661 | char *tmp = g_malloc(length); |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
662 | |
|
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
663 | buf = g_malloc(length); |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
664 | g_snprintf(buf, length, "%s", text); |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
665 | |
|
831
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
666 | if (font_options & OPT_FONT_BOLD) { |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
667 | g_snprintf(tmp, length, "<B>%s</B>", buf); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
668 | strcpy(buf, tmp); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
669 | } |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
670 | |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
671 | if (font_options & OPT_FONT_ITALIC) { |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
672 | g_snprintf(tmp, length, "<I>%s</I>", buf); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
673 | strcpy(buf, tmp); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
674 | } |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
675 | |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
676 | if (font_options & OPT_FONT_UNDERLINE) { |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
677 | g_snprintf(tmp, length, "<U>%s</U>", buf); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
678 | strcpy(buf, tmp); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
679 | } |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
680 | |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
681 | if (font_options & OPT_FONT_STRIKE) { |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
682 | g_snprintf(tmp, length, "<S>%s</S>", buf); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
683 | strcpy(buf, tmp); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
684 | } |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
685 | |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
686 | if (font_options & OPT_FONT_FACE) { |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
687 | g_snprintf(tmp, length, "<FONT FACE=\"%s\">%s</FONT>", fontface, buf); |
|
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
688 | strcpy(buf, tmp); |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
689 | } |
|
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
690 | |
|
1441
71e46d36113b
[gaim-migrate @ 1451]
Decklin Foster <decklin@red-bean.com>
parents:
1376
diff
changeset
|
691 | if (font_options & OPT_FONT_SIZE) { |
|
71e46d36113b
[gaim-migrate @ 1451]
Decklin Foster <decklin@red-bean.com>
parents:
1376
diff
changeset
|
692 | g_snprintf(tmp, length, "<FONT SIZE=\"%d\">%s</FONT>", fontsize, buf); |
|
71e46d36113b
[gaim-migrate @ 1451]
Decklin Foster <decklin@red-bean.com>
parents:
1376
diff
changeset
|
693 | strcpy(buf, tmp); |
|
71e46d36113b
[gaim-migrate @ 1451]
Decklin Foster <decklin@red-bean.com>
parents:
1376
diff
changeset
|
694 | } |
|
71e46d36113b
[gaim-migrate @ 1451]
Decklin Foster <decklin@red-bean.com>
parents:
1376
diff
changeset
|
695 | |
|
831
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
696 | if (font_options & OPT_FONT_FGCOL) { |
|
4171
54c1da3cb9c3
[gaim-migrate @ 4400]
Alex Converse <alex.converse@gmail.com>
parents:
4162
diff
changeset
|
697 | g_snprintf(tmp, length, "<FONT COLOR=\"#%02X%02X%02X\">%s</FONT>", fgcolor.red/256, |
|
54c1da3cb9c3
[gaim-migrate @ 4400]
Alex Converse <alex.converse@gmail.com>
parents:
4162
diff
changeset
|
698 | fgcolor.green/256, fgcolor.blue/256, buf); |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
699 | strcpy(buf, tmp); |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
700 | } |
|
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
701 | |
|
831
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
702 | if (font_options & OPT_FONT_BGCOL) { |
|
4171
54c1da3cb9c3
[gaim-migrate @ 4400]
Alex Converse <alex.converse@gmail.com>
parents:
4162
diff
changeset
|
703 | g_snprintf(tmp, length, "<BODY BGCOLOR=\"#%02X%02X%02X\">%s</BODY>", bgcolor.red/256, |
|
54c1da3cb9c3
[gaim-migrate @ 4400]
Alex Converse <alex.converse@gmail.com>
parents:
4162
diff
changeset
|
704 | bgcolor.green/256, bgcolor.blue/256, buf); |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
705 | strcpy(buf, tmp); |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
706 | } |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
707 | |
|
2016
6ff4dc6efef3
[gaim-migrate @ 2026]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1985
diff
changeset
|
708 | g_free(tmp); |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
709 | return buf; |
|
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
710 | } |
| 915 | 711 | |
|
4890
d87a9b5bbe57
[gaim-migrate @ 5220]
Christian Hammond <chipx86@chipx86.com>
parents:
4888
diff
changeset
|
712 | void show_usage(int mode, const char *name) |
| 1009 | 713 | { |
| 714 | switch (mode) { | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
715 | case 0: /* full help text */ |
|
3474
83f382019594
[gaim-migrate @ 3525]
Robert McQueen <robot101@debian.org>
parents:
3466
diff
changeset
|
716 | printf("Gaim %s\n" |
|
83f382019594
[gaim-migrate @ 3525]
Robert McQueen <robot101@debian.org>
parents:
3466
diff
changeset
|
717 | "Usage: %s [OPTION]...\n\n" |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
718 | " -a, --acct display account editor window\n" |
| 1254 | 719 | " -w, --away[=MESG] make away on signon (optional argument MESG specifies\n" |
| 720 | " name of away message to use)\n" | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
721 | " -l, --login[=NAME] automatically login (optional argument NAME specifies\n" |
|
3726
73f30897c81c
[gaim-migrate @ 3862]
Robert McQueen <robot101@debian.org>
parents:
3699
diff
changeset
|
722 | " account(s) to use, seperated by commas)\n" |
|
3530
505094bab9bb
[gaim-migrate @ 3603]
John Silvestri <john.silvestri@gmail.com>
parents:
3479
diff
changeset
|
723 | " -n, --loginwin don't automatically login; show login window\n" |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
724 | " -u, --user=NAME use account NAME\n" |
| 1560 | 725 | " -f, --file=FILE use FILE as config\n" |
|
2823
ff84f755cfb3
[gaim-migrate @ 2836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2662
diff
changeset
|
726 | " -d, --debug print debugging messages to stdout\n" |
|
3474
83f382019594
[gaim-migrate @ 3525]
Robert McQueen <robot101@debian.org>
parents:
3466
diff
changeset
|
727 | " -v, --version display the current version and exit\n" |
|
83f382019594
[gaim-migrate @ 3525]
Robert McQueen <robot101@debian.org>
parents:
3466
diff
changeset
|
728 | " -h, --help display this help and exit\n", VERSION, name); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
729 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
730 | case 1: /* short message */ |
|
3474
83f382019594
[gaim-migrate @ 3525]
Robert McQueen <robot101@debian.org>
parents:
3466
diff
changeset
|
731 | printf("Gaim %s. Try `%s -h' for more information.\n", VERSION, name); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
732 | break; |
| 1009 | 733 | } |
| 734 | } | |
| 735 | ||
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
736 | GSList *message_split(char *message, int limit) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
737 | { |
|
1100
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
738 | static GSList *ret = NULL; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
739 | int lastgood = 0, curgood = 0, curpos = 0, len = strlen(message); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
740 | gboolean intag = FALSE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
741 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
742 | if (ret) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
743 | GSList *tmp = ret; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
744 | while (tmp) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
745 | g_free(tmp->data); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
746 | tmp = g_slist_remove(tmp, tmp->data); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
747 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
748 | ret = NULL; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
749 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
750 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
751 | while (TRUE) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
752 | if (lastgood >= len) |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
753 | return ret; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
754 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
755 | if (len - lastgood < limit) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
756 | ret = g_slist_append(ret, g_strdup(&message[lastgood])); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
757 | return ret; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
758 | } |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
759 | |
|
1100
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
760 | curgood = curpos = 0; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
761 | intag = FALSE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
762 | while (curpos <= limit) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
763 | if (isspace(message[curpos + lastgood]) && !intag) |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
764 | curgood = curpos; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
765 | if (message[curpos + lastgood] == '<') |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
766 | intag = TRUE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
767 | if (message[curpos + lastgood] == '>') |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
768 | intag = FALSE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
769 | curpos++; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
770 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
771 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
772 | if (curgood) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
773 | ret = g_slist_append(ret, g_strndup(&message[lastgood], curgood)); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
774 | if (isspace(message[curgood + lastgood])) |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
775 | lastgood += curgood + 1; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
776 | else |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
777 | lastgood += curgood; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
778 | } else { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
779 | /* whoops, guess we have to fudge it here */ |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
780 | ret = g_slist_append(ret, g_strndup(&message[lastgood], limit)); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
781 | lastgood += limit; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
782 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
783 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
784 | } |
|
1191
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
785 | |
| 3867 | 786 | const gchar *gaim_home_dir() |
| 3630 | 787 | { |
| 788 | if(g_get_home_dir()) | |
| 789 | return g_get_home_dir(); | |
| 790 | else | |
| 791 | #ifndef _WIN32 | |
| 792 | return NULL; | |
| 793 | #else | |
| 794 | /* Win9x and WinME don't have a home dir */ | |
| 795 | return "C:"; | |
| 796 | #endif | |
| 797 | ||
| 798 | } | |
| 799 | ||
| 1238 | 800 | /* returns a string of the form ~/.gaim, where ~ is replaced by the user's home |
| 3630 | 801 | * dir. Note that there is no trailing slash after .gaim. */ |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
802 | gchar *gaim_user_dir() |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
803 | { |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
804 | const gchar *hd = gaim_home_dir(); |
|
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
805 | if(hd) { |
|
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
806 | strcpy( (char*)&home_dir, hd ); |
| 3630 | 807 | strcat( (char*)&home_dir, G_DIR_SEPARATOR_S ".gaim" ); |
| 808 | return (gchar*)&home_dir; | |
| 809 | } | |
| 810 | else { | |
| 811 | return NULL; | |
| 812 | } | |
| 1238 | 813 | } |
| 814 | ||
|
1292
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
815 | /* |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
816 | * rcg10312000 This could be more robust, but it works for my current |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
817 | * goal: to remove those annoying <BR> tags. :) |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
818 | * dtf12162000 made the loop more readable. i am a neat freak. ;) */ |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
819 | void strncpy_nohtml(gchar *dest, const gchar *src, size_t destsize) |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
820 | { |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
821 | gchar *ptr; |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
822 | g_snprintf(dest, destsize, "%s", src); |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
823 | |
|
1815
e2b090284b19
[gaim-migrate @ 1825]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1805
diff
changeset
|
824 | while ((ptr = strstr(dest, "<BR>")) != NULL) { |
|
1292
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
825 | /* replace <BR> with a newline. */ |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
826 | *ptr = '\n'; |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
827 | memmove(ptr + 1, ptr + 4, strlen(ptr + 4) + 1); |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
828 | } |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
829 | } |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
830 | |
|
1191
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
831 | void strncpy_withhtml(gchar *dest, const gchar *src, size_t destsize) |
|
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
832 | { |
|
1202
5f470d8479af
[gaim-migrate @ 1212]
Decklin Foster <decklin@red-bean.com>
parents:
1197
diff
changeset
|
833 | gchar *end = dest + destsize; |
|
1191
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
834 | |
| 1293 | 835 | while (dest < end) { |
| 836 | if (*src == '\n' && dest < end - 5) { | |
|
1202
5f470d8479af
[gaim-migrate @ 1212]
Decklin Foster <decklin@red-bean.com>
parents:
1197
diff
changeset
|
837 | strcpy(dest, "<BR>"); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
838 | src++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
839 | dest += 4; |
| 1293 | 840 | } else { |
| 841 | *dest++ = *src; | |
|
2372
c24942700dfd
[gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2371
diff
changeset
|
842 | if (*src == '\0') |
|
c24942700dfd
[gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2371
diff
changeset
|
843 | return; |
|
c24942700dfd
[gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2371
diff
changeset
|
844 | else |
|
c24942700dfd
[gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2371
diff
changeset
|
845 | src++; |
| 1293 | 846 | } |
|
1191
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
847 | } |
|
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
848 | } |
| 1254 | 849 | |
| 850 | ||
| 2956 | 851 | /* |
| 852 | * Like strncpy_withhtml (above), but malloc()'s the necessary space | |
| 853 | * | |
| 854 | * The caller is responsible for freeing the space pointed to by the | |
| 855 | * return value. | |
| 856 | */ | |
| 857 | ||
| 858 | gchar *strdup_withhtml(const gchar *src) | |
| 859 | { | |
| 3279 | 860 | gchar *sp, *dest; |
| 2956 | 861 | gulong destsize; |
| 862 | ||
| 4771 | 863 | if(!src) |
| 864 | return NULL; | |
| 865 | ||
| 2956 | 866 | /* |
| 867 | * All we need do is multiply the number of newlines by 3 (the | |
| 868 | * additional length of "<BR>" over "\n"), account for the | |
| 869 | * terminator, malloc the space and call strncpy_withhtml. | |
| 870 | */ | |
| 3279 | 871 | for(destsize = 0, sp = (gchar *)src; (sp = strchr(sp, '\n')) != NULL; ++sp, ++destsize) |
| 2956 | 872 | ; |
| 873 | destsize *= 3; | |
| 874 | destsize += strlen(src) + 1; | |
| 875 | dest = g_malloc(destsize); | |
| 876 | strncpy_withhtml(dest, src, destsize); | |
| 877 | ||
| 878 | return(dest); | |
| 879 | } | |
| 880 | ||
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
881 | void strip_linefeed(gchar *text) |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
882 | { |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
883 | int i, j; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
884 | gchar *text2 = g_malloc(strlen(text) + 1); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
885 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
886 | for (i = 0, j = 0; text[i]; i++) |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
887 | if (text[i] != '\r') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
888 | text2[j++] = text[i]; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
889 | text2[j] = '\0'; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
890 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
891 | strcpy(text, text2); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
892 | g_free(text2); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
893 | } |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
894 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
895 | char *add_cr(char *text) |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
896 | { |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
897 | char *ret = NULL; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
898 | int count = 0, i, j; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
899 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
900 | if (text[0] == '\n') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
901 | count++; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
902 | for (i = 1; i < strlen(text); i++) |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
903 | if (text[i] == '\n' && text[i - 1] != '\r') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
904 | count++; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
905 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
906 | if (count == 0) |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
907 | return g_strdup(text); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
908 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
909 | ret = g_malloc0(strlen(text) + count + 1); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
910 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
911 | i = 0; j = 0; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
912 | if (text[i] == '\n') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
913 | ret[j++] = '\r'; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
914 | ret[j++] = text[i++]; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
915 | for (; i < strlen(text); i++) { |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
916 | if (text[i] == '\n' && text[i - 1] != '\r') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
917 | ret[j++] = '\r'; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
918 | ret[j++] = text[i]; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
919 | } |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
920 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
921 | debug_printf("got: %s, leaving with %s\n", text, ret); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
922 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
923 | return ret; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
924 | } |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
925 | |
|
1805
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
926 | time_t get_time(int year, int month, int day, int hour, int min, int sec) |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
927 | { |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
928 | struct tm tm; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
929 | |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
930 | tm.tm_year = year - 1900; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
931 | tm.tm_mon = month - 1; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
932 | tm.tm_mday = day; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
933 | tm.tm_hour = hour; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
934 | tm.tm_min = min; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
935 | tm.tm_sec = sec >= 0 ? sec : time(NULL) % 60; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
936 | return mktime(&tm); |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
937 | } |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
938 | |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
939 | /* |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
940 | * Like mkstemp() but returns a file pointer, uses a pre-set template, |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
941 | * uses the semantics of tempnam() for the directory to use and allocates |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
942 | * the space for the filepath. |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
943 | * |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
944 | * Caller is responsible for closing the file and removing it when done, |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
945 | * as well as freeing the space pointed-to by "path" with g_free(). |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
946 | * |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
947 | * Returns NULL on failure and cleans up after itself if so. |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
948 | */ |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
949 | static const char *gaim_mkstemp_templ = {"gaimXXXXXX"}; |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
950 | |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
951 | FILE *gaim_mkstemp(gchar **fpath) |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
952 | { |
| 3466 | 953 | const gchar *tmpdir; |
| 3630 | 954 | #ifndef _WIN32 |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
955 | int fd; |
| 3630 | 956 | #endif |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
957 | FILE *fp = NULL; |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
958 | |
| 3630 | 959 | if((tmpdir = (gchar*)g_get_tmp_dir()) != NULL) { |
| 960 | if((*fpath = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", tmpdir, gaim_mkstemp_templ)) != NULL) { | |
| 961 | #ifdef _WIN32 | |
| 962 | char* result = _mktemp( *fpath ); | |
| 963 | if( result == NULL ) | |
| 964 | debug_printf("gaim_mkstemp: Problem creating the template\n"); | |
| 965 | else | |
| 966 | { | |
| 967 | if( (fp = fopen( result, "w+" )) == NULL ) { | |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
968 | debug_printf("Error: Couldn't fopen() in gaim_mkstemp():\n%s\n", result); |
| 3630 | 969 | } |
| 970 | } | |
| 971 | #else | |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
972 | if((fd = mkstemp(*fpath)) == -1) { |
|
3232
5250b27f846e
[gaim-migrate @ 3249]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3230
diff
changeset
|
973 | debug_printf("Error: Couldn't make \"%s\", error: %d\n", *fpath, errno); |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
974 | } else { |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
975 | if((fp = fdopen(fd, "r+")) == NULL) { |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
976 | close(fd); |
|
3232
5250b27f846e
[gaim-migrate @ 3249]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3230
diff
changeset
|
977 | debug_printf("Error: Couldn't fdopen(), error: %d\n", errno); |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
978 | } |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
979 | } |
| 3630 | 980 | #endif |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
981 | if(!fp) { |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
982 | g_free(*fpath); |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
983 | *fpath = NULL; |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
984 | } |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
985 | } |
|
3233
c735f7dccfab
[gaim-migrate @ 3250]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3232
diff
changeset
|
986 | } else { |
|
c735f7dccfab
[gaim-migrate @ 3250]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3232
diff
changeset
|
987 | debug_printf("Error: g_get_tmp_dir() failed in gaim_mkstemp()!\n"); |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
988 | } |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
989 | |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
990 | return fp; |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
991 | } |
| 3478 | 992 | |
| 993 | /* AIM URI's ARE FUN :-D */ | |
| 994 | const char *handle_uri(char *uri) { | |
| 995 | GString *str; | |
| 996 | GSList *conn = connections; | |
| 3867 | 997 | struct gaim_connection *gc = NULL; |
| 3478 | 998 | |
| 999 | debug_printf("Handling URI: %s\n", uri); | |
| 1000 | ||
| 1001 | /* Well, we'd better check to make sure we have at least one | |
| 1002 | AIM account connected. */ | |
| 3867 | 1003 | while (conn) { |
| 1004 | gc = conn->data; | |
| 4349 | 1005 | if (gc->protocol == PROTO_OSCAR && isalpha(gc->username[0])) { |
| 3478 | 1006 | break; |
| 1007 | } | |
| 1008 | conn = conn->next; | |
| 1009 | } | |
| 1010 | ||
| 1011 | if (gc == NULL) | |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
1012 | return _("Not connected to AIM"); |
| 3478 | 1013 | |
| 3479 | 1014 | /* aim:goim?screenname=screenname&message=message */ |
| 4793 | 1015 | if (!g_ascii_strncasecmp(uri, "aim:goim?", strlen("aim:goim?"))) { |
| 3478 | 1016 | char *who, *what; |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1017 | struct gaim_conversation *c; |
| 3479 | 1018 | uri = uri + strlen("aim:goim?"); |
| 3478 | 1019 | |
| 1020 | if (!(who = strstr(uri, "screenname="))) { | |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
1021 | return _("No screenname given."); |
| 3478 | 1022 | } |
| 1023 | /* spaces are encoded as +'s */ | |
| 1024 | who = who + strlen("screenname="); | |
| 1025 | str = g_string_new(NULL); | |
| 1026 | while (*who && (*who != '&')) { | |
| 1027 | g_string_append_c(str, *who == '+' ? ' ' : *who); | |
| 1028 | who++; | |
| 1029 | } | |
| 1030 | who = g_strdup(str->str); | |
| 1031 | g_string_free(str, TRUE); | |
| 1032 | ||
| 1033 | what = strstr(uri, "message="); | |
| 1034 | if (what) { | |
| 1035 | what = what + strlen("message="); | |
| 1036 | str = g_string_new(NULL); | |
| 4793 | 1037 | while (*what && (*what != '&' || !g_ascii_strncasecmp(what, "&", 5))) { |
| 3478 | 1038 | g_string_append_c(str, *what == '+' ? ' ' : *what); |
| 1039 | what++; | |
| 1040 | } | |
| 1041 | what = g_strdup(str->str); | |
| 1042 | g_string_free(str, TRUE); | |
| 1043 | } | |
| 4491 | 1044 | |
| 1045 | c = gaim_conversation_new(GAIM_CONV_IM, gc->account, who); | |
| 3478 | 1046 | g_free(who); |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1047 | |
| 3478 | 1048 | if (what) { |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1049 | struct gaim_gtk_conversation *gtkconv = GAIM_GTK_CONVERSATION(c); |
|
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1050 | |
|
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1051 | gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, what, -1); |
| 3478 | 1052 | g_free(what); |
| 1053 | } | |
| 4793 | 1054 | } else if (!g_ascii_strncasecmp(uri, "aim:addbuddy?", strlen("aim:addbuddy?"))) { |
| 3478 | 1055 | char *who, *group; |
| 3479 | 1056 | uri = uri + strlen("aim:addbuddy?"); |
| 3478 | 1057 | /* spaces are encoded as +'s */ |
| 4491 | 1058 | |
| 3478 | 1059 | if (!(who = strstr(uri, "screenname="))) { |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
1060 | return _("No screenname given."); |
| 3478 | 1061 | } |
| 1062 | who = who + strlen("screenname="); | |
| 1063 | str = g_string_new(NULL); | |
| 1064 | while (*who && (*who != '&')) { | |
| 1065 | g_string_append_c(str, *who == '+' ? ' ' : *who); | |
| 1066 | who++; | |
| 1067 | } | |
| 1068 | who = g_strdup(str->str); | |
| 1069 | g_string_free(str, TRUE); | |
| 1070 | ||
| 1071 | group = strstr(uri, "group="); | |
| 1072 | if (group) { | |
| 1073 | group = group + strlen("group="); | |
| 1074 | str = g_string_new(NULL); | |
| 4793 | 1075 | while (*group && (*group != '&' || !g_ascii_strncasecmp(group, "&", 5))) { |
| 3478 | 1076 | g_string_append_c(str, *group == '+' ? ' ' : *group); |
| 1077 | group++; | |
| 1078 | } | |
| 1079 | group = g_strdup(str->str); | |
| 1080 | g_string_free(str, TRUE); | |
| 1081 | } | |
| 1082 | debug_printf("who: %s\n", who); | |
| 1083 | show_add_buddy(gc, who, group, NULL); | |
| 1084 | g_free(who); | |
| 1085 | if (group) | |
| 1086 | g_free(group); | |
| 4793 | 1087 | } else if (!g_ascii_strncasecmp(uri, "aim:gochat?", strlen("aim:gochat?"))) { |
| 3478 | 1088 | char *room; |
| 1089 | GList *chat=NULL; | |
| 1090 | int exch = 5; | |
| 1091 | ||
| 3479 | 1092 | uri = uri + strlen("aim:gochat?"); |
| 3478 | 1093 | /* spaces are encoded as +'s */ |
| 1094 | ||
| 1095 | if (!(room = strstr(uri, "roomname="))) { | |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
1096 | return _("No roomname given."); |
| 3478 | 1097 | } |
| 1098 | room = room + strlen("roomname="); | |
| 1099 | str = g_string_new(NULL); | |
| 1100 | while (*room && (*room != '&')) { | |
| 1101 | g_string_append_c(str, *room == '+' ? ' ' : *room); | |
| 1102 | room++; | |
| 1103 | } | |
| 1104 | room = g_strdup(str->str); | |
| 1105 | g_string_free(str, TRUE); | |
| 1106 | chat = g_list_append(NULL, room); | |
| 1107 | chat = g_list_append(chat, &exch); | |
| 1108 | serv_join_chat(gc, chat); | |
| 1109 | g_free(room); | |
| 1110 | g_list_free(chat); | |
| 1111 | } else { | |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
1112 | return _("Invalid AIM URI"); |
| 3478 | 1113 | } |
| 1114 | ||
| 1115 | ||
| 1116 | return NULL; | |
| 1117 | } | |
| 3649 | 1118 | |
| 3668 | 1119 | GtkWidget *gaim_new_item_from_stock(GtkWidget *menu, const char *str, const char *icon, GtkSignalFunc sf, gpointer data, guint accel_key, guint accel_mods, char *mod) |
| 1120 | { | |
| 1121 | GtkWidget *menuitem; | |
| 3867 | 1122 | /* |
| 3668 | 1123 | GtkWidget *hbox; |
| 1124 | GtkWidget *label; | |
| 3867 | 1125 | */ |
| 3668 | 1126 | GtkWidget *image; |
| 1127 | ||
| 1128 | if (icon == NULL) | |
|
4309
13f53e2bb70a
[gaim-migrate @ 4563]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4282
diff
changeset
|
1129 | menuitem = gtk_menu_item_new_with_mnemonic(str); |
| 4635 | 1130 | else |
|
4309
13f53e2bb70a
[gaim-migrate @ 4563]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4282
diff
changeset
|
1131 | menuitem = gtk_image_menu_item_new_with_mnemonic(str); |
| 3668 | 1132 | |
| 1133 | if (menu) | |
| 4635 | 1134 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); |
| 3668 | 1135 | |
| 1136 | if (sf) | |
|
4162
7aca7e45e675
[gaim-migrate @ 4391]
Christian Hammond <chipx86@chipx86.com>
parents:
4160
diff
changeset
|
1137 | g_signal_connect(GTK_OBJECT(menuitem), "activate", sf, data); |
| 3668 | 1138 | |
| 1139 | if (icon != NULL) { | |
| 1140 | image = gtk_image_new_from_stock(icon, GTK_ICON_SIZE_MENU); | |
| 1141 | gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); | |
| 1142 | } | |
| 3867 | 1143 | /* FIXME: this isn't right |
| 3668 | 1144 | if (mod) { |
| 1145 | label = gtk_label_new(mod); | |
| 1146 | gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 2); | |
| 1147 | gtk_widget_show(label); | |
| 1148 | } | |
| 3867 | 1149 | */ |
| 3668 | 1150 | /* |
| 1151 | if (accel_key) { | |
| 1152 | gtk_widget_add_accelerator(menuitem, "activate", accel, accel_key, | |
| 1153 | accel_mods, GTK_ACCEL_LOCKED); | |
| 1154 | } | |
| 1155 | */ | |
| 1156 | ||
| 1157 | gtk_widget_show_all(menuitem); | |
| 1158 | ||
| 1159 | return menuitem; | |
| 1160 | } | |
| 1161 | ||
| 3698 | 1162 | GtkWidget *gaim_new_item(GtkWidget *menu, const char *str) |
| 1163 | { | |
| 1164 | GtkWidget *menuitem; | |
| 1165 | GtkWidget *label; | |
| 1166 | ||
| 1167 | menuitem = gtk_menu_item_new(); | |
| 1168 | if (menu) | |
| 4635 | 1169 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); |
| 3698 | 1170 | gtk_widget_show(menuitem); |
| 1171 | ||
| 1172 | label = gtk_label_new(str); | |
| 1173 | gtk_label_set_pattern(GTK_LABEL(label), "_"); | |
| 1174 | gtk_container_add(GTK_CONTAINER(menuitem), label); | |
| 1175 | gtk_widget_show(label); | |
| 3699 | 1176 | /* FIXME: Go back and fix this |
| 3698 | 1177 | gtk_widget_add_accelerator(menuitem, "activate", accel, str[0], |
| 1178 | GDK_MOD1_MASK, GTK_ACCEL_LOCKED); | |
| 3699 | 1179 | */ |
| 3698 | 1180 | return menuitem; |
| 1181 | } | |
| 1182 | ||
| 4458 | 1183 | char *gaim_try_conv_to_utf8(const char *str) |
| 1184 | { | |
| 1185 | int converted; | |
| 1186 | char *utf8; | |
| 3698 | 1187 | |
| 4458 | 1188 | if (str == NULL) { |
| 1189 | return NULL; | |
| 1190 | } | |
| 1191 | ||
| 1192 | if (g_utf8_validate(str, -1, NULL)) { | |
| 1193 | return g_strdup(str); | |
| 1194 | } | |
| 3698 | 1195 | |
| 4458 | 1196 | utf8 = g_locale_to_utf8(str, -1, &converted, NULL, NULL); |
| 1197 | if (utf8 && converted == strlen (str)) { | |
| 1198 | return(utf8); | |
| 1199 | } else if (utf8) { | |
| 1200 | g_free(utf8); | |
| 1201 | } | |
| 3698 | 1202 | |
| 4458 | 1203 | utf8 = g_convert(str, -1, "UTF-8", "ISO-8859-15", &converted, NULL, NULL); |
| 1204 | if (utf8 && converted == strlen (str)) { | |
| 1205 | return(utf8); | |
| 1206 | } else if (utf8) { | |
| 1207 | g_free(utf8); | |
| 1208 | } | |
| 3698 | 1209 | |
| 4458 | 1210 | return(NULL); |
| 1211 | } | |
|
4650
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1212 | |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1213 | char *gaim_getip_from_fd(int fd) |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1214 | { |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1215 | struct sockaddr addr; |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1216 | socklen_t namelen = sizeof(addr); |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1217 | |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1218 | if (getsockname(fd, &addr, &namelen)) |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1219 | return NULL; |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1220 | |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1221 | return g_strdup(inet_ntoa(((struct sockaddr_in *)&addr)->sin_addr)); |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1222 | } |
| 4793 | 1223 | |
| 1224 | gint gaim_utf8_strcasecmp(const gchar *a, const gchar *b) { | |
| 1225 | gchar *a_norm = g_utf8_casefold(a, -1); | |
| 1226 | gchar *b_norm = g_utf8_casefold(b, -1); | |
| 1227 | gint ret = g_utf8_collate(a_norm, b_norm); | |
| 1228 | g_free(a_norm); | |
| 1229 | g_free(b_norm); | |
| 1230 | return ret; | |
| 1231 | } |