Mon, 15 Sep 2003 21:30:37 +0000
[gaim-migrate @ 7393]
Using SHGetFolderPath to determine windows gaim home directory
| 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 | ||
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5826
diff
changeset
|
22 | #include "internal.h" |
| 3630 | 23 | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5826
diff
changeset
|
24 | #include "conversation.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5826
diff
changeset
|
25 | #include "debug.h" |
|
1575
220b4d845309
[gaim-migrate @ 1585]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1560
diff
changeset
|
26 | #include "prpl.h" |
|
5545
a8b1a1262402
[gaim-migrate @ 5946]
Christian Hammond <chipx86@chipx86.com>
parents:
5532
diff
changeset
|
27 | #include "prefs.h" |
| 1 | 28 | |
| 3630 | 29 | static char home_dir[MAXPATHLEN]; |
| 30 | ||
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
31 | char *full_date() |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
32 | { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
33 | char *date; |
| 70 | 34 | time_t tme; |
| 35 | ||
| 36 | time(&tme); | |
| 37 | date = ctime(&tme); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
38 | date[strlen(date) - 1] = '\0'; |
| 70 | 39 | return date; |
| 40 | } | |
| 41 | ||
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
42 | G_GNUC_CONST static gint badchar(char c) |
| 1 | 43 | { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
44 | switch (c) { |
| 970 | 45 | case ' ': |
| 46 | case ',': | |
| 47 | case '(': | |
| 48 | case ')': | |
| 49 | case '\0': | |
|
976
553a33f54fe2
[gaim-migrate @ 986]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
970
diff
changeset
|
50 | case '\n': |
| 970 | 51 | case '<': |
| 52 | case '>': | |
|
1706
fb78a15b2872
[gaim-migrate @ 1716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1622
diff
changeset
|
53 | case '"': |
| 5176 | 54 | case '\'': |
|
413
5b6c63b5ba38
[gaim-migrate @ 423]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
373
diff
changeset
|
55 | return 1; |
| 970 | 56 | default: |
| 57 | return 0; | |
| 58 | } | |
| 1 | 59 | } |
| 60 | ||
| 61 | ||
|
1376
06cf71686faf
[gaim-migrate @ 1386]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1293
diff
changeset
|
62 | gchar *sec_to_text(guint sec) |
| 1 | 63 | { |
| 4834 | 64 | guint daze, hrs, min; |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
65 | char *ret = NULL; |
| 1 | 66 | |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
67 | daze = sec / (60 * 60 * 24); |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
68 | hrs = (sec % (60 * 60 * 24)) / (60 * 60); |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
69 | min = (sec % (60 * 60)) / 60; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
70 | sec = min % 60; |
| 1 | 71 | |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
72 | if (daze) { |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
73 | if (hrs || min) { |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
74 | if (hrs) { |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
75 | if (min) { |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
76 | ret = g_strdup_printf( |
| 4834 | 77 | "%d %s, %d %s, %d %s.", |
| 78 | daze, ngettext("day","days",daze), | |
| 79 | hrs, ngettext("hour","hours",hrs), min, ngettext("minute","minutes",min)); | |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
80 | } else { |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
81 | ret = g_strdup_printf( |
| 4834 | 82 | "%d %s, %d %s.", |
| 83 | daze, ngettext("day","days",daze), hrs, ngettext("hour","hours",hrs)); | |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
84 | } |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
85 | } else { |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
86 | ret = g_strdup_printf( |
| 4834 | 87 | "%d %s, %d %s.", |
| 88 | daze, ngettext("day","days",daze), min, ngettext("minute","minutes",min)); | |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
89 | } |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
90 | } else |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
91 | ret = g_strdup_printf("%d %s.", daze, ngettext("day","days",daze)); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
92 | } else { |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
93 | if (hrs) { |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
94 | if (min) { |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
95 | ret = g_strdup_printf( |
| 4834 | 96 | "%d %s, %d %s.", |
| 97 | hrs, ngettext("hour","hours",hrs), min, ngettext("minute","minutes",min)); | |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
98 | } else { |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
99 | ret = g_strdup_printf("%d %s.", hrs, ngettext("hour","hours",hrs)); |
|
1826
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
100 | } |
|
2353dd376dcf
[gaim-migrate @ 1836]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1815
diff
changeset
|
101 | } else { |
|
5341
91cc5a959efa
[gaim-migrate @ 5717]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
102 | ret = g_strdup_printf("%d %s.", min, ngettext("minute","minutes",min)); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
103 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
104 | } |
| 1 | 105 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
106 | return ret; |
| 1 | 107 | } |
| 108 | ||
| 5136 | 109 | char *linkify_text(const char *text) |
| 1 | 110 | { |
| 5136 | 111 | const char *c, *t, *q = NULL; |
| 112 | char *tmp; | |
|
1622
baf5ef62fb5c
[gaim-migrate @ 1632]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1609
diff
changeset
|
113 | char url_buf[BUF_LEN * 4]; |
| 5136 | 114 | GString *ret = g_string_new(""); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
115 | /* Assumes you have a buffer able to cary at least BUF_LEN * 2 bytes */ |
| 1 | 116 | |
| 5136 | 117 | c = text; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
118 | while (*c) { |
| 5093 | 119 | if(!q && (*c == '\"' || *c == '\'')) { |
| 120 | q = c; | |
| 121 | } else if(q) { | |
| 122 | if(*c == *q) | |
| 123 | q = NULL; | |
| 124 | } else if (!g_ascii_strncasecmp(c, "<A", 2)) { | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
125 | while (1) { |
| 4793 | 126 | if (!g_ascii_strncasecmp(c, "/A>", 3)) { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
127 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
128 | } |
| 5136 | 129 | ret = g_string_append_c(ret, *c); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
130 | c++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
131 | if (!(*c)) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
132 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
133 | } |
| 5136 | 134 | } else if ((*c=='h') && (!g_ascii_strncasecmp(c, "http://", 7) || |
| 135 | (!g_ascii_strncasecmp(c, "https://", 8)))) { | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
136 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
137 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
138 | if (badchar(*t)) { |
| 925 | 139 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
140 | if (*(t) == ',' && (*(t + 1) != ' ')) { |
| 925 | 141 | t++; |
| 142 | continue; | |
| 143 | } | |
| 144 | ||
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
145 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
146 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
147 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
148 | url_buf[t - c] = 0; |
| 5136 | 149 | g_string_append_printf(ret, "<A HREF=\"%s\">%s</A>", |
| 150 | url_buf, url_buf); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
151 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
152 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
153 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
154 | if (!t) |
|
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 | t++; |
| 1 | 157 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
158 | } |
| 4793 | 159 | } else if (!g_ascii_strncasecmp(c, "www.", 4)) { |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
160 | if (c[4] != '.') { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
161 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
162 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
163 | if (badchar(*t)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
164 | if (t - c == 4) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
165 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
166 | } |
| 925 | 167 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
168 | if (*(t) == ',' && (*(t + 1) != ' ')) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
169 | t++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
170 | continue; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
171 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
172 | |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
173 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
174 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
175 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
176 | url_buf[t - c] = 0; |
| 5136 | 177 | g_string_append_printf(ret, |
| 178 | "<A HREF=\"http://%s\">%s</A>", url_buf, | |
| 179 | url_buf); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
180 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
181 | break; |
| 925 | 182 | } |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
183 | if (!t) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
184 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
185 | t++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
186 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
187 | } |
| 4793 | 188 | } else if (!g_ascii_strncasecmp(c, "ftp://", 6)) { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
189 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
190 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
191 | if (badchar(*t)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
192 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
193 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
194 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
195 | url_buf[t - c] = 0; |
| 5136 | 196 | g_string_append_printf(ret, "<A HREF=\"%s\">%s</A>", |
| 197 | url_buf, url_buf); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
198 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
199 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
200 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
201 | if (!t) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
202 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
203 | t++; |
| 1 | 204 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
205 | } |
| 4793 | 206 | } else if (!g_ascii_strncasecmp(c, "ftp.", 4)) { |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
207 | if (c[4] != '.') { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
208 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
209 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
210 | if (badchar(*t)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
211 | if (t - c == 4) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
212 | break; |
|
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 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
215 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
216 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
217 | url_buf[t - c] = 0; |
| 5136 | 218 | g_string_append_printf(ret, |
| 219 | "<A HREF=\"ftp://%s\">%s</A>", url_buf, | |
| 220 | url_buf); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
221 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
222 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
223 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
224 | if (!t) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
225 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
226 | t++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
227 | } |
| 924 | 228 | } |
| 4793 | 229 | } else if (!g_ascii_strncasecmp(c, "mailto:", 7)) { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
230 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
231 | while (1) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
232 | if (badchar(*t)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
233 | if (*(t - 1) == '.') |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
234 | t--; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
235 | strncpy(url_buf, c, t - c); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
236 | url_buf[t - c] = 0; |
| 5136 | 237 | g_string_append_printf(ret, "<A HREF=\"%s\">%s</A>", |
|
2614
713a3ec40c7e
[gaim-migrate @ 2627]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2603
diff
changeset
|
238 | url_buf, url_buf); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
239 | c = t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
240 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
241 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
242 | if (!t) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
243 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
244 | t++; |
| 1 | 245 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
246 | } |
| 5136 | 247 | } else if (c != text && (*c == '@')) { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
248 | char *tmp; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
249 | int flag; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
250 | int len = 0; |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
251 | const char illegal_chars[] = "!@#$%^&*()[]{}/|\\<>\":;\r\n \0"; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
252 | url_buf[0] = 0; |
| 1 | 253 | |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
254 | 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
|
255 | flag = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
256 | else |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
257 | flag = 1; |
| 1 | 258 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
259 | t = c; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
260 | while (flag) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
261 | if (badchar(*t)) { |
| 5136 | 262 | ret = g_string_truncate(ret, ret->len - (len - 1)); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
263 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
264 | } else { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
265 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
266 | tmp = g_malloc(len + 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
267 | tmp[len] = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
268 | tmp[0] = *t; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
269 | strncpy(tmp + 1, url_buf, len - 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
270 | strcpy(url_buf, tmp); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
271 | url_buf[len] = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
272 | g_free(tmp); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
273 | t--; |
| 5136 | 274 | if (t < text) { |
| 275 | ret = g_string_assign(ret, ""); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
276 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
277 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
278 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
279 | } |
| 1 | 280 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
281 | t = c + 1; |
| 1 | 282 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
283 | while (flag) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
284 | if (badchar(*t)) { |
|
3331
524e2b90c255
[gaim-migrate @ 3349]
Christian Hammond <chipx86@chipx86.com>
parents:
3330
diff
changeset
|
285 | char *d; |
|
524e2b90c255
[gaim-migrate @ 3349]
Christian Hammond <chipx86@chipx86.com>
parents:
3330
diff
changeset
|
286 | |
|
524e2b90c255
[gaim-migrate @ 3349]
Christian Hammond <chipx86@chipx86.com>
parents:
3330
diff
changeset
|
287 | for (d = url_buf + strlen(url_buf) - 1; *d == '.'; d--, t--) |
|
524e2b90c255
[gaim-migrate @ 3349]
Christian Hammond <chipx86@chipx86.com>
parents:
3330
diff
changeset
|
288 | *d = '\0'; |
|
3330
fc82ec88ac96
[gaim-migrate @ 3348]
Christian Hammond <chipx86@chipx86.com>
parents:
3279
diff
changeset
|
289 | |
| 5136 | 290 | g_string_append_printf(ret, "<A HREF=\"mailto:%s\">%s</A>", |
| 291 | url_buf, url_buf); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
292 | c = t; |
| 1 | 293 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
294 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
295 | } else { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
296 | strncat(url_buf, t, 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
297 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
298 | url_buf[len] = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
299 | } |
| 1 | 300 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
301 | t++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
302 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
303 | } |
| 1 | 304 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
305 | if (*c == 0) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
306 | break; |
| 1 | 307 | |
| 5136 | 308 | ret = g_string_append_c(ret, *c); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
309 | c++; |
| 1 | 310 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
311 | } |
| 5136 | 312 | tmp = ret->str; |
| 313 | g_string_free(ret, FALSE); | |
| 314 | return tmp; | |
| 1 | 315 | } |
| 316 | ||
| 317 | ||
|
4888
09f16a932490
[gaim-migrate @ 5218]
Christian Hammond <chipx86@chipx86.com>
parents:
4853
diff
changeset
|
318 | static const char alphabet[] = |
|
09f16a932490
[gaim-migrate @ 5218]
Christian Hammond <chipx86@chipx86.com>
parents:
4853
diff
changeset
|
319 | "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" |
|
09f16a932490
[gaim-migrate @ 5218]
Christian Hammond <chipx86@chipx86.com>
parents:
4853
diff
changeset
|
320 | "0123456789+/"; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
321 | |
| 5426 | 322 | /* This was borrowed from the Kame source, and then tweaked to our needs */ |
| 323 | char *tobase64(const unsigned char *buf, size_t len) | |
| 1 | 324 | { |
| 5531 | 325 | char *s = NULL, *rv = NULL; |
| 6087 | 326 | unsigned long tmp; |
| 5426 | 327 | |
| 328 | s = g_malloc((4 * (len + 1)) / 3 + 1); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
329 | |
| 5426 | 330 | rv = s; |
| 331 | while (len >= 3) { | |
| 332 | tmp = buf[0] << 16 | buf[1] << 8 | buf[2]; | |
| 333 | s[0] = alphabet[tmp >> 18]; | |
| 334 | s[1] = alphabet[(tmp >> 12) & 077]; | |
| 335 | s[2] = alphabet[(tmp >> 6) & 077]; | |
| 336 | s[3] = alphabet[tmp & 077]; | |
| 337 | len -= 3; | |
| 338 | buf += 3; | |
| 339 | s += 4; | |
| 1 | 340 | } |
| 1238 | 341 | |
| 5426 | 342 | /* RFC 1521 enumerates these three possibilities... */ |
| 343 | switch(len) { | |
| 344 | case 2: | |
| 345 | tmp = buf[0] << 16 | buf[1] << 8; | |
| 346 | s[0] = alphabet[(tmp >> 18) & 077]; | |
| 347 | s[1] = alphabet[(tmp >> 12) & 077]; | |
| 348 | s[2] = alphabet[(tmp >> 6) & 077]; | |
| 349 | s[3] = '='; | |
| 350 | s[4] = '\0'; | |
| 351 | break; | |
| 352 | case 1: | |
| 353 | tmp = buf[0] << 16; | |
| 354 | s[0] = alphabet[(tmp >> 18) & 077]; | |
| 355 | s[1] = alphabet[(tmp >> 12) & 077]; | |
| 356 | s[2] = s[3] = '='; | |
| 357 | s[4] = '\0'; | |
| 358 | break; | |
| 359 | case 0: | |
| 360 | s[0] = '\0'; | |
| 361 | break; | |
| 1 | 362 | } |
| 5426 | 363 | |
| 364 | return rv; | |
| 1 | 365 | } |
| 366 | ||
| 367 | ||
|
1920
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
368 | void frombase64(const char *text, char **data, int *size) |
| 1 | 369 | { |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
370 | char *out = NULL; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
371 | char tmp = 0; |
|
1920
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
372 | const char *c; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
373 | gint32 tmp2 = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
374 | int len = 0, n = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
375 | |
|
1920
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
376 | if (!text || !data) |
|
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
377 | return; |
|
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
378 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
379 | c = text; |
| 1 | 380 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
381 | while (*c) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
382 | if (*c >= 'A' && *c <= 'Z') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
383 | tmp = *c - 'A'; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
384 | } else if (*c >= 'a' && *c <= 'z') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
385 | tmp = 26 + (*c - 'a'); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
386 | } else if (*c >= '0' && *c <= 57) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
387 | tmp = 52 + (*c - '0'); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
388 | } else if (*c == '+') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
389 | tmp = 62; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
390 | } else if (*c == '/') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
391 | tmp = 63; |
| 5289 | 392 | } else if (*c == '\r' || *c == '\n') { |
| 393 | c++; | |
| 394 | continue; | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
395 | } else if (*c == '=') { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
396 | if (n == 3) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
397 | out = g_realloc(out, len + 2); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
398 | out[len] = (char)(tmp2 >> 10) & 0xff; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
399 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
400 | out[len] = (char)(tmp2 >> 2) & 0xff; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
401 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
402 | } else if (n == 2) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
403 | out = g_realloc(out, len + 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
404 | out[len] = (char)(tmp2 >> 4) & 0xff; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
405 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
406 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
407 | break; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
408 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
409 | tmp2 = ((tmp2 << 6) | (tmp & 0xff)); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
410 | n++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
411 | if (n == 4) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
412 | out = g_realloc(out, len + 3); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
413 | out[len] = (char)((tmp2 >> 16) & 0xff); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
414 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
415 | out[len] = (char)((tmp2 >> 8) & 0xff); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
416 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
417 | out[len] = (char)(tmp2 & 0xff); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
418 | len++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
419 | tmp2 = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
420 | n = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
421 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
422 | c++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
423 | } |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
424 | |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
425 | out = g_realloc(out, len + 1); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
426 | out[len] = 0; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
427 | |
|
1920
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
428 | *data = out; |
|
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
429 | if (size) |
|
8e86151db7dc
[gaim-migrate @ 1930]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1878
diff
changeset
|
430 | *size = len; |
| 1 | 431 | } |
| 432 | ||
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
433 | /* |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
434 | * Converts raw data to a pretty, null-terminated base16 string. |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
435 | */ |
| 5451 | 436 | unsigned char *tobase16(const unsigned char *data, int length) |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
437 | { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
438 | int i; |
| 5450 | 439 | unsigned char *ascii = NULL; |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
440 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
441 | if (!data || !length) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
442 | return NULL; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
443 | |
| 6053 | 444 | ascii = g_malloc(length*2 + 1); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
445 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
446 | for (i=0; i<length; i++) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
447 | snprintf(&ascii[i*2], 3, "%02hhx", data[i]); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
448 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
449 | return ascii; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
450 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
451 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
452 | /* |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
453 | * Converts a null-terminated string of hexidecimal to raw data. |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
454 | */ |
|
5497
da3c08f3af25
[gaim-migrate @ 5893]
Mark Doliner <markdoliner@pidgin.im>
parents:
5451
diff
changeset
|
455 | int frombase16(const char *ascii, unsigned char **raw) |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
456 | { |
|
5078
b1c4f9c928cb
[gaim-migrate @ 5431]
Mark Doliner <markdoliner@pidgin.im>
parents:
5024
diff
changeset
|
457 | int len, i, accumulator=0; |
|
5497
da3c08f3af25
[gaim-migrate @ 5893]
Mark Doliner <markdoliner@pidgin.im>
parents:
5451
diff
changeset
|
458 | unsigned char *data; |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
459 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
460 | if (!ascii || !(len = strlen(ascii)) || (len % 2)) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
461 | return 0; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
462 | |
| 6053 | 463 | data = g_malloc(len/2); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
464 | for (i=0; i<len; i++) { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
465 | if (!(i % 2)) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
466 | accumulator = 0; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
467 | else |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
468 | accumulator = accumulator << 4; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
469 | if (isdigit(ascii[i])) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
470 | accumulator |= ascii[i]-48; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
471 | else switch(ascii[i]) { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
472 | case 'a': case 'A': accumulator|=10; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
473 | case 'b': case 'B': accumulator|=11; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
474 | case 'c': case 'C': accumulator|=12; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
475 | case 'd': case 'D': accumulator|=13; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
476 | case 'e': case 'E': accumulator|=14; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
477 | case 'f': case 'F': accumulator|=15; break; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
478 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
479 | if (i % 2) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
480 | data[(i-1)/2] = accumulator; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
481 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
482 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
483 | *raw = data; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
484 | return len/2; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
485 | } |
| 1 | 486 | |
| 487 | char *normalize(const char *s) | |
| 488 | { | |
| 489 | static char buf[BUF_LEN]; | |
| 4793 | 490 | char *tmp; |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
491 | int i, j; |
| 1 | 492 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
493 | g_return_val_if_fail((s != NULL), NULL); |
| 26 | 494 | |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
495 | strncpy(buf, s, BUF_LEN); |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
496 | for (i=0, j=0; buf[j]; i++, j++) { |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
497 | while (buf[j] == ' ') |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
498 | j++; |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
499 | buf[i] = buf[j]; |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
500 | } |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4184
diff
changeset
|
501 | buf[i] = '\0'; |
| 4793 | 502 | |
| 503 | tmp = g_utf8_strdown(buf, -1); | |
| 4899 | 504 | g_snprintf(buf, sizeof(buf), "%s", tmp); |
| 4793 | 505 | g_free(tmp); |
| 5247 | 506 | tmp = g_utf8_normalize(buf, -1, G_NORMALIZE_DEFAULT); |
| 507 | g_snprintf(buf, sizeof(buf), "%s", tmp); | |
| 508 | g_free(tmp); | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
509 | |
| 1 | 510 | return buf; |
| 511 | } | |
| 512 | ||
| 513 | char *date() | |
| 514 | { | |
| 515 | static char date[80]; | |
| 516 | time_t tme; | |
| 517 | time(&tme); | |
| 518 | strftime(date, sizeof(date), "%H:%M:%S", localtime(&tme)); | |
| 519 | return date; | |
| 520 | } | |
| 521 | ||
|
3806
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
522 | void clean_pid(void) |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
523 | { |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
524 | #ifndef _WIN32 |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
525 | int status; |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
526 | pid_t pid; |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
527 | |
| 3890 | 528 | do { |
| 529 | pid = waitpid(-1, &status, WNOHANG); | |
| 3891 | 530 | } while (pid != 0 && pid != (pid_t)-1); |
| 3890 | 531 | if(pid == (pid_t)-1 && errno != ECHILD) { |
|
3806
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
532 | char errmsg[BUFSIZ]; |
|
5435
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5426
diff
changeset
|
533 | snprintf(errmsg, BUFSIZ, "Warning: waitpid() returned %d", pid); |
|
3806
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
534 | perror(errmsg); |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
535 | } |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
536 | #endif |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
537 | } |
|
ba97f1cada54
[gaim-migrate @ 3949]
Robert McQueen <robot101@debian.org>
parents:
3802
diff
changeset
|
538 | |
| 206 | 539 | |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
540 | /* 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
|
541 | or time */ |
|
4890
d87a9b5bbe57
[gaim-migrate @ 5220]
Christian Hammond <chipx86@chipx86.com>
parents:
4888
diff
changeset
|
542 | char *away_subs(const char *msg, const char *name) |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
543 | { |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
544 | char *c; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
545 | static char cpy[BUF_LONG]; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
546 | int cnt = 0; |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
547 | time_t t = time(0); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
548 | struct tm *tme = localtime(&t); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
549 | char tmp[20]; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
550 | |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
551 | cpy[0] = '\0'; |
| 4921 | 552 | c = (char *)msg; |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
553 | while (*c) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
554 | switch (*c) { |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
555 | case '%': |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
556 | if (*(c + 1)) { |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
557 | switch (*(c + 1)) { |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
558 | case 'n': |
| 1976 | 559 | /* append name */ |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
560 | strcpy(cpy + cnt, name); |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
561 | cnt += strlen(name); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
562 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
563 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
564 | case 'd': |
| 1976 | 565 | /* append date */ |
|
2161
aaa15bb4d65e
[gaim-migrate @ 2171]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2155
diff
changeset
|
566 | strftime(tmp, 20, "%m/%d/%Y", tme); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
567 | strcpy(cpy + cnt, tmp); |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
568 | cnt += strlen(tmp); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
569 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
570 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
571 | case 't': |
| 1976 | 572 | /* append time */ |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
573 | strftime(tmp, 20, "%r", tme); |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
574 | strcpy(cpy + cnt, tmp); |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
575 | cnt += strlen(tmp); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
576 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
577 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
578 | default: |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
579 | cpy[cnt++] = *c; |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
580 | } |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
581 | } |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
582 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
583 | default: |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
584 | cpy[cnt++] = *c; |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
585 | } |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
586 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
587 | } |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
588 | cpy[cnt] = '\0'; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
589 | return (cpy); |
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
590 | } |
|
603
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
591 | |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
592 | GSList *message_split(char *message, int limit) |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
593 | { |
|
1100
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
594 | static GSList *ret = NULL; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
595 | int lastgood = 0, curgood = 0, curpos = 0, len = strlen(message); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
596 | gboolean intag = FALSE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
597 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
598 | if (ret) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
599 | GSList *tmp = ret; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
600 | while (tmp) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
601 | g_free(tmp->data); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
602 | tmp = g_slist_remove(tmp, tmp->data); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
603 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
604 | ret = NULL; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
605 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
606 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
607 | while (TRUE) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
608 | if (lastgood >= len) |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
609 | return ret; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
610 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
611 | if (len - lastgood < limit) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
612 | ret = g_slist_append(ret, g_strdup(&message[lastgood])); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
613 | return ret; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
614 | } |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
615 | |
|
1100
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
616 | curgood = curpos = 0; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
617 | intag = FALSE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
618 | while (curpos <= limit) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
619 | if (isspace(message[curpos + lastgood]) && !intag) |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
620 | curgood = curpos; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
621 | if (message[curpos + lastgood] == '<') |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
622 | intag = TRUE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
623 | if (message[curpos + lastgood] == '>') |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
624 | intag = FALSE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
625 | curpos++; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
626 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
627 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
628 | if (curgood) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
629 | ret = g_slist_append(ret, g_strndup(&message[lastgood], curgood)); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
630 | if (isspace(message[curgood + lastgood])) |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
631 | lastgood += curgood + 1; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
632 | else |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
633 | lastgood += curgood; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
634 | } else { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
635 | /* whoops, guess we have to fudge it here */ |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
636 | ret = g_slist_append(ret, g_strndup(&message[lastgood], limit)); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
637 | lastgood += limit; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
638 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
639 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
640 | } |
|
1191
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
641 | |
| 3867 | 642 | const gchar *gaim_home_dir() |
| 3630 | 643 | { |
|
6848
ca91f08b60df
[gaim-migrate @ 7393]
Herman Bloggs <herman@bluedigits.com>
parents:
6478
diff
changeset
|
644 | #ifndef _WIN32 |
| 3630 | 645 | if(g_get_home_dir()) |
| 646 | return g_get_home_dir(); | |
| 647 | else | |
| 648 | return NULL; | |
| 649 | #else | |
|
6848
ca91f08b60df
[gaim-migrate @ 7393]
Herman Bloggs <herman@bluedigits.com>
parents:
6478
diff
changeset
|
650 | return wgaim_data_dir(); |
| 3630 | 651 | #endif |
| 652 | } | |
| 653 | ||
| 1238 | 654 | /* returns a string of the form ~/.gaim, where ~ is replaced by the user's home |
| 3630 | 655 | * dir. Note that there is no trailing slash after .gaim. */ |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
656 | gchar *gaim_user_dir() |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
657 | { |
|
4160
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
658 | const gchar *hd = gaim_home_dir(); |
|
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
659 | if(hd) { |
|
280892d3f57a
[gaim-migrate @ 4389]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3891
diff
changeset
|
660 | strcpy( (char*)&home_dir, hd ); |
| 3630 | 661 | strcat( (char*)&home_dir, G_DIR_SEPARATOR_S ".gaim" ); |
| 662 | return (gchar*)&home_dir; | |
| 663 | } | |
| 664 | else { | |
| 665 | return NULL; | |
| 666 | } | |
| 1238 | 667 | } |
| 668 | ||
|
1292
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
669 | /* |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
670 | * 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
|
671 | * goal: to remove those annoying <BR> tags. :) |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
672 | * 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
|
673 | 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
|
674 | { |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
675 | gchar *ptr; |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
676 | g_snprintf(dest, destsize, "%s", src); |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
677 | |
|
1815
e2b090284b19
[gaim-migrate @ 1825]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1805
diff
changeset
|
678 | while ((ptr = strstr(dest, "<BR>")) != NULL) { |
|
1292
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
679 | /* replace <BR> with a newline. */ |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
680 | *ptr = '\n'; |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
681 | memmove(ptr + 1, ptr + 4, strlen(ptr + 4) + 1); |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
682 | } |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
683 | } |
|
82820e0a3748
[gaim-migrate @ 1302]
Decklin Foster <decklin@red-bean.com>
parents:
1269
diff
changeset
|
684 | |
|
1191
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
685 | 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
|
686 | { |
|
1202
5f470d8479af
[gaim-migrate @ 1212]
Decklin Foster <decklin@red-bean.com>
parents:
1197
diff
changeset
|
687 | gchar *end = dest + destsize; |
|
1191
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
688 | |
| 1293 | 689 | while (dest < end) { |
| 690 | if (*src == '\n' && dest < end - 5) { | |
|
1202
5f470d8479af
[gaim-migrate @ 1212]
Decklin Foster <decklin@red-bean.com>
parents:
1197
diff
changeset
|
691 | strcpy(dest, "<BR>"); |
|
1252
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
692 | src++; |
|
94fbface2d84
[gaim-migrate @ 1262]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1250
diff
changeset
|
693 | dest += 4; |
| 6397 | 694 | } else if(*src == '\r') { |
| 695 | src++; | |
| 1293 | 696 | } else { |
| 697 | *dest++ = *src; | |
|
2372
c24942700dfd
[gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2371
diff
changeset
|
698 | if (*src == '\0') |
|
c24942700dfd
[gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2371
diff
changeset
|
699 | return; |
|
c24942700dfd
[gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2371
diff
changeset
|
700 | else |
|
c24942700dfd
[gaim-migrate @ 2385]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2371
diff
changeset
|
701 | src++; |
| 1293 | 702 | } |
|
1191
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
703 | } |
|
073d1f197255
[gaim-migrate @ 1201]
Decklin Foster <decklin@red-bean.com>
parents:
1152
diff
changeset
|
704 | } |
| 1254 | 705 | |
| 706 | ||
| 2956 | 707 | /* |
| 708 | * Like strncpy_withhtml (above), but malloc()'s the necessary space | |
| 709 | * | |
| 710 | * The caller is responsible for freeing the space pointed to by the | |
| 711 | * return value. | |
| 712 | */ | |
| 713 | ||
| 714 | gchar *strdup_withhtml(const gchar *src) | |
| 715 | { | |
| 3279 | 716 | gchar *sp, *dest; |
| 2956 | 717 | gulong destsize; |
| 718 | ||
| 4771 | 719 | if(!src) |
| 720 | return NULL; | |
| 721 | ||
| 2956 | 722 | /* |
| 723 | * All we need do is multiply the number of newlines by 3 (the | |
| 724 | * additional length of "<BR>" over "\n"), account for the | |
| 725 | * terminator, malloc the space and call strncpy_withhtml. | |
| 726 | */ | |
| 3279 | 727 | for(destsize = 0, sp = (gchar *)src; (sp = strchr(sp, '\n')) != NULL; ++sp, ++destsize) |
| 2956 | 728 | ; |
| 729 | destsize *= 3; | |
| 730 | destsize += strlen(src) + 1; | |
| 731 | dest = g_malloc(destsize); | |
| 732 | strncpy_withhtml(dest, src, destsize); | |
| 733 | ||
| 734 | return(dest); | |
| 735 | } | |
| 736 | ||
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
737 | void strip_linefeed(gchar *text) |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
738 | { |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
739 | int i, j; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
740 | gchar *text2 = g_malloc(strlen(text) + 1); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
741 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
742 | for (i = 0, j = 0; text[i]; i++) |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
743 | if (text[i] != '\r') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
744 | text2[j++] = text[i]; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
745 | text2[j] = '\0'; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
746 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
747 | strcpy(text, text2); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
748 | g_free(text2); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
749 | } |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
750 | |
| 5136 | 751 | char *add_cr(const char *text) |
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
752 | { |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
753 | char *ret = NULL; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
754 | int count = 0, i, j; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
755 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
756 | if (text[0] == '\n') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
757 | count++; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
758 | for (i = 1; i < strlen(text); i++) |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
759 | if (text[i] == '\n' && text[i - 1] != '\r') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
760 | count++; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
761 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
762 | if (count == 0) |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
763 | return g_strdup(text); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
764 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
765 | ret = g_malloc0(strlen(text) + count + 1); |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
766 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
767 | i = 0; j = 0; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
768 | if (text[i] == '\n') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
769 | ret[j++] = '\r'; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
770 | ret[j++] = text[i++]; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
771 | for (; i < strlen(text); i++) { |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
772 | if (text[i] == '\n' && text[i - 1] != '\r') |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
773 | ret[j++] = '\r'; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
774 | ret[j++] = text[i]; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
775 | } |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
776 | |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
777 | gaim_debug(GAIM_DEBUG_INFO, "add_cr", "got: %s, leaving with %s\n", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
778 | text, ret); |
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
779 | |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
780 | return ret; |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
781 | } |
|
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2596
diff
changeset
|
782 | |
|
1805
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
783 | 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
|
784 | { |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
785 | struct tm tm; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
786 | |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
787 | tm.tm_year = year - 1900; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
788 | tm.tm_mon = month - 1; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
789 | tm.tm_mday = day; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
790 | tm.tm_hour = hour; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
791 | tm.tm_min = min; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
792 | tm.tm_sec = sec >= 0 ? sec : time(NULL) % 60; |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
793 | return mktime(&tm); |
|
c2aeee08d50e
[gaim-migrate @ 1815]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1753
diff
changeset
|
794 | } |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
795 | |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
796 | /* |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
797 | * 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
|
798 | * 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
|
799 | * the space for the filepath. |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
800 | * |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
801 | * 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
|
802 | * 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
|
803 | * |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
804 | * 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
|
805 | */ |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
806 | static const char *gaim_mkstemp_templ = {"gaimXXXXXX"}; |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
807 | |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
808 | FILE *gaim_mkstemp(gchar **fpath) |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
809 | { |
| 3466 | 810 | const gchar *tmpdir; |
| 3630 | 811 | #ifndef _WIN32 |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
812 | int fd; |
| 3630 | 813 | #endif |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
814 | FILE *fp = NULL; |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
815 | |
| 3630 | 816 | if((tmpdir = (gchar*)g_get_tmp_dir()) != NULL) { |
| 817 | if((*fpath = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", tmpdir, gaim_mkstemp_templ)) != NULL) { | |
| 818 | #ifdef _WIN32 | |
| 819 | char* result = _mktemp( *fpath ); | |
| 820 | if( result == NULL ) | |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
821 | gaim_debug(GAIM_DEBUG_ERROR, "gaim_mkstemp", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
822 | "Problem creating the template\n"); |
| 3630 | 823 | else |
| 824 | { | |
| 825 | if( (fp = fopen( result, "w+" )) == NULL ) { | |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
826 | gaim_debug(GAIM_DEBUG_ERROR, "gaim_mkstemp", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
827 | "Couldn't fopen() %s\n", result); |
| 3630 | 828 | } |
| 829 | } | |
| 830 | #else | |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
831 | if((fd = mkstemp(*fpath)) == -1) { |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
832 | gaim_debug(GAIM_DEBUG_ERROR, "gaim_mkstemp", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
833 | "Couldn't make \"%s\", error: %d\n", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
834 | *fpath, errno); |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
835 | } else { |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
836 | if((fp = fdopen(fd, "r+")) == NULL) { |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
837 | close(fd); |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
838 | gaim_debug(GAIM_DEBUG_ERROR, "gaim_mkstemp", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
839 | "Couldn't fdopen(), error: %d\n", errno); |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
840 | } |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
841 | } |
| 3630 | 842 | #endif |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
843 | if(!fp) { |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
844 | g_free(*fpath); |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
845 | *fpath = NULL; |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
846 | } |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
847 | } |
|
3233
c735f7dccfab
[gaim-migrate @ 3250]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3232
diff
changeset
|
848 | } else { |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
849 | gaim_debug(GAIM_DEBUG_ERROR, "gaim_mkstemp", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
850 | "g_get_tmp_dir() failed!"); |
|
3230
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
851 | } |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
852 | |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
853 | return fp; |
|
6d0e07333504
[gaim-migrate @ 3247]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3153
diff
changeset
|
854 | } |
| 3478 | 855 | |
| 4458 | 856 | char *gaim_try_conv_to_utf8(const char *str) |
| 857 | { | |
|
6478
2c3fe7c8659b
[gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents:
6439
diff
changeset
|
858 | gsize converted; |
| 4458 | 859 | char *utf8; |
| 3698 | 860 | |
| 4458 | 861 | if (str == NULL) { |
| 862 | return NULL; | |
| 863 | } | |
| 864 | ||
| 865 | if (g_utf8_validate(str, -1, NULL)) { | |
| 866 | return g_strdup(str); | |
| 867 | } | |
| 3698 | 868 | |
| 4458 | 869 | utf8 = g_locale_to_utf8(str, -1, &converted, NULL, NULL); |
| 6439 | 870 | if (utf8) |
| 4458 | 871 | return(utf8); |
| 6439 | 872 | |
| 873 | g_free(utf8); | |
| 874 | ||
| 4458 | 875 | utf8 = g_convert(str, -1, "UTF-8", "ISO-8859-15", &converted, NULL, NULL); |
| 876 | if (utf8 && converted == strlen (str)) { | |
| 877 | return(utf8); | |
| 878 | } else if (utf8) { | |
| 879 | g_free(utf8); | |
| 880 | } | |
| 3698 | 881 | |
| 4458 | 882 | return(NULL); |
| 883 | } | |
|
4650
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
884 | |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
885 | char *gaim_getip_from_fd(int fd) |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
886 | { |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
887 | struct sockaddr addr; |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
888 | socklen_t namelen = sizeof(addr); |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
889 | |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
890 | if (getsockname(fd, &addr, &namelen)) |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
891 | return NULL; |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
892 | |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
893 | return g_strdup(inet_ntoa(((struct sockaddr_in *)&addr)->sin_addr)); |
|
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4635
diff
changeset
|
894 | } |
| 4793 | 895 | |
| 896 | gint gaim_utf8_strcasecmp(const gchar *a, const gchar *b) { | |
|
5915
634fcb6e3e66
[gaim-migrate @ 6347]
Herman Bloggs <herman@bluedigits.com>
parents:
5874
diff
changeset
|
897 | gchar *a_norm=NULL; |
|
634fcb6e3e66
[gaim-migrate @ 6347]
Herman Bloggs <herman@bluedigits.com>
parents:
5874
diff
changeset
|
898 | gchar *b_norm=NULL; |
|
634fcb6e3e66
[gaim-migrate @ 6347]
Herman Bloggs <herman@bluedigits.com>
parents:
5874
diff
changeset
|
899 | gint ret=-1; |
|
634fcb6e3e66
[gaim-migrate @ 6347]
Herman Bloggs <herman@bluedigits.com>
parents:
5874
diff
changeset
|
900 | |
|
634fcb6e3e66
[gaim-migrate @ 6347]
Herman Bloggs <herman@bluedigits.com>
parents:
5874
diff
changeset
|
901 | if(!g_utf8_validate(a, -1, NULL) || !g_utf8_validate(b, -1, NULL)) { |
|
634fcb6e3e66
[gaim-migrate @ 6347]
Herman Bloggs <herman@bluedigits.com>
parents:
5874
diff
changeset
|
902 | gaim_debug(GAIM_DEBUG_ERROR, "gaim_utf8_strcasecmp", "One or both parameters are invalid UTF8\n"); |
|
634fcb6e3e66
[gaim-migrate @ 6347]
Herman Bloggs <herman@bluedigits.com>
parents:
5874
diff
changeset
|
903 | return ret; |
|
634fcb6e3e66
[gaim-migrate @ 6347]
Herman Bloggs <herman@bluedigits.com>
parents:
5874
diff
changeset
|
904 | } |
|
634fcb6e3e66
[gaim-migrate @ 6347]
Herman Bloggs <herman@bluedigits.com>
parents:
5874
diff
changeset
|
905 | |
|
634fcb6e3e66
[gaim-migrate @ 6347]
Herman Bloggs <herman@bluedigits.com>
parents:
5874
diff
changeset
|
906 | a_norm = g_utf8_casefold(a, -1); |
|
634fcb6e3e66
[gaim-migrate @ 6347]
Herman Bloggs <herman@bluedigits.com>
parents:
5874
diff
changeset
|
907 | b_norm = g_utf8_casefold(b, -1); |
|
634fcb6e3e66
[gaim-migrate @ 6347]
Herman Bloggs <herman@bluedigits.com>
parents:
5874
diff
changeset
|
908 | ret = g_utf8_collate(a_norm, b_norm); |
| 4793 | 909 | g_free(a_norm); |
| 910 | g_free(b_norm); | |
| 911 | return ret; | |
| 912 | } | |
|
5515
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
913 | |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
914 | gchar *gaim_strreplace(const gchar *string, const gchar *delimiter, const gchar *replacement) { |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
915 | gchar **split; |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
916 | gchar *ret; |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
917 | |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
918 | split = g_strsplit(string, delimiter, 0); |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
919 | ret = g_strjoinv(replacement, split); |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
920 | g_strfreev(split); |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
921 | |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
922 | return ret; |
|
702f01e5f135
[gaim-migrate @ 5914]
Mark Doliner <markdoliner@pidgin.im>
parents:
5497
diff
changeset
|
923 | } |
| 5826 | 924 | |
| 925 | char *gaim_get_size_string(size_t size) | |
| 926 | { | |
| 927 | static const char *size_str[4] = { "bytes", "KB", "MB", "GB" }; | |
| 928 | float size_mag; | |
| 929 | int size_index = 0; | |
| 930 | ||
| 931 | if (size == -1) { | |
| 932 | return g_strdup(_("Calculating...")); | |
| 933 | } | |
| 934 | else if (size == 0) { | |
| 935 | return g_strdup(_("Unknown.")); | |
| 936 | } | |
| 937 | else { | |
| 938 | size_mag = (float)size; | |
| 939 | ||
| 940 | while ((size_index < 4) && (size_mag > 1024)) { | |
| 941 | size_mag /= 1024; | |
| 942 | size_index++; | |
| 943 | } | |
| 944 | ||
| 945 | return g_strdup_printf("%.2f %s", size_mag, size_str[size_index]); | |
| 946 | } | |
| 947 | } |