Mon, 26 May 2003 14:04:53 +0000
[gaim-migrate @ 5932]
(10:04:36) Robot101: LSchiere: alternative way to deal with the magic number - remove it. doesn't crash
when signing on to a HTTP proxy. also resolves the mysterious "unsigned tmp" which appeared a week or few
ago..
committer: Luke Schierer <lschiere@pidgin.im>
| 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" |
| 1 | 48 | |
|
5084
21d2e7ec99ce
[gaim-migrate @ 5439]
Herman Bloggs <herman@bluedigits.com>
parents:
5078
diff
changeset
|
49 | #ifndef _WIN32 |
|
4672
e7d6052fdc32
[gaim-migrate @ 4983]
Mark Doliner <markdoliner@pidgin.im>
parents:
4650
diff
changeset
|
50 | #include <sys/socket.h> |
|
e7d6052fdc32
[gaim-migrate @ 4983]
Mark Doliner <markdoliner@pidgin.im>
parents:
4650
diff
changeset
|
51 | #include <arpa/inet.h> |
|
5084
21d2e7ec99ce
[gaim-migrate @ 5439]
Herman Bloggs <herman@bluedigits.com>
parents:
5078
diff
changeset
|
52 | #else |
| 3630 | 53 | #include "win32dep.h" |
| 54 | #endif | |
| 55 | ||
| 56 | #ifndef MAXPATHLEN | |
| 57 | #define MAXPATHLEN 1024 | |
| 58 | #endif | |
| 59 | ||
| 60 | static char home_dir[MAXPATHLEN]; | |
| 61 | ||
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
62 | char *full_date() |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
63 | { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
64 | char *date; |
| 70 | 65 | time_t tme; |
| 66 | ||
| 67 | time(&tme); | |
| 68 | date = ctime(&tme); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
69 | date[strlen(date) - 1] = '\0'; |
| 70 | 70 | return date; |
| 71 | } | |
| 72 | ||
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
73 | G_GNUC_CONST static gint badchar(char c) |
| 1 | 74 | { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
75 | switch (c) { |
| 970 | 76 | case ' ': |
| 77 | case ',': | |
| 78 | case '(': | |
| 79 | case ')': | |
| 80 | case '\0': | |
|
976
553a33f54fe2
[gaim-migrate @ 986]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
970
diff
changeset
|
81 | case '\n': |
| 970 | 82 | case '<': |
| 83 | case '>': | |
|
1706
fb78a15b2872
[gaim-migrate @ 1716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1622
diff
changeset
|
84 | case '"': |
| 5176 | 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; |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
96 | char *ret = NULL; |
| 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) { |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
107 | ret = g_strdup_printf( |
| 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 { |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
112 | ret = g_strdup_printf( |
| 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 { |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
117 | ret = g_strdup_printf( |
| 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 |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
122 | ret = g_strdup_printf("%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) { |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
126 | ret = g_strdup_printf( |
| 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 { |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
130 | ret = g_strdup_printf("%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 { |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
133 | ret = g_strdup_printf("%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 | ||
| 5136 | 140 | char *linkify_text(const char *text) |
| 1 | 141 | { |
| 5136 | 142 | const char *c, *t, *q = NULL; |
| 143 | char *tmp; | |
|
1622
baf5ef62fb5c
[gaim-migrate @ 1632]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1609
diff
changeset
|
144 | char url_buf[BUF_LEN * 4]; |
| 5136 | 145 | GString *ret = g_string_new(""); |
|
1252
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 | |
| 5136 | 148 | c = text; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
149 | while (*c) { |
| 5093 | 150 | if(!q && (*c == '\"' || *c == '\'')) { |
| 151 | q = c; | |
| 152 | } else if(q) { | |
| 153 | if(*c == *q) | |
| 154 | q = NULL; | |
| 155 | } else if (!g_ascii_strncasecmp(c, "<A", 2)) { | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
156 | while (1) { |
| 4793 | 157 | if (!g_ascii_strncasecmp(c, "/A>", 3)) { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
158 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
159 | } |
| 5136 | 160 | ret = g_string_append_c(ret, *c); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
161 | c++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
162 | if (!(*c)) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
163 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
164 | } |
| 5136 | 165 | } else if ((*c=='h') && (!g_ascii_strncasecmp(c, "http://", 7) || |
| 166 | (!g_ascii_strncasecmp(c, "https://", 8)))) { | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
167 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
168 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
169 | if (badchar(*t)) { |
| 925 | 170 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
171 | if (*(t) == ',' && (*(t + 1) != ' ')) { |
| 925 | 172 | t++; |
| 173 | continue; | |
| 174 | } | |
| 175 | ||
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
176 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
177 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
178 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
179 | url_buf[t - c] = 0; |
| 5136 | 180 | g_string_append_printf(ret, "<A HREF=\"%s\">%s</A>", |
| 181 | url_buf, url_buf); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
182 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
183 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
184 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
185 | if (!t) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
186 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
187 | t++; |
| 1 | 188 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
189 | } |
| 4793 | 190 | } else if (!g_ascii_strncasecmp(c, "www.", 4)) { |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
191 | if (c[4] != '.') { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
192 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
193 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
194 | if (badchar(*t)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
195 | if (t - c == 4) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
196 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
197 | } |
| 925 | 198 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
199 | if (*(t) == ',' && (*(t + 1) != ' ')) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
200 | t++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
201 | continue; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
202 | } |
|
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 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
205 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
206 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
207 | url_buf[t - c] = 0; |
| 5136 | 208 | g_string_append_printf(ret, |
| 209 | "<A HREF=\"http://%s\">%s</A>", url_buf, | |
| 210 | url_buf); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
211 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
212 | break; |
| 925 | 213 | } |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
214 | if (!t) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
215 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
216 | t++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
217 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
218 | } |
| 4793 | 219 | } else if (!g_ascii_strncasecmp(c, "ftp://", 6)) { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
220 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
221 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
222 | if (badchar(*t)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
223 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
224 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
225 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
226 | url_buf[t - c] = 0; |
| 5136 | 227 | g_string_append_printf(ret, "<A HREF=\"%s\">%s</A>", |
| 228 | url_buf, url_buf); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
229 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
230 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
231 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
232 | if (!t) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
233 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
234 | t++; |
| 1 | 235 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
236 | } |
| 4793 | 237 | } else if (!g_ascii_strncasecmp(c, "ftp.", 4)) { |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
238 | if (c[4] != '.') { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
239 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
240 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
241 | if (badchar(*t)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
242 | if (t - c == 4) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
243 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
244 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
245 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
246 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
247 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
248 | url_buf[t - c] = 0; |
| 5136 | 249 | g_string_append_printf(ret, |
| 250 | "<A HREF=\"ftp://%s\">%s</A>", url_buf, | |
| 251 | url_buf); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
252 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
253 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
254 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
255 | if (!t) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
256 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
257 | t++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
258 | } |
| 924 | 259 | } |
| 4793 | 260 | } else if (!g_ascii_strncasecmp(c, "mailto:", 7)) { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
261 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
262 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
263 | if (badchar(*t)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
264 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
265 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
266 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
267 | url_buf[t - c] = 0; |
| 5136 | 268 | g_string_append_printf(ret, "<A HREF=\"%s\">%s</A>", |
|
2614
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
269 | url_buf, url_buf); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
270 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
271 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
272 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
273 | if (!t) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
274 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
275 | t++; |
| 1 | 276 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
277 | } |
| 5136 | 278 | } else if (c != text && (*c == '@')) { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
279 | char *tmp; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
280 | int flag; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
281 | int len = 0; |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
282 | const char illegal_chars[] = "!@#$%^&*()[]{}/|\\<>\":;\r\n \0"; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
283 | url_buf[0] = 0; |
| 1 | 284 | |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
285 | 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
|
286 | flag = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
287 | else |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
288 | flag = 1; |
| 1 | 289 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
290 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
291 | while (flag) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
292 | if (badchar(*t)) { |
| 5136 | 293 | ret = g_string_truncate(ret, ret->len - (len - 1)); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
294 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
295 | } else { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
296 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
297 | tmp = g_malloc(len + 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
298 | tmp[len] = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
299 | tmp[0] = *t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
300 | strncpy(tmp + 1, url_buf, len - 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
301 | strcpy(url_buf, tmp); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
302 | url_buf[len] = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
303 | g_free(tmp); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
304 | t--; |
| 5136 | 305 | if (t < text) { |
| 306 | ret = g_string_assign(ret, ""); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
307 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
308 | } |
|
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 | } |
| 1 | 311 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
312 | t = c + 1; |
| 1 | 313 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
314 | while (flag) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
315 | if (badchar(*t)) { |
|
3331
524e2b90c255
[gaim-migrate @ 3349]
Christian Hammond <chipx86@chipx86.com>
parents:
3330
diff
changeset
|
316 | char *d; |
|
524e2b90c255
[gaim-migrate @ 3349]
Christian Hammond <chipx86@chipx86.com>
parents:
3330
diff
changeset
|
317 | |
|
524e2b90c255
[gaim-migrate @ 3349]
Christian Hammond <chipx86@chipx86.com>
parents:
3330
diff
changeset
|
318 | for (d = url_buf + strlen(url_buf) - 1; *d == '.'; d--, t--) |
|
524e2b90c255
[gaim-migrate @ 3349]
Christian Hammond <chipx86@chipx86.com>
parents:
3330
diff
changeset
|
319 | *d = '\0'; |
|
3330
fc82ec88ac96
[gaim-migrate @ 3348]
Christian Hammond <chipx86@chipx86.com>
parents:
3279
diff
changeset
|
320 | |
| 5136 | 321 | g_string_append_printf(ret, "<A HREF=\"mailto:%s\">%s</A>", |
| 322 | url_buf, url_buf); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
323 | c = t; |
| 1 | 324 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
325 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
326 | } else { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
327 | strncat(url_buf, t, 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
328 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
329 | url_buf[len] = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
330 | } |
| 1 | 331 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
332 | t++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
333 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
334 | } |
| 1 | 335 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
336 | if (*c == 0) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
337 | break; |
| 1 | 338 | |
| 5136 | 339 | ret = g_string_append_c(ret, *c); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
340 | c++; |
| 1 | 341 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
342 | } |
| 5136 | 343 | tmp = ret->str; |
| 344 | g_string_free(ret, FALSE); | |
| 345 | return tmp; | |
| 1 | 346 | } |
| 347 | ||
| 348 | ||
|
4888
09f16a932490
[gaim-migrate @ 5218]
Christian Hammond <chipx86@chipx86.com>
parents:
4853
diff
changeset
|
349 | static const char alphabet[] = |
|
09f16a932490
[gaim-migrate @ 5218]
Christian Hammond <chipx86@chipx86.com>
parents:
4853
diff
changeset
|
350 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" |
|
09f16a932490
[gaim-migrate @ 5218]
Christian Hammond <chipx86@chipx86.com>
parents:
4853
diff
changeset
|
351 | "0123456789+/"; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
352 | |
| 5426 | 353 | /* This was borrowed from the Kame source, and then tweaked to our needs */ |
| 354 | char *tobase64(const unsigned char *buf, size_t len) | |
| 1 | 355 | { |
| 5531 | 356 | char *s = NULL, *rv = NULL; |
|
5532
3ed50db32fe9
[gaim-migrate @ 5932]
Robert McQueen <robot101@debian.org>
parents:
5531
diff
changeset
|
357 | unsigned char tmp; |
| 5426 | 358 | |
| 359 | s = g_malloc((4 * (len + 1)) / 3 + 1); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
360 | |
| 5426 | 361 | rv = s; |
| 362 | while (len >= 3) { | |
| 363 | tmp = buf[0] << 16 | buf[1] << 8 | buf[2]; | |
| 364 | s[0] = alphabet[tmp >> 18]; | |
| 365 | s[1] = alphabet[(tmp >> 12) & 077]; | |
| 366 | s[2] = alphabet[(tmp >> 6) & 077]; | |
| 367 | s[3] = alphabet[tmp & 077]; | |
| 368 | len -= 3; | |
| 369 | buf += 3; | |
| 370 | s += 4; | |
| 1 | 371 | } |
| 1238 | 372 | |
| 5426 | 373 | /* RFC 1521 enumerates these three possibilities... */ |
| 374 | switch(len) { | |
| 375 | case 2: | |
| 376 | tmp = buf[0] << 16 | buf[1] << 8; | |
| 377 | s[0] = alphabet[(tmp >> 18) & 077]; | |
| 378 | s[1] = alphabet[(tmp >> 12) & 077]; | |
| 379 | s[2] = alphabet[(tmp >> 6) & 077]; | |
| 380 | s[3] = '='; | |
| 381 | s[4] = '\0'; | |
| 382 | break; | |
| 383 | case 1: | |
| 384 | tmp = buf[0] << 16; | |
| 385 | s[0] = alphabet[(tmp >> 18) & 077]; | |
| 386 | s[1] = alphabet[(tmp >> 12) & 077]; | |
| 387 | s[2] = s[3] = '='; | |
| 388 | s[4] = '\0'; | |
| 389 | break; | |
| 390 | case 0: | |
| 391 | s[0] = '\0'; | |
| 392 | break; | |
| 1 | 393 | } |
| 5426 | 394 | |
| 395 | return rv; | |
| 1 | 396 | } |
| 397 | ||
| 398 | ||
|
1920
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
399 | void frombase64(const char *text, char **data, int *size) |
| 1 | 400 | { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
401 | char *out = NULL; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
402 | char tmp = 0; |
|
1920
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
403 | const char *c; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
404 | gint32 tmp2 = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
405 | int len = 0, n = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
406 | |
|
1920
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
407 | if (!text || !data) |
|
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
408 | return; |
|
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
409 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
410 | c = text; |
| 1 | 411 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
412 | while (*c) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
413 | if (*c >= 'A' && *c <= 'Z') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
414 | tmp = *c - 'A'; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
415 | } else if (*c >= 'a' && *c <= 'z') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
416 | tmp = 26 + (*c - 'a'); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
417 | } else if (*c >= '0' && *c <= 57) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
418 | tmp = 52 + (*c - '0'); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
419 | } else if (*c == '+') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
420 | tmp = 62; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
421 | } else if (*c == '/') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
422 | tmp = 63; |
| 5289 | 423 | } else if (*c == '\r' || *c == '\n') { |
| 424 | c++; | |
| 425 | continue; | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
426 | } else if (*c == '=') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
427 | if (n == 3) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
428 | out = g_realloc(out, len + 2); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
429 | out[len] = (char)(tmp2 >> 10) & 0xff; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
430 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
431 | out[len] = (char)(tmp2 >> 2) & 0xff; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
432 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
433 | } else if (n == 2) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
434 | out = g_realloc(out, len + 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
435 | out[len] = (char)(tmp2 >> 4) & 0xff; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
436 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
437 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
438 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
439 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
440 | tmp2 = ((tmp2 << 6) | (tmp & 0xff)); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
441 | n++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
442 | if (n == 4) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
443 | out = g_realloc(out, len + 3); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
444 | out[len] = (char)((tmp2 >> 16) & 0xff); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
445 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
446 | out[len] = (char)((tmp2 >> 8) & 0xff); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
447 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
448 | out[len] = (char)(tmp2 & 0xff); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
449 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
450 | tmp2 = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
451 | n = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
452 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
453 | c++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
454 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
455 | |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
456 | out = g_realloc(out, len + 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
457 | out[len] = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
458 | |
|
1920
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
459 | *data = out; |
|
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
460 | if (size) |
|
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
461 | *size = len; |
| 1 | 462 | } |
| 463 | ||
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
464 | /* |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
465 | * Converts raw data to a pretty, null-terminated base16 string. |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
466 | */ |
| 5451 | 467 | unsigned char *tobase16(const unsigned char *data, int length) |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
468 | { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
469 | int i; |
| 5450 | 470 | unsigned char *ascii = NULL; |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
471 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
472 | if (!data || !length) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
473 | return NULL; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
474 | |
| 5450 | 475 | ascii = malloc(length*2 + 1); |
|
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 | for (i=0; i<length; i++) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
478 | snprintf(&ascii[i*2], 3, "%02hhx", data[i]); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
479 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
480 | return ascii; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
481 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
482 | |
|
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 | * Converts a null-terminated string of hexidecimal to raw data. |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
485 | */ |
|
5497
da3c08f3af25
[gaim-migrate @ 5893]
Mark Doliner <markdoliner@pidgin.im>
parents:
5451
diff
changeset
|
486 | int frombase16(const char *ascii, unsigned char **raw) |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
487 | { |
|
5078
b1c4f9c928cb
[gaim-migrate @ 5431]
Mark Doliner <markdoliner@pidgin.im>
parents:
5024
diff
changeset
|
488 | int len, i, accumulator=0; |
|
5497
da3c08f3af25
[gaim-migrate @ 5893]
Mark Doliner <markdoliner@pidgin.im>
parents:
5451
diff
changeset
|
489 | unsigned char *data; |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
490 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
491 | if (!ascii || !(len = strlen(ascii)) || (len % 2)) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
492 | return 0; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
493 | |
|
5497
da3c08f3af25
[gaim-migrate @ 5893]
Mark Doliner <markdoliner@pidgin.im>
parents:
5451
diff
changeset
|
494 | data = malloc(len/2); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
495 | for (i=0; i<len; i++) { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
496 | if (!(i % 2)) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
497 | accumulator = 0; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
498 | else |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
499 | accumulator = accumulator << 4; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
500 | if (isdigit(ascii[i])) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
501 | accumulator |= ascii[i]-48; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
502 | else switch(ascii[i]) { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
503 | case 'a': case 'A': accumulator|=10; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
504 | case 'b': case 'B': accumulator|=11; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
505 | case 'c': case 'C': accumulator|=12; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
506 | case 'd': case 'D': accumulator|=13; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
507 | case 'e': case 'E': accumulator|=14; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
508 | case 'f': case 'F': accumulator|=15; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
509 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
510 | if (i % 2) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
511 | data[(i-1)/2] = accumulator; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
512 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
513 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
514 | *raw = data; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
515 | return len/2; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
516 | } |
| 1 | 517 | |
| 518 | char *normalize(const char *s) | |
| 519 | { | |
| 520 | static char buf[BUF_LEN]; | |
| 4793 | 521 | char *tmp; |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
522 | int i, j; |
| 1 | 523 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
524 | g_return_val_if_fail((s != NULL), NULL); |
| 26 | 525 | |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
526 | strncpy(buf, s, BUF_LEN); |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
527 | for (i=0, j=0; buf[j]; i++, j++) { |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
528 | while (buf[j] == ' ') |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
529 | j++; |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
530 | buf[i] = buf[j]; |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
531 | } |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
532 | buf[i] = '\0'; |
| 4793 | 533 | |
| 534 | tmp = g_utf8_strdown(buf, -1); | |
| 4899 | 535 | g_snprintf(buf, sizeof(buf), "%s", tmp); |
| 4793 | 536 | g_free(tmp); |
| 5247 | 537 | tmp = g_utf8_normalize(buf, -1, G_NORMALIZE_DEFAULT); |
| 538 | g_snprintf(buf, sizeof(buf), "%s", tmp); | |
| 539 | g_free(tmp); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
540 | |
| 1 | 541 | return buf; |
| 542 | } | |
| 543 | ||
| 544 | char *date() | |
| 545 | { | |
| 546 | static char date[80]; | |
| 547 | time_t tme; | |
| 548 | time(&tme); | |
| 549 | strftime(date, sizeof(date), "%H:%M:%S", localtime(&tme)); | |
| 550 | return date; | |
| 551 | } | |
| 552 | ||
|
3806
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
553 | void clean_pid(void) |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
554 | { |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
555 | #ifndef _WIN32 |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
556 | int status; |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
557 | pid_t pid; |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
558 | |
| 3890 | 559 | do { |
| 560 | pid = waitpid(-1, &status, WNOHANG); | |
| 3891 | 561 | } while (pid != 0 && pid != (pid_t)-1); |
| 3890 | 562 | if(pid == (pid_t)-1 && errno != ECHILD) { |
|
3806
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
563 | char errmsg[BUFSIZ]; |
|
5435
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5426
diff
changeset
|
564 | snprintf(errmsg, BUFSIZ, "Warning: waitpid() returned %d", pid); |
|
3806
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
565 | perror(errmsg); |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
566 | } |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
567 | #endif |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
568 | } |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
569 | |
| 4491 | 570 | struct gaim_account *gaim_account_find(const char *name, int protocol) |
| 1 | 571 | { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
572 | char *who = g_strdup(normalize(name)); |
| 4491 | 573 | GSList *accts = gaim_accounts; |
| 574 | struct gaim_account *account; | |
| 1 | 575 | |
| 4491 | 576 | while (accts) { |
| 577 | account = (struct gaim_account *)accts->data; | |
| 578 | if (!strcmp(normalize(account->username), who)) { | |
|
1030
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
579 | if (protocol != -1) { |
| 4491 | 580 | if (account->protocol == protocol) { |
|
1030
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
581 | g_free(who); |
| 4491 | 582 | return account; |
|
1030
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
583 | } |
|
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
584 | } else { |
|
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
585 | g_free(who); |
| 4491 | 586 | return account; |
|
1030
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
587 | } |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
588 | |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
589 | } |
| 4491 | 590 | accts = accts->next; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
591 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
592 | g_free(who); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
593 | return NULL; |
| 1 | 594 | } |
| 180 | 595 | |
| 206 | 596 | |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
597 | /* 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
|
598 | or time */ |
|
4890
d87a9b5bbe57
[gaim-migrate @ 5220]
Christian Hammond <chipx86@chipx86.com>
parents:
4888
diff
changeset
|
599 | char *away_subs(const char *msg, const char *name) |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
600 | { |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
601 | char *c; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
602 | static char cpy[BUF_LONG]; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
603 | int cnt = 0; |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
604 | time_t t = time(0); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
605 | struct tm *tme = localtime(&t); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
606 | char tmp[20]; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
607 | |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
608 | cpy[0] = '\0'; |
| 4921 | 609 | c = (char *)msg; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
610 | while (*c) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
611 | switch (*c) { |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
612 | case '%': |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
613 | if (*(c + 1)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
614 | switch (*(c + 1)) { |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
615 | case 'n': |
| 1976 | 616 | /* append name */ |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
617 | strcpy(cpy + cnt, name); |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
618 | cnt += strlen(name); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
619 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
620 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
621 | case 'd': |
| 1976 | 622 | /* append date */ |
|
2161
aaa15bb4d65e
[gaim-migrate @ 2171]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2155
diff
changeset
|
623 | strftime(tmp, 20, "%m/%d/%Y", tme); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
624 | strcpy(cpy + cnt, tmp); |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
625 | cnt += strlen(tmp); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
626 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
627 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
628 | case 't': |
| 1976 | 629 | /* append time */ |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
630 | strftime(tmp, 20, "%r", tme); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
631 | strcpy(cpy + cnt, tmp); |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
632 | cnt += strlen(tmp); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
633 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
634 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
635 | default: |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
636 | cpy[cnt++] = *c; |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
637 | } |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
638 | } |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
639 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
640 | default: |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
641 | cpy[cnt++] = *c; |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
642 | } |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
643 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
644 | } |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
645 | cpy[cnt] = '\0'; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
646 | return (cpy); |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
647 | } |
|
603
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
648 | |
|
4890
d87a9b5bbe57
[gaim-migrate @ 5220]
Christian Hammond <chipx86@chipx86.com>
parents:
4888
diff
changeset
|
649 | char *stylize(const gchar *text, int length) |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
650 | { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
651 | gchar *buf; |
|
2016
6ff4dc6efef3
[gaim-migrate @ 2026]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1985
diff
changeset
|
652 | char *tmp = g_malloc(length); |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
653 | |
|
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
654 | buf = g_malloc(length); |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
655 | g_snprintf(buf, length, "%s", text); |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
656 | |
|
831
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
657 | if (font_options & OPT_FONT_BOLD) { |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
658 | g_snprintf(tmp, length, "<B>%s</B>", buf); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
659 | strcpy(buf, tmp); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
660 | } |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
661 | |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
662 | if (font_options & OPT_FONT_ITALIC) { |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
663 | g_snprintf(tmp, length, "<I>%s</I>", buf); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
664 | strcpy(buf, tmp); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
665 | } |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
666 | |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
667 | if (font_options & OPT_FONT_UNDERLINE) { |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
668 | g_snprintf(tmp, length, "<U>%s</U>", buf); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
669 | strcpy(buf, tmp); |
|
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 | |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
672 | if (font_options & OPT_FONT_STRIKE) { |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
673 | g_snprintf(tmp, length, "<S>%s</S>", buf); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
674 | strcpy(buf, tmp); |
|
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 | |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
677 | if (font_options & OPT_FONT_FACE) { |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
678 | g_snprintf(tmp, length, "<FONT FACE=\"%s\">%s</FONT>", fontface, buf); |
|
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
679 | strcpy(buf, tmp); |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
680 | } |
|
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
681 | |
|
1441
71e46d36113b
[gaim-migrate @ 1451]
Decklin Foster <decklin@red-bean.com>
parents:
1376
diff
changeset
|
682 | if (font_options & OPT_FONT_SIZE) { |
|
71e46d36113b
[gaim-migrate @ 1451]
Decklin Foster <decklin@red-bean.com>
parents:
1376
diff
changeset
|
683 | 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
|
684 | strcpy(buf, tmp); |
|
71e46d36113b
[gaim-migrate @ 1451]
Decklin Foster <decklin@red-bean.com>
parents:
1376
diff
changeset
|
685 | } |
|
71e46d36113b
[gaim-migrate @ 1451]
Decklin Foster <decklin@red-bean.com>
parents:
1376
diff
changeset
|
686 | |
|
831
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
687 | if (font_options & OPT_FONT_FGCOL) { |
|
4171
54c1da3cb9c3
[gaim-migrate @ 4400]
Alex Converse <alex.converse@gmail.com>
parents:
4162
diff
changeset
|
688 | 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
|
689 | fgcolor.green/256, fgcolor.blue/256, buf); |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
690 | strcpy(buf, tmp); |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
691 | } |
|
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
692 | |
|
831
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
693 | if (font_options & OPT_FONT_BGCOL) { |
|
4171
54c1da3cb9c3
[gaim-migrate @ 4400]
Alex Converse <alex.converse@gmail.com>
parents:
4162
diff
changeset
|
694 | 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
|
695 | bgcolor.green/256, bgcolor.blue/256, buf); |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
696 | strcpy(buf, tmp); |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
697 | } |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
698 | |
|
2016
6ff4dc6efef3
[gaim-migrate @ 2026]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1985
diff
changeset
|
699 | g_free(tmp); |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
700 | return buf; |
|
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
701 | } |
| 915 | 702 | |
|
4890
d87a9b5bbe57
[gaim-migrate @ 5220]
Christian Hammond <chipx86@chipx86.com>
parents:
4888
diff
changeset
|
703 | void show_usage(int mode, const char *name) |
| 1009 | 704 | { |
| 705 | switch (mode) { | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
706 | case 0: /* full help text */ |
|
5302
48db3c9dc259
[gaim-migrate @ 5674]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
5289
diff
changeset
|
707 | printf(_("Gaim %s\n" |
|
3474
83f382019594
[gaim-migrate @ 3525]
Robert McQueen <robot101@debian.org>
parents:
3466
diff
changeset
|
708 | "Usage: %s [OPTION]...\n\n" |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
709 | " -a, --acct display account editor window\n" |
| 1254 | 710 | " -w, --away[=MESG] make away on signon (optional argument MESG specifies\n" |
| 711 | " name of away message to use)\n" | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
712 | " -l, --login[=NAME] automatically login (optional argument NAME specifies\n" |
|
3726
73f30897c81c
[gaim-migrate @ 3862]
Robert McQueen <robot101@debian.org>
parents:
3699
diff
changeset
|
713 | " account(s) to use, seperated by commas)\n" |
|
3530
505094bab9bb
[gaim-migrate @ 3603]
John Silvestri <john.silvestri@gmail.com>
parents:
3479
diff
changeset
|
714 | " -n, --loginwin don't automatically login; show login window\n" |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
715 | " -u, --user=NAME use account NAME\n" |
| 1560 | 716 | " -f, --file=FILE use FILE as config\n" |
|
2823
ff84f755cfb3
[gaim-migrate @ 2836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2662
diff
changeset
|
717 | " -d, --debug print debugging messages to stdout\n" |
|
3474
83f382019594
[gaim-migrate @ 3525]
Robert McQueen <robot101@debian.org>
parents:
3466
diff
changeset
|
718 | " -v, --version display the current version and exit\n" |
|
5302
48db3c9dc259
[gaim-migrate @ 5674]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
5289
diff
changeset
|
719 | " -h, --help display this help and exit\n"), VERSION, name); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
720 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
721 | case 1: /* short message */ |
|
5302
48db3c9dc259
[gaim-migrate @ 5674]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
5289
diff
changeset
|
722 | 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
|
723 | break; |
| 1009 | 724 | } |
| 725 | } | |
| 726 | ||
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
727 | GSList *message_split(char *message, int limit) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
728 | { |
|
1100
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
729 | static GSList *ret = NULL; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
730 | int lastgood = 0, curgood = 0, curpos = 0, len = strlen(message); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
731 | gboolean intag = FALSE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
732 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
733 | if (ret) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
734 | GSList *tmp = ret; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
735 | while (tmp) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
736 | g_free(tmp->data); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
737 | tmp = g_slist_remove(tmp, tmp->data); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
738 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
739 | ret = NULL; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
740 | } |
|
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 | while (TRUE) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
743 | if (lastgood >= len) |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
744 | return ret; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
745 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
746 | if (len - lastgood < limit) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
747 | ret = g_slist_append(ret, g_strdup(&message[lastgood])); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
748 | return ret; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
749 | } |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
750 | |
|
1100
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
751 | curgood = curpos = 0; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
752 | intag = FALSE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
753 | while (curpos <= limit) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
754 | if (isspace(message[curpos + lastgood]) && !intag) |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
755 | curgood = curpos; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
756 | if (message[curpos + lastgood] == '<') |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
757 | intag = TRUE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
758 | if (message[curpos + lastgood] == '>') |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
759 | intag = FALSE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
760 | curpos++; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
761 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
762 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
763 | if (curgood) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
764 | ret = g_slist_append(ret, g_strndup(&message[lastgood], curgood)); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
765 | if (isspace(message[curgood + lastgood])) |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
766 | lastgood += curgood + 1; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
767 | else |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
768 | lastgood += curgood; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
769 | } else { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
770 | /* whoops, guess we have to fudge it here */ |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
771 | ret = g_slist_append(ret, g_strndup(&message[lastgood], limit)); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
772 | lastgood += limit; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
773 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
774 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
775 | } |
|
1191
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
776 | |
| 3867 | 777 | const gchar *gaim_home_dir() |
| 3630 | 778 | { |
| 779 | if(g_get_home_dir()) | |
| 780 | return g_get_home_dir(); | |
| 781 | else | |
| 782 | #ifndef _WIN32 | |
| 783 | return NULL; | |
| 784 | #else | |
| 785 | /* Win9x and WinME don't have a home dir */ | |
| 786 | return "C:"; | |
| 787 | #endif | |
| 788 | ||
| 789 | } | |
| 790 | ||
| 1238 | 791 | /* returns a string of the form ~/.gaim, where ~ is replaced by the user's home |
| 3630 | 792 | * dir. Note that there is no trailing slash after .gaim. */ |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
793 | gchar *gaim_user_dir() |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
794 | { |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
795 | const gchar *hd = gaim_home_dir(); |
|
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
796 | if(hd) { |
|
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
797 | strcpy( (char*)&home_dir, hd ); |
| 3630 | 798 | strcat( (char*)&home_dir, G_DIR_SEPARATOR_S ".gaim" ); |
| 799 | return (gchar*)&home_dir; | |
| 800 | } | |
| 801 | else { | |
| 802 | return NULL; | |
| 803 | } | |
| 1238 | 804 | } |
| 805 | ||
|
1292
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
806 | /* |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
807 | * 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
|
808 | * goal: to remove those annoying <BR> tags. :) |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
809 | * 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
|
810 | 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
|
811 | { |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
812 | gchar *ptr; |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
813 | g_snprintf(dest, destsize, "%s", src); |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
814 | |
|
1815
e2b090284b19
[gaim-migrate @ 1825]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1805
diff
changeset
|
815 | while ((ptr = strstr(dest, "<BR>")) != NULL) { |
|
1292
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
816 | /* replace <BR> with a newline. */ |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
817 | *ptr = '\n'; |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
818 | memmove(ptr + 1, ptr + 4, strlen(ptr + 4) + 1); |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
819 | } |
|
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 | |
|
1191
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
822 | 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
|
823 | { |
|
1202
5f470d8479af
[gaim-migrate @ 1212]
Decklin Foster <decklin@red-bean.com>
parents:
1197
diff
changeset
|
824 | gchar *end = dest + destsize; |
|
1191
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
825 | |
| 1293 | 826 | while (dest < end) { |
| 827 | if (*src == '\n' && dest < end - 5) { | |
|
1202
5f470d8479af
[gaim-migrate @ 1212]
Decklin Foster <decklin@red-bean.com>
parents:
1197
diff
changeset
|
828 | strcpy(dest, "<BR>"); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
829 | src++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
830 | dest += 4; |
| 1293 | 831 | } else { |
| 832 | *dest++ = *src; | |
|
2372
c24942700dfd
[gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2371
diff
changeset
|
833 | if (*src == '\0') |
|
c24942700dfd
[gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2371
diff
changeset
|
834 | return; |
|
c24942700dfd
[gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2371
diff
changeset
|
835 | else |
|
c24942700dfd
[gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2371
diff
changeset
|
836 | src++; |
| 1293 | 837 | } |
|
1191
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
838 | } |
|
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
839 | } |
| 1254 | 840 | |
| 841 | ||
| 2956 | 842 | /* |
| 843 | * Like strncpy_withhtml (above), but malloc()'s the necessary space | |
| 844 | * | |
| 845 | * The caller is responsible for freeing the space pointed to by the | |
| 846 | * return value. | |
| 847 | */ | |
| 848 | ||
| 849 | gchar *strdup_withhtml(const gchar *src) | |
| 850 | { | |
| 3279 | 851 | gchar *sp, *dest; |
| 2956 | 852 | gulong destsize; |
| 853 | ||
| 4771 | 854 | if(!src) |
| 855 | return NULL; | |
| 856 | ||
| 2956 | 857 | /* |
| 858 | * All we need do is multiply the number of newlines by 3 (the | |
| 859 | * additional length of "<BR>" over "\n"), account for the | |
| 860 | * terminator, malloc the space and call strncpy_withhtml. | |
| 861 | */ | |
| 3279 | 862 | for(destsize = 0, sp = (gchar *)src; (sp = strchr(sp, '\n')) != NULL; ++sp, ++destsize) |
| 2956 | 863 | ; |
| 864 | destsize *= 3; | |
| 865 | destsize += strlen(src) + 1; | |
| 866 | dest = g_malloc(destsize); | |
| 867 | strncpy_withhtml(dest, src, destsize); | |
| 868 | ||
| 869 | return(dest); | |
| 870 | } | |
| 871 | ||
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
872 | void strip_linefeed(gchar *text) |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
873 | { |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
874 | int i, j; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
875 | gchar *text2 = g_malloc(strlen(text) + 1); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
876 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
877 | for (i = 0, j = 0; text[i]; i++) |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
878 | if (text[i] != '\r') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
879 | text2[j++] = text[i]; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
880 | text2[j] = '\0'; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
881 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
882 | strcpy(text, text2); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
883 | g_free(text2); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
884 | } |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
885 | |
| 5136 | 886 | char *add_cr(const char *text) |
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
887 | { |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
888 | char *ret = NULL; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
889 | int count = 0, i, j; |
|
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 | if (text[0] == '\n') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
892 | count++; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
893 | for (i = 1; i < strlen(text); i++) |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
894 | if (text[i] == '\n' && text[i - 1] != '\r') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
895 | count++; |
|
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 | if (count == 0) |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
898 | return g_strdup(text); |
|
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 | ret = g_malloc0(strlen(text) + count + 1); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
901 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
902 | i = 0; j = 0; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
903 | if (text[i] == '\n') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
904 | ret[j++] = '\r'; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
905 | ret[j++] = text[i++]; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
906 | for (; i < strlen(text); i++) { |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
907 | if (text[i] == '\n' && text[i - 1] != '\r') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
908 | ret[j++] = '\r'; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
909 | ret[j++] = text[i]; |
|
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 | |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
912 | gaim_debug(GAIM_DEBUG_INFO, "add_cr", "got: %s, leaving with %s\n", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
913 | text, ret); |
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
914 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
915 | return ret; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
916 | } |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
917 | |
|
1805
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
918 | 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
|
919 | { |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
920 | struct tm tm; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
921 | |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
922 | tm.tm_year = year - 1900; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
923 | tm.tm_mon = month - 1; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
924 | tm.tm_mday = day; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
925 | tm.tm_hour = hour; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
926 | tm.tm_min = min; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
927 | tm.tm_sec = sec >= 0 ? sec : time(NULL) % 60; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
928 | return mktime(&tm); |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
929 | } |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
930 | |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
931 | /* |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
932 | * 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
|
933 | * 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
|
934 | * the space for the filepath. |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
935 | * |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
936 | * 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
|
937 | * 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
|
938 | * |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
939 | * 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
|
940 | */ |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
941 | static const char *gaim_mkstemp_templ = {"gaimXXXXXX"}; |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
942 | |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
943 | FILE *gaim_mkstemp(gchar **fpath) |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
944 | { |
| 3466 | 945 | const gchar *tmpdir; |
| 3630 | 946 | #ifndef _WIN32 |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
947 | int fd; |
| 3630 | 948 | #endif |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
949 | FILE *fp = NULL; |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
950 | |
| 3630 | 951 | if((tmpdir = (gchar*)g_get_tmp_dir()) != NULL) { |
| 952 | if((*fpath = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", tmpdir, gaim_mkstemp_templ)) != NULL) { | |
| 953 | #ifdef _WIN32 | |
| 954 | char* result = _mktemp( *fpath ); | |
| 955 | if( result == NULL ) | |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
956 | gaim_debug(GAIM_DEBUG_ERROR, "gaim_mkstemp", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
957 | "Problem creating the template\n"); |
| 3630 | 958 | else |
| 959 | { | |
| 960 | if( (fp = fopen( result, "w+" )) == NULL ) { | |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
961 | gaim_debug(GAIM_DEBUG_ERROR, "gaim_mkstemp", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
962 | "Couldn't fopen() %s\n", result); |
| 3630 | 963 | } |
| 964 | } | |
| 965 | #else | |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
966 | if((fd = mkstemp(*fpath)) == -1) { |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
967 | gaim_debug(GAIM_DEBUG_ERROR, "gaim_mkstemp", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
968 | "Couldn't make \"%s\", error: %d\n", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
969 | *fpath, errno); |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
970 | } else { |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
971 | if((fp = fdopen(fd, "r+")) == NULL) { |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
972 | close(fd); |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
973 | gaim_debug(GAIM_DEBUG_ERROR, "gaim_mkstemp", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
974 | "Couldn't fdopen(), error: %d\n", errno); |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
975 | } |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
976 | } |
| 3630 | 977 | #endif |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
978 | if(!fp) { |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
979 | g_free(*fpath); |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
980 | *fpath = NULL; |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
981 | } |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
982 | } |
|
3233
c735f7dccfab
[gaim-migrate @ 3250]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3232
diff
changeset
|
983 | } else { |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
984 | gaim_debug(GAIM_DEBUG_ERROR, "gaim_mkstemp", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
985 | "g_get_tmp_dir() failed!"); |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
986 | } |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
987 | |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
988 | return fp; |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
989 | } |
| 3478 | 990 | |
| 991 | /* AIM URI's ARE FUN :-D */ | |
| 992 | const char *handle_uri(char *uri) { | |
| 993 | GString *str; | |
| 994 | GSList *conn = connections; | |
| 3867 | 995 | struct gaim_connection *gc = NULL; |
| 3478 | 996 | |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
997 | gaim_debug(GAIM_DEBUG_INFO, "handle_uri", "Handling URI: %s\n", uri); |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
998 | |
| 3478 | 999 | /* Well, we'd better check to make sure we have at least one |
| 1000 | AIM account connected. */ | |
| 3867 | 1001 | while (conn) { |
| 1002 | gc = conn->data; | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5176
diff
changeset
|
1003 | if (gc->protocol == GAIM_PROTO_OSCAR && isalpha(gc->username[0])) { |
| 3478 | 1004 | break; |
| 1005 | } | |
| 1006 | conn = conn->next; | |
| 1007 | } | |
| 1008 | ||
| 1009 | if (gc == NULL) | |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
1010 | return _("Not connected to AIM"); |
| 3478 | 1011 | |
| 3479 | 1012 | /* aim:goim?screenname=screenname&message=message */ |
| 4793 | 1013 | if (!g_ascii_strncasecmp(uri, "aim:goim?", strlen("aim:goim?"))) { |
| 3478 | 1014 | char *who, *what; |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1015 | struct gaim_conversation *c; |
| 3479 | 1016 | uri = uri + strlen("aim:goim?"); |
| 3478 | 1017 | |
| 1018 | if (!(who = strstr(uri, "screenname="))) { | |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
1019 | return _("No screenname given."); |
| 3478 | 1020 | } |
| 1021 | /* spaces are encoded as +'s */ | |
| 1022 | who = who + strlen("screenname="); | |
| 1023 | str = g_string_new(NULL); | |
| 1024 | while (*who && (*who != '&')) { | |
| 1025 | g_string_append_c(str, *who == '+' ? ' ' : *who); | |
| 1026 | who++; | |
| 1027 | } | |
| 1028 | who = g_strdup(str->str); | |
| 1029 | g_string_free(str, TRUE); | |
| 1030 | ||
| 1031 | what = strstr(uri, "message="); | |
| 1032 | if (what) { | |
| 1033 | what = what + strlen("message="); | |
| 1034 | str = g_string_new(NULL); | |
| 4793 | 1035 | while (*what && (*what != '&' || !g_ascii_strncasecmp(what, "&", 5))) { |
| 3478 | 1036 | g_string_append_c(str, *what == '+' ? ' ' : *what); |
| 1037 | what++; | |
| 1038 | } | |
| 1039 | what = g_strdup(str->str); | |
| 1040 | g_string_free(str, TRUE); | |
| 1041 | } | |
| 4491 | 1042 | |
| 1043 | c = gaim_conversation_new(GAIM_CONV_IM, gc->account, who); | |
| 3478 | 1044 | g_free(who); |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1045 | |
| 3478 | 1046 | if (what) { |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1047 | struct gaim_gtk_conversation *gtkconv = GAIM_GTK_CONVERSATION(c); |
|
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1048 | |
|
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4349
diff
changeset
|
1049 | gtk_text_buffer_insert_at_cursor(gtkconv->entry_buffer, what, -1); |
| 3478 | 1050 | g_free(what); |
| 1051 | } | |
| 4793 | 1052 | } else if (!g_ascii_strncasecmp(uri, "aim:addbuddy?", strlen("aim:addbuddy?"))) { |
| 3478 | 1053 | char *who, *group; |
| 3479 | 1054 | uri = uri + strlen("aim:addbuddy?"); |
| 3478 | 1055 | /* spaces are encoded as +'s */ |
| 4491 | 1056 | |
| 3478 | 1057 | if (!(who = strstr(uri, "screenname="))) { |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
1058 | return _("No screenname given."); |
| 3478 | 1059 | } |
| 1060 | who = who + strlen("screenname="); | |
| 1061 | str = g_string_new(NULL); | |
| 1062 | while (*who && (*who != '&')) { | |
| 1063 | g_string_append_c(str, *who == '+' ? ' ' : *who); | |
| 1064 | who++; | |
| 1065 | } | |
| 1066 | who = g_strdup(str->str); | |
| 1067 | g_string_free(str, TRUE); | |
| 1068 | ||
| 1069 | group = strstr(uri, "group="); | |
| 1070 | if (group) { | |
| 1071 | group = group + strlen("group="); | |
| 1072 | str = g_string_new(NULL); | |
| 4793 | 1073 | while (*group && (*group != '&' || !g_ascii_strncasecmp(group, "&", 5))) { |
| 3478 | 1074 | g_string_append_c(str, *group == '+' ? ' ' : *group); |
| 1075 | group++; | |
| 1076 | } | |
| 1077 | group = g_strdup(str->str); | |
| 1078 | g_string_free(str, TRUE); | |
| 1079 | } | |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1080 | |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
1081 | gaim_debug(GAIM_DEBUG_MISC, "handle_uri", "who: %s\n", who); |
| 3478 | 1082 | show_add_buddy(gc, who, group, NULL); |
| 1083 | g_free(who); | |
| 1084 | if (group) | |
| 1085 | g_free(group); | |
| 4793 | 1086 | } else if (!g_ascii_strncasecmp(uri, "aim:gochat?", strlen("aim:gochat?"))) { |
| 3478 | 1087 | char *room; |
| 5234 | 1088 | GHashTable *components; |
| 3478 | 1089 | int exch = 5; |
| 1090 | ||
| 3479 | 1091 | uri = uri + strlen("aim:gochat?"); |
| 3478 | 1092 | /* spaces are encoded as +'s */ |
| 1093 | ||
| 1094 | if (!(room = strstr(uri, "roomname="))) { | |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
1095 | return _("No roomname given."); |
| 3478 | 1096 | } |
| 1097 | room = room + strlen("roomname="); | |
| 1098 | str = g_string_new(NULL); | |
| 1099 | while (*room && (*room != '&')) { | |
| 1100 | g_string_append_c(str, *room == '+' ? ' ' : *room); | |
| 1101 | room++; | |
| 1102 | } | |
| 1103 | room = g_strdup(str->str); | |
| 1104 | g_string_free(str, TRUE); | |
| 5234 | 1105 | components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, |
| 1106 | g_free); | |
| 1107 | g_hash_table_replace(components, g_strdup("room"), room); | |
| 1108 | g_hash_table_replace(components, g_strdup("exchange"), | |
| 1109 | g_strdup_printf("%d", exch)); | |
| 1110 | ||
| 1111 | serv_join_chat(gc, components); | |
| 1112 | g_hash_table_destroy(components); | |
| 3478 | 1113 | } else { |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
1114 | return _("Invalid AIM URI"); |
| 3478 | 1115 | } |
| 1116 | ||
| 1117 | ||
| 1118 | return NULL; | |
| 1119 | } | |
| 3649 | 1120 | |
| 4458 | 1121 | char *gaim_try_conv_to_utf8(const char *str) |
| 1122 | { | |
| 1123 | int converted; | |
| 1124 | char *utf8; | |
| 3698 | 1125 | |
| 4458 | 1126 | if (str == NULL) { |
| 1127 | return NULL; | |
| 1128 | } | |
| 1129 | ||
| 1130 | if (g_utf8_validate(str, -1, NULL)) { | |
| 1131 | return g_strdup(str); | |
| 1132 | } | |
| 3698 | 1133 | |
| 4458 | 1134 | utf8 = g_locale_to_utf8(str, -1, &converted, NULL, NULL); |
| 1135 | if (utf8 && converted == strlen (str)) { | |
| 1136 | return(utf8); | |
| 1137 | } else if (utf8) { | |
| 1138 | g_free(utf8); | |
| 1139 | } | |
| 3698 | 1140 | |
| 4458 | 1141 | utf8 = g_convert(str, -1, "UTF-8", "ISO-8859-15", &converted, NULL, NULL); |
| 1142 | if (utf8 && converted == strlen (str)) { | |
| 1143 | return(utf8); | |
| 1144 | } else if (utf8) { | |
| 1145 | g_free(utf8); | |
| 1146 | } | |
| 3698 | 1147 | |
| 4458 | 1148 | return(NULL); |
| 1149 | } | |
|
4650
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1150 | |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1151 | char *gaim_getip_from_fd(int fd) |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1152 | { |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1153 | struct sockaddr addr; |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1154 | socklen_t namelen = sizeof(addr); |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1155 | |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1156 | if (getsockname(fd, &addr, &namelen)) |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1157 | return NULL; |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1158 | |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1159 | return g_strdup(inet_ntoa(((struct sockaddr_in *)&addr)->sin_addr)); |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
1160 | } |
| 4793 | 1161 | |
| 1162 | gint gaim_utf8_strcasecmp(const gchar *a, const gchar *b) { | |
| 1163 | gchar *a_norm = g_utf8_casefold(a, -1); | |
| 1164 | gchar *b_norm = g_utf8_casefold(b, -1); | |
| 1165 | gint ret = g_utf8_collate(a_norm, b_norm); | |
| 1166 | g_free(a_norm); | |
| 1167 | g_free(b_norm); | |
| 1168 | return ret; | |
| 1169 | } | |
|
5515
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
1170 | |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
1171 | gchar *gaim_strreplace(const gchar *string, const gchar *delimiter, const gchar *replacement) { |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
1172 | gchar **split; |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
1173 | gchar *ret; |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
1174 | |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
1175 | split = g_strsplit(string, delimiter, 0); |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
1176 | ret = g_strjoinv(replacement, split); |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
1177 | g_strfreev(split); |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
1178 | |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
1179 | return ret; |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
1180 | } |