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