Mon, 20 Nov 2000 07:24:18 +0000
[gaim-migrate @ 1116]
lots of changes.
buddy.c: just in general tried to get things to work better. moving things in the edit list window and signing off should be handled better in the main buddy list window (watch out for flashes).
gaim.h: removed toc-specific things and moved them to toc.c and rvous.c as needed.
gtkhtml.c: possible fix for AOL 6.0 problems (I wasn't able to reproduce the problem before or after the fix, but i fixed what i think might have been causing the problem).
multi.c: moved LOGIN_STEPS from gaim.h here and actually use it now
oscar.c: moved an oscar-specific struct definition from gaim.h here and also handle problems better
perl.c: fix for stupid problem
rvous.c: first pass at attempt to be able to remove toc.c and rvous.c (though this will never happen; gaim will support toc as long as aol does) without cruft. gaim is now only dependent on toc.c and rvous.c for toc_build_config and parse_toc_buddy_list, which gaim needs to save and read its buddy list.
toc.c: rewrote the signin process so that the read()'s won't block. it's not actually a non-blocking read; it's just that it won't ever get to the read until there's data to be read (thanks to the gdk_input watcher). this means the cancel button should work after it's connected, but it's still not a non-blocking connect.
| 1 | 1 | /* |
| 2 | * gaim | |
| 3 | * | |
| 4 | * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
| 5 | * | |
| 6 | * This program is free software; you can redistribute it and/or modify | |
| 7 | * it under the terms of the GNU General Public License as published by | |
| 8 | * the Free Software Foundation; either version 2 of the License, or | |
| 9 | * (at your option) any later version. | |
| 10 | * | |
| 11 | * This program is distributed in the hope that it will be useful, | |
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 | * GNU General Public License for more details. | |
| 15 | * | |
| 16 | * You should have received a copy of the GNU General Public License | |
| 17 | * along with this program; if not, write to the Free Software | |
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 19 | * | |
| 20 | */ | |
| 21 | ||
|
349
6f7d28b0f98d
[gaim-migrate @ 359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
278
diff
changeset
|
22 | #ifdef HAVE_CONFIG_H |
|
6f7d28b0f98d
[gaim-migrate @ 359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
278
diff
changeset
|
23 | #include "../config.h" |
|
6f7d28b0f98d
[gaim-migrate @ 359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
278
diff
changeset
|
24 | #endif |
| 1 | 25 | #include <unistd.h> |
| 26 | #include <errno.h> | |
| 27 | #include <stdio.h> | |
| 28 | #include <stdlib.h> | |
| 29 | #include <sys/time.h> | |
| 30 | #include <sys/types.h> | |
| 31 | #include <sys/stat.h> | |
| 32 | #include <string.h> | |
| 33 | #include <sys/wait.h> | |
| 34 | #include <gtk/gtk.h> | |
|
210
4226cbf12850
[gaim-migrate @ 220]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
209
diff
changeset
|
35 | #include <ctype.h> |
| 1 | 36 | #include <pixmaps/aimicon.xpm> |
| 37 | #include "gaim.h" | |
| 38 | ||
| 39 | static GdkPixmap *icon_pm = NULL; | |
| 40 | static GdkBitmap *icon_bm = NULL; | |
| 41 | ||
| 70 | 42 | char *full_date() { |
| 43 | char * date; | |
| 44 | time_t tme; | |
| 45 | ||
| 46 | time(&tme); | |
| 47 | date = ctime(&tme); | |
| 48 | date[strlen(date)-1] = '\0'; | |
| 49 | return date; | |
| 50 | } | |
| 51 | ||
| 1 | 52 | gint badchar(char c) |
| 53 | { | |
| 970 | 54 | switch(c) { |
| 55 | case ' ': | |
| 56 | case ',': | |
| 57 | case '(': | |
| 58 | case ')': | |
| 59 | case '\0': | |
|
976
553a33f54fe2
[gaim-migrate @ 986]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
970
diff
changeset
|
60 | case '\n': |
| 970 | 61 | case '<': |
| 62 | case '>': | |
|
413
5b6c63b5ba38
[gaim-migrate @ 423]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
373
diff
changeset
|
63 | return 1; |
| 970 | 64 | default: |
| 65 | return 0; | |
| 66 | } | |
| 1 | 67 | } |
| 68 | ||
| 69 | ||
| 970 | 70 | gchar *sec_to_text(gint sec) |
| 1 | 71 | { |
| 72 | int hrs, min; | |
| 73 | char minutes[64]; | |
| 74 | char hours[64]; | |
| 970 | 75 | char *sep; |
| 1 | 76 | char *ret = g_malloc(256); |
| 77 | ||
| 78 | hrs = sec / 3600; | |
| 79 | min = sec % 3600; | |
| 80 | ||
| 81 | min = min / 60; | |
| 82 | sec = min % 60; | |
| 83 | ||
| 84 | if (min) { | |
| 85 | if (min == 1) | |
| 86 | g_snprintf(minutes, sizeof(minutes), "%d minute.", min); | |
| 87 | else | |
| 88 | g_snprintf(minutes, sizeof(minutes), "%d minutes.", min); | |
| 970 | 89 | sep = ", "; |
| 1 | 90 | } else { |
| 91 | if (!hrs) | |
| 92 | g_snprintf(minutes, sizeof(minutes), "%d minutes.", min); | |
| 93 | else { | |
| 94 | minutes[0] = '.'; | |
| 95 | minutes[1] = '\0'; | |
| 96 | } | |
| 970 | 97 | sep = ""; |
| 1 | 98 | } |
| 99 | ||
| 100 | if (hrs) { | |
| 101 | if (hrs == 1) | |
| 102 | g_snprintf(hours, sizeof(hours), "%d hour%s", hrs, sep); | |
| 103 | else | |
| 104 | g_snprintf(hours, sizeof(hours), "%d hours%s", hrs, sep); | |
| 105 | } else | |
| 106 | hours[0] = '\0'; | |
| 107 | ||
| 108 | ||
| 109 | g_snprintf(ret, 256, "%s%s", hours, minutes); | |
| 110 | ||
| 111 | return ret; | |
| 112 | } | |
| 113 | ||
| 114 | gint linkify_text(char *text) | |
| 115 | { | |
| 116 | char *c, *t; | |
|
845
6e0bd2401bed
[gaim-migrate @ 855]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
831
diff
changeset
|
117 | char *cpy = g_malloc(strlen(text) * 2 + 1); |
| 1 | 118 | char url_buf[512]; |
| 119 | int cnt=0; | |
| 120 | /* Assumes you have a buffer able to cary at least BUF_LEN * 2 bytes */ | |
| 121 | ||
| 122 | strncpy(cpy, text, strlen(text)); | |
| 123 | cpy[strlen(text)] = 0; | |
| 124 | c = cpy; | |
| 125 | while(*c) { | |
| 126 | if (!strncasecmp(c, "<A", 2)) { | |
| 127 | while(1) { | |
| 128 | if (!strncasecmp(c, "/A>", 3)) { | |
| 129 | break; | |
| 130 | } | |
| 131 | text[cnt++] = *c; | |
| 132 | c++; | |
| 133 | if (!(*c)) | |
| 134 | break; | |
| 135 | } | |
| 856 | 136 | } else if ( (!strncasecmp(c, "http://", 7) || (!strncasecmp(c, "https://", 8)))) { |
| 1 | 137 | t = c; |
| 138 | while(1) { | |
| 139 | if (badchar(*t)) { | |
| 925 | 140 | |
| 141 | if (*(t) == ',' && (*(t+1) != ' ')) | |
| 142 | { | |
| 143 | t++; | |
| 144 | continue; | |
| 145 | } | |
| 146 | ||
| 1 | 147 | if (*(t-1) == '.') |
| 148 | t--; | |
| 149 | strncpy(url_buf, c, t-c); | |
| 150 | url_buf[t-c] = 0; | |
| 151 | cnt += g_snprintf(&text[cnt++], 1024, "<A HREF=\"%s\">%s</A>", url_buf, url_buf); | |
| 152 | cnt--; | |
| 153 | c = t; | |
| 154 | break; | |
| 155 | } | |
| 156 | if (!t) | |
| 157 | break; | |
| 158 | t++; | |
| 159 | ||
| 160 | } | |
| 161 | } else if (!strncasecmp(c, "www.", 4)) { | |
| 162 | if (strncasecmp(c, "www..", 5)) { | |
| 163 | t = c; | |
| 164 | while(1) { | |
| 165 | if (badchar(*t)) { | |
| 166 | if (t-c == 4) { | |
| 167 | break; | |
| 168 | } | |
| 925 | 169 | |
| 170 | if (*(t) == ',' && (*(t+1) != ' ')) | |
| 171 | { | |
| 172 | t++; | |
| 173 | continue; | |
| 174 | } | |
| 175 | ||
| 1 | 176 | if (*(t-1) == '.') |
| 177 | t--; | |
| 178 | strncpy(url_buf, c, t-c); | |
| 179 | url_buf[t-c] = 0; | |
| 180 | cnt += g_snprintf(&text[cnt++], 1024, "<A HREF=\"http://%s\">%s</A>", url_buf, url_buf); | |
| 181 | cnt--; | |
| 182 | c = t; | |
| 183 | break; | |
| 184 | } | |
| 185 | if (!t) | |
| 186 | break; | |
| 187 | t++; | |
| 188 | } | |
| 189 | } | |
| 190 | } else if (!strncasecmp(c, "ftp://", 6)) { | |
| 191 | t = c; | |
| 192 | while(1) { | |
| 193 | if (badchar(*t)) { | |
| 194 | if (*(t-1) == '.') | |
| 195 | t--; | |
| 196 | strncpy(url_buf, c, t-c); | |
| 197 | url_buf[t-c] = 0; | |
| 198 | cnt += g_snprintf(&text[cnt++], 1024, "<A HREF=\"%s\">%s</A>", url_buf, url_buf); | |
| 199 | cnt--; | |
| 200 | c = t; | |
| 201 | break; | |
| 202 | } | |
| 203 | if (!t) | |
| 204 | break; | |
| 205 | t++; | |
| 206 | ||
| 207 | } | |
| 924 | 208 | } else if (!strncasecmp(c, "ftp.", 4) ) { |
| 209 | if (strncasecmp(c, "ftp..", 5)) { | |
| 1 | 210 | t = c; |
| 211 | while(1) { | |
| 212 | if (badchar(*t)) { | |
| 213 | if (t-c == 4) { | |
| 214 | break; | |
| 215 | } | |
| 216 | if (*(t-1) == '.') | |
| 217 | t--; | |
| 218 | strncpy(url_buf, c, t-c); | |
| 219 | url_buf[t-c] = 0; | |
| 220 | cnt += g_snprintf(&text[cnt++], 1024, "<A HREF=\"ftp://%s\">%s</A>", url_buf, url_buf); | |
| 221 | cnt--; | |
| 222 | c = t; | |
| 223 | break; | |
| 224 | } | |
| 225 | if (!t) | |
| 226 | break; | |
| 227 | t++; | |
| 228 | } | |
| 924 | 229 | } |
| 1 | 230 | } else if (!strncasecmp(c, "mailto:", 7)) { |
| 231 | t = c; | |
| 232 | while(1) { | |
| 233 | if (badchar(*t)) { | |
| 234 | if (*(t-1) == '.') | |
| 235 | t--; | |
| 236 | strncpy(url_buf, c, t-c); | |
| 237 | url_buf[t-c] = 0; | |
| 238 | cnt += g_snprintf(&text[cnt++], 1024, "<A HREF=\"%s\">%s</A>", url_buf, url_buf); | |
| 239 | cnt--; | |
| 240 | c = t; | |
| 241 | break; | |
| 242 | } | |
| 243 | if (!t) | |
| 244 | break; | |
| 245 | t++; | |
| 246 | ||
| 247 | } | |
| 248 | } else if (!strncasecmp(c, "@", 1)) { | |
| 249 | char *tmp; | |
| 250 | int flag; | |
| 251 | int len=0; | |
| 924 | 252 | char illegal_chars[] = "!@#$%^&*()[]{}/\\<>\":;\0"; |
| 1 | 253 | url_buf[0] = 0; |
| 254 | ||
| 927 | 255 | if (*(c-1) == ' ' || *(c+1) == ' ' || rindex(illegal_chars, *(c+1)) || *(c+1) == 13 || *(c+1) == 10) |
| 1 | 256 | flag = 0; |
| 257 | else | |
| 258 | flag = 1; | |
| 259 | ||
| 260 | t = c; | |
| 261 | while(flag) { | |
| 262 | if (badchar(*t)) { | |
| 263 | cnt -= (len - 1); | |
| 264 | break; | |
| 265 | } else { | |
| 266 | len++; | |
| 267 | tmp = g_malloc(len + 1); | |
| 268 | tmp[len] = 0; | |
| 269 | tmp[0] = *t; | |
| 270 | strncpy(tmp + 1, url_buf, len - 1); | |
| 271 | strcpy(url_buf, tmp); | |
| 272 | url_buf[len] = 0; | |
| 273 | g_free(tmp); | |
| 274 | t--; | |
| 275 | if (t < cpy) { | |
| 276 | cnt = 0; | |
| 277 | break; | |
| 278 | } | |
| 279 | } | |
| 280 | } | |
| 281 | ||
| 282 | ||
| 283 | t = c + 1; | |
| 284 | ||
| 285 | while(flag) { | |
| 286 | if (badchar(*t)) { | |
| 287 | if (*(t-1) == '.') | |
| 288 | t--; | |
| 289 | cnt += g_snprintf(&text[cnt++], 1024, "<A HREF=\"mailto:%s\">%s</A>", url_buf, url_buf); | |
| 290 | text[cnt]=0; | |
| 291 | ||
| 292 | ||
| 293 | cnt--; | |
| 294 | c = t; | |
| 295 | ||
| 296 | break; | |
| 297 | } else { | |
| 298 | strncat(url_buf, t, 1); | |
| 299 | len++; | |
| 300 | url_buf[len] = 0; | |
| 301 | } | |
| 302 | ||
| 303 | t++; | |
| 304 | ||
| 305 | } | |
| 306 | ||
| 307 | ||
| 308 | } | |
| 309 | ||
| 310 | if (*c == 0) | |
| 311 | break; | |
| 312 | ||
| 313 | text[cnt++] = *c; | |
| 314 | c++; | |
| 315 | ||
| 316 | } | |
| 317 | text[cnt]=0; | |
|
845
6e0bd2401bed
[gaim-migrate @ 855]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
831
diff
changeset
|
318 | g_free(cpy); |
| 1 | 319 | return cnt; |
| 320 | } | |
| 321 | ||
| 322 | ||
|
373
09d69323a5b6
[gaim-migrate @ 383]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
349
diff
changeset
|
323 | FILE *open_log_file (char *name) |
| 1 | 324 | { |
| 79 | 325 | char *buf; |
| 326 | char *buf2; | |
| 1 | 327 | char log_all_file[256]; |
| 328 | struct log_conversation *l; | |
| 329 | struct stat st; | |
| 330 | int flag = 0; | |
| 331 | FILE *fd; | |
| 332 | int res; | |
| 333 | ||
| 334 | if (!(general_options & OPT_GEN_LOG_ALL)) { | |
| 335 | ||
|
373
09d69323a5b6
[gaim-migrate @ 383]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
349
diff
changeset
|
336 | l = find_log_info(name); |
| 1 | 337 | if (!l) |
| 338 | return NULL; | |
| 339 | ||
| 340 | if (stat(l->filename, &st) < 0) | |
| 341 | flag = 1; | |
| 342 | ||
| 343 | fd = fopen(l->filename, "a"); | |
| 344 | ||
| 345 | if (flag) { /* is a new file */ | |
| 346 | fprintf(fd, "<HTML><HEAD><TITLE>" ); | |
|
373
09d69323a5b6
[gaim-migrate @ 383]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
349
diff
changeset
|
347 | fprintf(fd, "IM Sessions with %s", name ); |
| 1 | 348 | fprintf(fd, "</TITLE></HEAD><BODY BGCOLOR=\"ffffff\">\n" ); |
| 349 | } | |
| 350 | ||
| 351 | return fd; | |
| 352 | } | |
| 353 | ||
| 79 | 354 | buf = g_malloc(BUF_LONG); |
| 355 | buf2 = g_malloc(BUF_LONG); | |
| 356 | ||
| 1 | 357 | /* Dont log yourself */ |
| 358 | g_snprintf(log_all_file, 256, "%s/.gaim", getenv("HOME")); | |
| 359 | ||
| 360 | stat(log_all_file, &st); | |
| 361 | if (!S_ISDIR(st.st_mode)) | |
| 362 | unlink(log_all_file); | |
| 363 | ||
| 364 | fd = fopen(log_all_file, "r"); | |
| 365 | ||
| 366 | if (!fd) { | |
| 367 | res = mkdir(log_all_file, S_IRUSR | S_IWUSR | S_IXUSR); | |
| 368 | if (res < 0) { | |
| 369 | g_snprintf(buf, BUF_LONG, "Unable to make directory %s for logging", log_all_file); | |
| 370 | do_error_dialog(buf, "Error!"); | |
| 371 | g_free(buf); | |
| 372 | g_free(buf2); | |
| 373 | return NULL; | |
| 374 | } | |
| 375 | } else | |
| 376 | fclose(fd); | |
| 377 | ||
|
960
c4012584334f
[gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
927
diff
changeset
|
378 | g_snprintf(log_all_file, 256, "%s/.gaim/logs", getenv("HOME")); |
| 1 | 379 | |
| 380 | if (stat(log_all_file, &st) < 0) | |
| 381 | flag = 1; | |
| 382 | if (!S_ISDIR(st.st_mode)) | |
| 383 | unlink(log_all_file); | |
| 384 | ||
| 385 | fd = fopen(log_all_file, "r"); | |
| 386 | if (!fd) { | |
| 387 | res = mkdir(log_all_file, S_IRUSR | S_IWUSR | S_IXUSR); | |
| 388 | if (res < 0) { | |
| 389 | g_snprintf(buf, BUF_LONG, "Unable to make directory %s for logging", log_all_file); | |
| 390 | do_error_dialog(buf, "Error!"); | |
| 391 | g_free(buf); | |
| 392 | g_free(buf2); | |
| 393 | return NULL; | |
| 394 | } | |
| 395 | } else | |
| 396 | fclose(fd); | |
| 397 | ||
| 398 | ||
|
960
c4012584334f
[gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
927
diff
changeset
|
399 | g_snprintf(log_all_file, 256, "%s/.gaim/logs/%s.log", getenv("HOME"), normalize(name)); |
| 1 | 400 | |
| 401 | if (stat(log_all_file, &st) < 0) | |
| 402 | flag = 1; | |
| 403 | ||
| 404 | sprintf(debug_buff,"Logging to: \"%s\"\n", log_all_file); | |
| 405 | debug_print(debug_buff); | |
| 406 | ||
| 407 | fd = fopen(log_all_file, "a"); | |
| 408 | ||
|
960
c4012584334f
[gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
927
diff
changeset
|
409 | if (fd && flag) { /* is a new file */ |
| 1 | 410 | fprintf(fd, "<HTML><HEAD><TITLE>" ); |
|
373
09d69323a5b6
[gaim-migrate @ 383]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
349
diff
changeset
|
411 | fprintf(fd, "IM Sessions with %s", name ); |
| 1 | 412 | fprintf(fd, "</TITLE></HEAD><BODY BGCOLOR=\"ffffff\">\n" ); |
| 413 | } | |
| 25 | 414 | |
| 415 | g_free(buf); | |
| 416 | g_free(buf2); | |
| 1 | 417 | return fd; |
| 418 | } | |
| 419 | ||
| 420 | ||
|
254
04cf9e37e5ec
[gaim-migrate @ 264]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
210
diff
changeset
|
421 | /* we only need this for TOC, because messages must be escaped */ |
| 1 | 422 | int escape_message(char *msg) |
| 423 | { | |
| 424 | char *c, *cpy; | |
| 425 | int cnt=0; | |
| 426 | /* Assumes you have a buffer able to cary at least BUF_LEN * 2 bytes */ | |
| 427 | if (strlen(msg) > BUF_LEN) { | |
| 428 | sprintf(debug_buff, "Warning: truncating message to 2048 bytes\n"); | |
| 429 | debug_print(debug_buff); | |
| 430 | msg[2047]='\0'; | |
| 431 | } | |
| 432 | ||
| 433 | cpy = g_strdup(msg); | |
| 434 | c = cpy; | |
| 435 | while(*c) { | |
| 436 | switch(*c) { | |
| 437 | case '$': | |
| 438 | case '[': | |
| 439 | case ']': | |
| 440 | case '(': | |
| 441 | case ')': | |
| 442 | case '#': | |
| 443 | msg[cnt++]='\\'; | |
| 444 | /* Fall through */ | |
| 445 | default: | |
| 446 | msg[cnt++]=*c; | |
| 447 | } | |
| 448 | c++; | |
| 449 | } | |
| 450 | msg[cnt]='\0'; | |
| 451 | g_free(cpy); | |
| 452 | return cnt; | |
| 453 | } | |
| 454 | ||
|
254
04cf9e37e5ec
[gaim-migrate @ 264]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
210
diff
changeset
|
455 | /* we don't need this for oscar either */ |
| 1 | 456 | int escape_text(char *msg) |
| 457 | { | |
| 458 | char *c, *cpy; | |
| 459 | int cnt=0; | |
| 79 | 460 | /* Assumes you have a buffer able to cary at least BUF_LEN * 4 bytes */ |
| 1 | 461 | if (strlen(msg) > BUF_LEN) { |
| 462 | fprintf(stderr, "Warning: truncating message to 2048 bytes\n"); | |
| 463 | msg[2047]='\0'; | |
| 464 | } | |
| 465 | ||
| 466 | cpy = g_strdup(msg); | |
| 467 | c = cpy; | |
| 468 | while(*c) { | |
|
960
c4012584334f
[gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
927
diff
changeset
|
469 | switch(*c) { |
|
c4012584334f
[gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
927
diff
changeset
|
470 | case '\n': |
|
c4012584334f
[gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
927
diff
changeset
|
471 | msg[cnt++] = '<'; |
|
c4012584334f
[gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
927
diff
changeset
|
472 | msg[cnt++] = 'B'; |
|
c4012584334f
[gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
927
diff
changeset
|
473 | msg[cnt++] = 'R'; |
|
c4012584334f
[gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
927
diff
changeset
|
474 | msg[cnt++] = '>'; |
|
c4012584334f
[gaim-migrate @ 970]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
927
diff
changeset
|
475 | break; |
| 1 | 476 | case '{': |
| 477 | case '}': | |
| 478 | case '\\': | |
| 479 | case '"': | |
| 480 | msg[cnt++]='\\'; | |
| 481 | /* Fall through */ | |
| 482 | default: | |
| 483 | msg[cnt++]=*c; | |
| 484 | } | |
| 485 | c++; | |
| 486 | } | |
| 487 | msg[cnt]='\0'; | |
| 488 | g_free(cpy); | |
| 489 | return cnt; | |
| 490 | } | |
| 491 | ||
| 492 | char * escape_text2(char *msg) | |
| 493 | { | |
| 494 | char *c, *cpy; | |
| 495 | char *woo; | |
| 496 | int cnt=0; | |
| 497 | /* Assumes you have a buffer able to cary at least BUF_LEN * 2 bytes */ | |
| 498 | if (strlen(msg) > BUF_LEN) { | |
| 499 | fprintf(stderr, "Warning: truncating message to 2048 bytes\n"); | |
| 500 | msg[2047]='\0'; | |
| 501 | } | |
| 502 | ||
| 79 | 503 | woo = malloc(strlen(msg) * 2); |
| 1 | 504 | cpy = g_strdup(msg); |
| 505 | c = cpy; | |
| 506 | while(*c) { | |
| 507 | switch(*c) { | |
| 508 | case '\n': | |
| 509 | woo[cnt++] = '<'; | |
| 510 | woo[cnt++] = 'B'; | |
| 511 | woo[cnt++] = 'R'; | |
| 512 | woo[cnt++] = '>'; | |
| 513 | break; | |
| 514 | case '{': | |
| 515 | case '}': | |
| 516 | case '\\': | |
| 517 | case '"': | |
| 518 | woo[cnt++]='\\'; | |
| 519 | /* Fall through */ | |
| 520 | default: | |
| 521 | woo[cnt++]=*c; | |
| 522 | } | |
| 523 | c++; | |
| 524 | } | |
| 525 | woo[cnt]='\0'; | |
| 26 | 526 | |
| 527 | g_free (cpy); | |
| 1 | 528 | return woo; |
| 529 | } | |
| 530 | ||
| 531 | ||
| 532 | char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" | |
| 533 | "0123456789+/"; | |
| 534 | ||
| 535 | ||
| 536 | char *tobase64(char *text) | |
| 537 | { | |
| 538 | char *out = NULL; | |
| 539 | char *c; | |
| 540 | unsigned int tmp = 0; | |
| 541 | int len = 0, n = 0; | |
| 542 | ||
| 543 | c = text; | |
| 544 | ||
| 545 | while(c) { | |
| 546 | tmp = tmp << 8; | |
| 547 | tmp += *c; | |
| 548 | n++; | |
| 549 | ||
| 550 | if (n == 3) { | |
| 551 | out = g_realloc(out, len+4); | |
| 552 | out[len] = alphabet[(tmp >> 18) & 0x3f]; | |
| 553 | out[len+1] = alphabet[(tmp >> 12) & 0x3f]; | |
| 554 | out[len+2] = alphabet[(tmp >> 6) & 0x3f]; | |
| 555 | out[len+3] = alphabet[tmp & 0x3f]; | |
| 556 | len += 4; | |
| 557 | tmp = 0; | |
| 558 | n = 0; | |
| 559 | } | |
| 560 | c++; | |
| 561 | } | |
| 562 | switch(n) { | |
| 563 | ||
| 564 | case 2: | |
| 565 | out = g_realloc(out, len+5); | |
| 566 | out[len] = alphabet[(tmp >> 12) & 0x3f]; | |
| 567 | out[len+1] = alphabet[(tmp >> 6) & 0x3f]; | |
| 568 | out[len+2] = alphabet[tmp & 0x3f]; | |
| 569 | out[len+3] = '='; | |
| 570 | out[len+4] = 0; | |
| 571 | break; | |
| 572 | case 1: | |
| 573 | out = g_realloc(out, len+4); | |
| 574 | out[len] = alphabet[(tmp >> 6) & 0x3f]; | |
| 575 | out[len+1] = alphabet[tmp & 0x3f]; | |
| 576 | out[len+2] = '='; | |
| 577 | out[len+3] = 0; | |
| 578 | break; | |
| 579 | case 0: | |
| 580 | out = g_realloc(out, len+2); | |
| 581 | out[len] = '='; | |
| 582 | out[len+1] = 0; | |
| 583 | break; | |
| 584 | } | |
| 585 | return out; | |
| 586 | } | |
| 587 | ||
| 588 | ||
| 589 | char *frombase64(char *text) | |
| 590 | { | |
| 591 | char *out = NULL; | |
| 592 | char tmp = 0; | |
| 593 | char *c; | |
| 594 | gint32 tmp2 = 0; | |
| 595 | int len = 0, n = 0; | |
| 596 | ||
| 597 | c = text; | |
| 598 | ||
| 599 | while(*c) { | |
| 600 | if (*c >= 'A' && *c <= 'Z') { | |
| 601 | tmp = *c - 'A'; | |
| 602 | } else if (*c >= 'a' && *c <= 'z') { | |
| 603 | tmp = 26 + (*c - 'a'); | |
| 604 | } else if (*c >= '0' && *c <= 57) { | |
| 605 | tmp = 52 + (*c - '0'); | |
| 606 | } else if (*c == '+') { | |
| 607 | tmp = 62; | |
| 608 | } else if (*c == '/') { | |
| 609 | tmp = 63; | |
| 610 | } else if (*c == '=') { | |
| 611 | if (n == 3) { | |
| 612 | out = g_realloc(out, len + 2); | |
| 613 | out[len] = (char)(tmp2 >> 10) & 0xff; | |
| 614 | len++; | |
| 615 | out[len] = (char)(tmp2 >> 2) & 0xff; | |
| 616 | len++; | |
| 617 | } else if (n == 2) { | |
| 618 | out = g_realloc(out, len + 1); | |
| 619 | out[len] = (char)(tmp2 >> 4) & 0xff; | |
| 620 | len++; | |
| 621 | } | |
| 622 | break; | |
| 623 | } | |
| 624 | tmp2 = ((tmp2 << 6) | (tmp & 0xff)); | |
| 625 | n++; | |
| 626 | if (n == 4) { | |
| 627 | out = g_realloc(out, len + 3); | |
| 628 | out[len] = (char)((tmp2 >> 16) & 0xff); | |
| 629 | len++; | |
| 630 | out[len] = (char)((tmp2 >> 8) & 0xff); | |
| 631 | len++; | |
| 632 | out[len] = (char)(tmp2 & 0xff); | |
| 633 | len++; | |
| 634 | tmp2 = 0; | |
| 635 | n = 0; | |
| 636 | } | |
| 637 | c++; | |
| 638 | } | |
| 639 | ||
|
194
8c7ebb5ca893
[gaim-migrate @ 204]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
180
diff
changeset
|
640 | out = g_realloc(out, len+1); |
| 1 | 641 | out[len] = 0; |
| 642 | ||
| 643 | return out; | |
| 644 | } | |
| 645 | ||
| 646 | ||
| 647 | char *normalize(const char *s) | |
| 648 | { | |
| 649 | static char buf[BUF_LEN]; | |
| 650 | char *t, *u; | |
| 651 | int x=0; | |
| 652 | ||
| 79 | 653 | g_return_val_if_fail ((s != NULL), NULL); |
| 26 | 654 | |
| 655 | u = t = g_strdup(s); | |
| 1 | 656 | |
| 657 | strcpy(t, s); | |
| 658 | g_strdown(t); | |
| 659 | ||
| 26 | 660 | while(*t && (x < BUF_LEN - 1)) { |
| 1 | 661 | if (*t != ' ') { |
| 662 | buf[x] = *t; | |
| 663 | x++; | |
| 664 | } | |
| 665 | t++; | |
| 666 | } | |
| 667 | buf[x]='\0'; | |
| 668 | g_free(u); | |
| 669 | return buf; | |
| 670 | } | |
| 671 | ||
| 672 | char *date() | |
| 673 | { | |
| 674 | static char date[80]; | |
| 675 | time_t tme; | |
| 676 | time(&tme); | |
| 677 | strftime(date, sizeof(date), "%H:%M:%S", localtime(&tme)); | |
| 678 | return date; | |
| 679 | } | |
| 680 | ||
| 681 | ||
| 682 | gint clean_pid(void *dummy) | |
| 683 | { | |
| 684 | int status; | |
| 685 | pid_t pid; | |
| 686 | ||
| 687 | pid = waitpid(-1, &status, WNOHANG); | |
| 688 | ||
| 689 | if (pid == 0) | |
| 690 | return TRUE; | |
| 691 | ||
| 692 | return FALSE; | |
| 693 | } | |
| 694 | ||
| 695 | void aol_icon(GdkWindow *w) | |
| 696 | { | |
| 697 | #ifndef _WIN32 | |
| 698 | if (icon_pm == NULL) { | |
| 699 | icon_pm = gdk_pixmap_create_from_xpm_d(w, &icon_bm, | |
| 700 | NULL, (gchar **)aimicon_xpm); | |
| 701 | } | |
| 702 | gdk_window_set_icon(w, NULL, icon_pm, icon_bm); | |
| 10 | 703 | if (mainwindow) gdk_window_set_group(w, mainwindow->window); |
| 1 | 704 | #endif |
| 705 | } | |
| 706 | ||
|
1030
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
707 | struct aim_user *find_user(const char *name, int protocol) |
| 1 | 708 | { |
| 709 | char *who = g_strdup(normalize(name)); | |
| 710 | GList *usr = aim_users; | |
| 711 | struct aim_user *u; | |
| 712 | ||
| 713 | while(usr) { | |
| 714 | u = (struct aim_user *)usr->data; | |
| 715 | if (!strcmp(normalize(u->username), who)) { | |
|
1030
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
716 | if (protocol != -1) { |
|
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
717 | if (u->protocol == protocol) { |
|
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
718 | g_free(who); |
|
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
719 | return u; |
|
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
720 | } |
|
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
721 | } else { |
|
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
722 | g_free(who); |
|
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
723 | return u; |
|
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
724 | } |
|
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
725 | |
| 1 | 726 | } |
| 727 | usr = usr->next; | |
| 728 | } | |
| 729 | g_free(who); | |
| 730 | return NULL; | |
| 731 | } | |
| 180 | 732 | |
| 206 | 733 | /* |
| 734 | ||
| 735 | This function was taken from EveryBuddy and was written by | |
| 736 | Torrey Searle. tsearle@valhalla.marko.net | |
| 737 | ||
| 738 | http://www.everybuddy.com | |
| 739 | ||
| 740 | */ | |
| 741 | ||
| 209 | 742 | void spell_checker(GtkWidget * text) |
| 206 | 743 | { |
| 744 | int start = 0; | |
| 745 | int end = 0; | |
| 746 | static GdkColor * color = NULL; | |
| 747 | int ignore = 0; | |
| 748 | int point = gtk_editable_get_position(GTK_EDITABLE(text)); | |
| 749 | ||
| 750 | GString * string; | |
| 751 | ||
| 752 | if( color == NULL ) | |
| 753 | { | |
| 754 | GdkColormap * gc = gtk_widget_get_colormap( text ); | |
| 755 | color = g_new0(GdkColor, 1); | |
| 756 | color->red = 255 * 256; | |
| 757 | gdk_colormap_alloc_color(gc, color, FALSE, TRUE); | |
| 758 | } | |
| 759 | ||
| 760 | ||
| 761 | ||
| 762 | end = point-1; | |
| 763 | for( start = end-1; start >= 0; start-- ) | |
| 764 | { | |
| 765 | if((isspace(GTK_TEXT_INDEX(GTK_TEXT(text), start)) || start == 0) | |
| 766 | && !ignore) | |
| 767 | { | |
| 768 | char * word; | |
| 769 | FILE * file; | |
| 770 | char buff[1024]; | |
| 771 | word = gtk_editable_get_chars( GTK_EDITABLE(text), start, end ); | |
| 772 | g_snprintf(buff, 1024, "echo \"%s\" | ispell -l", word ); | |
| 773 | file = popen(buff, "r"); | |
| 774 | ||
| 775 | buff[0] = 0; | |
| 776 | fgets(buff, 255, file); | |
| 777 | ||
| 778 | if(strlen(buff) > 0 ) | |
| 779 | { | |
| 780 | string = g_string_new(word); | |
| 781 | gtk_text_set_point(GTK_TEXT(text), end); | |
| 782 | gtk_text_backward_delete(GTK_TEXT(text), end-start); | |
| 783 | gtk_text_insert( GTK_TEXT(text), NULL, color, NULL, | |
| 784 | string->str, string->len ); | |
| 785 | g_string_free( string, TRUE ); | |
| 786 | } | |
| 787 | else | |
| 788 | { | |
| 789 | string = g_string_new(word); | |
| 790 | gtk_text_set_point(GTK_TEXT(text), end); | |
| 791 | gtk_text_backward_delete(GTK_TEXT(text), end-start); | |
| 792 | gtk_text_insert( GTK_TEXT(text), NULL, &(text->style->fg[0]), NULL, | |
| 793 | string->str, string->len ); | |
| 794 | g_string_free( string, TRUE ); | |
| 795 | } | |
| 796 | pclose( file); | |
|
846
3f7ea1614f89
[gaim-migrate @ 856]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
845
diff
changeset
|
797 | g_free(word); |
| 206 | 798 | break; |
| 799 | } | |
| 800 | else if(!isalpha(GTK_TEXT_INDEX(GTK_TEXT(text), start))) | |
| 801 | { | |
| 802 | ignore = 1; | |
| 803 | } | |
| 804 | } | |
| 805 | gtk_text_set_point(GTK_TEXT(text), point); | |
| 806 | ||
| 807 | } | |
| 808 | ||
|
592
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
809 | /* 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
|
810 | or time */ |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
811 | char *away_subs(char *msg, char *name) |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
812 | { |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
813 | char *c; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
814 | static char cpy[BUF_LONG]; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
815 | int cnt=0; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
816 | time_t t = time(0); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
817 | struct tm *tme = localtime(&t); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
818 | char tmp[20]; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
819 | |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
820 | cpy[0] = '\0'; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
821 | c = msg; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
822 | while(*c) { |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
823 | switch(*c) { |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
824 | case '%': |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
825 | if (*(c+1)) { |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
826 | switch (*(c+1)) { |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
827 | case 'n': |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
828 | // append name |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
829 | strcpy (cpy+cnt, name); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
830 | cnt += strlen(name); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
831 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
832 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
833 | case 'd': |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
834 | // append date |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
835 | strftime (tmp, 20, "%D", tme); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
836 | strcpy (cpy+cnt, tmp); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
837 | cnt += strlen(tmp); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
838 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
839 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
840 | case 't': |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
841 | // append time |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
842 | strftime (tmp, 20, "%r", tme); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
843 | strcpy (cpy+cnt, tmp); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
844 | cnt += strlen(tmp); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
845 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
846 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
847 | default: |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
848 | cpy[cnt++]=*c; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
849 | } |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
850 | } |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
851 | break; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
852 | default: |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
853 | cpy[cnt++]=*c; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
854 | } |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
855 | c++; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
856 | } |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
857 | cpy[cnt]='\0'; |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
858 | return(cpy); |
|
9cd04eefc8ca
[gaim-migrate @ 602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
470
diff
changeset
|
859 | } |
|
603
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
860 | |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
861 | GtkWidget *picture_button(GtkWidget *window, char *text, char **xpm) |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
862 | { |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
863 | GtkWidget *button; |
|
619
646866fc909a
[gaim-migrate @ 629]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
617
diff
changeset
|
864 | GtkWidget *button_box, *button_box_2, *button_box_3; |
|
603
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
865 | GtkWidget *label; |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
866 | GdkBitmap *mask; |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
867 | GdkPixmap *pm; |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
868 | GtkWidget *pixmap; |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
869 | |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
870 | button = gtk_button_new(); |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
871 | if (display_options & OPT_DISP_COOL_LOOK) |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
872 | gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
873 | |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
874 | button_box = gtk_hbox_new(FALSE, 5); |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
875 | gtk_container_add(GTK_CONTAINER(button), button_box); |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
876 | |
|
619
646866fc909a
[gaim-migrate @ 629]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
617
diff
changeset
|
877 | button_box_2 = gtk_hbox_new(FALSE, 0); |
|
646866fc909a
[gaim-migrate @ 629]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
617
diff
changeset
|
878 | button_box_3 = gtk_hbox_new(FALSE, 0); |
|
646866fc909a
[gaim-migrate @ 629]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
617
diff
changeset
|
879 | gtk_box_pack_start(GTK_BOX(button_box), button_box_2, TRUE, TRUE, 0); |
|
646866fc909a
[gaim-migrate @ 629]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
617
diff
changeset
|
880 | gtk_box_pack_start(GTK_BOX(button_box), button_box_3, TRUE, TRUE, 0); |
|
603
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
881 | pm = gdk_pixmap_create_from_xpm_d(window->window, &mask, NULL, xpm); |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
882 | pixmap = gtk_pixmap_new(pm, mask); |
|
619
646866fc909a
[gaim-migrate @ 629]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
617
diff
changeset
|
883 | gtk_box_pack_end(GTK_BOX(button_box_2), pixmap, FALSE, FALSE, 0); |
|
603
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
884 | |
| 623 | 885 | if (text) |
| 886 | { | |
| 887 | label = gtk_label_new(text); | |
| 888 | gtk_box_pack_start(GTK_BOX(button_box_3), label, FALSE, FALSE, 2); | |
|
967
15d43188c33c
[gaim-migrate @ 977]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
963
diff
changeset
|
889 | gtk_widget_show(label); |
| 623 | 890 | } |
|
619
646866fc909a
[gaim-migrate @ 629]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
617
diff
changeset
|
891 | |
|
646866fc909a
[gaim-migrate @ 629]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
617
diff
changeset
|
892 | gtk_widget_show(pixmap); |
|
646866fc909a
[gaim-migrate @ 629]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
617
diff
changeset
|
893 | gtk_widget_show(button_box_2); |
|
646866fc909a
[gaim-migrate @ 629]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
617
diff
changeset
|
894 | gtk_widget_show(button_box_3); |
|
646866fc909a
[gaim-migrate @ 629]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
617
diff
changeset
|
895 | gtk_widget_show(button_box); |
| 651 | 896 | |
|
726
2e0f8150f665
[gaim-migrate @ 736]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
684
diff
changeset
|
897 | /* this causes clipping on lots of buttons with long text */ |
|
2e0f8150f665
[gaim-migrate @ 736]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
684
diff
changeset
|
898 | /* gtk_widget_set_usize(button, 75, 30);*/ |
|
619
646866fc909a
[gaim-migrate @ 629]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
617
diff
changeset
|
899 | gtk_widget_show(button); |
|
644
4388456cd80e
[gaim-migrate @ 654]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
623
diff
changeset
|
900 | gdk_pixmap_unref(pm); |
|
804
c606c9aacfc5
[gaim-migrate @ 814]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
770
diff
changeset
|
901 | gdk_bitmap_unref(mask); |
|
619
646866fc909a
[gaim-migrate @ 629]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
617
diff
changeset
|
902 | |
|
603
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
903 | return button; |
|
58bf0003d8a4
[gaim-migrate @ 613]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
592
diff
changeset
|
904 | } |
| 623 | 905 | |
|
759
c0b51601468f
[gaim-migrate @ 769]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
754
diff
changeset
|
906 | static GtkTooltips *tips = NULL; |
| 915 | 907 | GtkWidget *picture_button2(GtkWidget *window, char *text, char **xpm, short dispstyle) |
| 623 | 908 | { |
| 909 | GtkWidget *button; | |
| 910 | GtkWidget *button_box, *button_box_2; | |
| 911 | GdkBitmap *mask; | |
| 912 | GdkPixmap *pm; | |
| 913 | GtkWidget *pixmap; | |
| 754 | 914 | GtkWidget *label; |
| 623 | 915 | |
|
759
c0b51601468f
[gaim-migrate @ 769]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
754
diff
changeset
|
916 | if (!tips) tips = gtk_tooltips_new(); |
| 623 | 917 | button = gtk_button_new(); |
| 918 | if (display_options & OPT_DISP_COOL_LOOK) | |
| 919 | gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); | |
| 920 | ||
| 651 | 921 | button_box = gtk_hbox_new(FALSE, 0); |
| 623 | 922 | gtk_container_add(GTK_CONTAINER(button), button_box); |
| 923 | ||
| 754 | 924 | button_box_2 = gtk_vbox_new(FALSE, 0); |
| 623 | 925 | |
| 926 | gtk_box_pack_start(GTK_BOX(button_box), button_box_2, TRUE, TRUE, 0); | |
|
967
15d43188c33c
[gaim-migrate @ 977]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
963
diff
changeset
|
927 | gtk_widget_show(button_box_2); |
|
15d43188c33c
[gaim-migrate @ 977]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
963
diff
changeset
|
928 | gtk_widget_show(button_box); |
| 915 | 929 | if (dispstyle == 2 || dispstyle == 0) { |
| 930 | pm = gdk_pixmap_create_from_xpm_d(window->window, &mask, NULL, xpm); | |
| 931 | pixmap = gtk_pixmap_new(pm, mask); | |
| 932 | gtk_box_pack_start(GTK_BOX(button_box_2), pixmap, FALSE, FALSE, 0); | |
| 754 | 933 | |
| 915 | 934 | gtk_widget_show(pixmap); |
| 935 | ||
|
967
15d43188c33c
[gaim-migrate @ 977]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
963
diff
changeset
|
936 | gdk_pixmap_unref(pm); |
|
15d43188c33c
[gaim-migrate @ 977]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
963
diff
changeset
|
937 | gdk_bitmap_unref(mask); |
| 915 | 938 | } |
| 939 | ||
| 940 | if (dispstyle == 2 || dispstyle == 1) | |
| 754 | 941 | { |
| 942 | label = gtk_label_new(text); | |
| 943 | gtk_widget_show(label); | |
| 944 | gtk_box_pack_end(GTK_BOX(button_box_2), label, FALSE, FALSE, 0); | |
| 945 | } | |
| 623 | 946 | |
|
967
15d43188c33c
[gaim-migrate @ 977]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
963
diff
changeset
|
947 | gtk_tooltips_set_tip(tips, button, text, "Gaim"); |
| 623 | 948 | gtk_widget_show(button); |
| 949 | return button; | |
| 950 | } | |
| 951 | ||
|
684
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
952 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
953 | /* remove leading whitespace from a string */ |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
954 | char *remove_spaces (char *str) |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
955 | { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
956 | int i; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
957 | char *new; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
958 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
959 | if (str == NULL) |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
960 | return NULL; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
961 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
962 | i = strspn (str, " \t\n\r\f"); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
963 | new = &str[i]; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
964 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
965 | return new; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
966 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
967 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
968 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
969 | /* translate an AIM 3 buddylist (*.lst) to a GAIM buddylist */ |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
970 | void translate_lst (FILE *src_fp, char *dest) |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
971 | { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
972 | char line[BUF_LEN], *line2; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
973 | char *name; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
974 | int i; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
975 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
976 | sprintf (dest, "m 1\n"); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
977 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
978 | while (fgets (line, BUF_LEN, src_fp)) { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
979 | line2 = remove_spaces (line); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
980 | if (strstr (line2, "group") == line2) { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
981 | name = strpbrk (line2, " \t\n\r\f") + 1; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
982 | strcat (dest, "g "); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
983 | for (i = 0; i < strcspn (name, "\n\r"); i++) |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
984 | if (name[i] != '\"') |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
985 | strncat (dest, &name[i], 1); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
986 | strcat (dest, "\n"); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
987 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
988 | if (strstr (line2, "buddy") == line2) { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
989 | name = strpbrk (line2, " \t\n\r\f") + 1; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
990 | strcat (dest, "b "); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
991 | for (i = 0; i < strcspn (name, "\n\r"); i++) |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
992 | if (name[i] != '\"') |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
993 | strncat (dest, &name[i], 1); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
994 | strcat (dest, "\n"); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
995 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
996 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
997 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
998 | return; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
999 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1000 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1001 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1002 | /* translate an AIM 4 buddylist (*.blt) to GAIM format */ |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1003 | void translate_blt (FILE *src_fp, char *dest) |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1004 | { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1005 | int i; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1006 | char line[BUF_LEN]; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1007 | char *buddy; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1008 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1009 | sprintf (dest, "m 1\n"); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1010 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1011 | while (strstr (fgets (line, BUF_LEN, src_fp), "Buddy") == NULL) ; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1012 | while (strstr (fgets (line, BUF_LEN, src_fp), "list") == NULL) ; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1013 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1014 | while (1) { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1015 | fgets (line, BUF_LEN, src_fp); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1016 | if (strchr (line, '}') != NULL) |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1017 | break; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1018 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1019 | /* Syntax starting with "<group> {" */ |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1020 | if (strchr (line, '{') != NULL) { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1021 | strcat (dest, "g "); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1022 | buddy = remove_spaces (strtok (line, "{")); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1023 | for (i = 0; i < strlen(buddy); i++) { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1024 | if (buddy[i] != '\"') |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1025 | strncat (dest, &buddy[i], 1); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1026 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1027 | strcat (dest, "\n"); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1028 | while (strchr (fgets (line, BUF_LEN, src_fp), '}') == NULL) { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1029 | buddy = remove_spaces (line); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1030 | strcat (dest, "b "); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1031 | if (strchr (buddy, '\"') != NULL) { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1032 | strncat (dest, &buddy[1], strlen(buddy)-3); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1033 | strcat (dest, "\n"); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1034 | } else |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1035 | strcat (dest, buddy); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1036 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1037 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1038 | /* Syntax "group buddy buddy ..." */ |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1039 | else { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1040 | buddy = remove_spaces (strtok (line, " \n")); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1041 | strcat (dest, "g "); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1042 | if (strchr (buddy, '\"') != NULL) { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1043 | strcat (dest, &buddy[1]); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1044 | strcat (dest, " "); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1045 | buddy = remove_spaces (strtok (NULL, " \n")); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1046 | while (strchr (buddy, '\"') == NULL) { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1047 | strcat (dest, buddy); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1048 | strcat (dest, " "); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1049 | buddy = remove_spaces (strtok (NULL, " \n")); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1050 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1051 | strncat (dest, buddy, strlen(buddy)-1); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1052 | } else { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1053 | strcat (dest, buddy); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1054 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1055 | strcat (dest, "\n"); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1056 | while ((buddy = remove_spaces (strtok (NULL, " \n"))) != NULL) { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1057 | strcat (dest, "b "); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1058 | if (strchr (buddy, '\"') != NULL) { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1059 | strcat (dest, &buddy[1]); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1060 | strcat (dest, " "); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1061 | buddy = remove_spaces (strtok (NULL, " \n")); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1062 | while (strchr (buddy, '\"') == NULL) { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1063 | strcat (dest, buddy); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1064 | strcat (dest, " "); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1065 | buddy = remove_spaces (strtok (NULL, " \n")); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1066 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1067 | strncat (dest, buddy, strlen(buddy)-1); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1068 | } else { |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1069 | strcat (dest, buddy); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1070 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1071 | strcat (dest, "\n"); |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1072 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1073 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1074 | } |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1075 | |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1076 | return; |
|
85f0ef25fe51
[gaim-migrate @ 694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
651
diff
changeset
|
1077 | } |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
1078 | |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
1079 | char *stylize(gchar *text, int length) |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
1080 | { |
|
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
1081 | gchar *buf; |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
1082 | char tmp[length]; |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
1083 | |
|
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
1084 | buf = g_malloc(length); |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
1085 | g_snprintf(buf, length, "%s", text); |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
1086 | |
|
831
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1087 | if (font_options & OPT_FONT_BOLD) { |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1088 | g_snprintf(tmp, length, "<B>%s</B>", buf); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1089 | strcpy(buf, tmp); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1090 | } |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1091 | |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1092 | if (font_options & OPT_FONT_ITALIC) { |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1093 | g_snprintf(tmp, length, "<I>%s</I>", buf); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1094 | strcpy(buf, tmp); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1095 | } |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1096 | |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1097 | if (font_options & OPT_FONT_UNDERLINE) { |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1098 | g_snprintf(tmp, length, "<U>%s</U>", buf); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1099 | strcpy(buf, tmp); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1100 | } |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1101 | |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1102 | if (font_options & OPT_FONT_STRIKE) { |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1103 | g_snprintf(tmp, length, "<S>%s</S>", buf); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1104 | strcpy(buf, tmp); |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1105 | } |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1106 | |
|
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1107 | if (font_options & OPT_FONT_FACE) { |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
1108 | g_snprintf(tmp, length, "<FONT FACE=\"%s\">%s</FONT>", fontface, buf); |
|
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
1109 | strcpy(buf, tmp); |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
1110 | } |
|
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
1111 | |
|
831
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1112 | if (font_options & OPT_FONT_FGCOL) { |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
1113 | g_snprintf(tmp, length, "<FONT COLOR=\"#%02X%02X%02X\">%s</FONT>", fgcolor.red, fgcolor.green, fgcolor.blue, buf); |
|
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
1114 | strcpy(buf, tmp); |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
1115 | } |
|
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
1116 | |
|
831
b1d5ab85f4e7
[gaim-migrate @ 841]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
804
diff
changeset
|
1117 | if (font_options & OPT_FONT_BGCOL) { |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
1118 | g_snprintf(tmp, length, "<BODY BGCOLOR=\"#%02X%02X%02X\">%s</BODY>", bgcolor.red, bgcolor.green, bgcolor.blue, buf); |
|
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
1119 | strcpy(buf, tmp); |
|
764
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
1120 | } |
|
92f08820867b
[gaim-migrate @ 774]
Todd Kulesza <fflewddur@users.sourceforge.net>
parents:
759
diff
changeset
|
1121 | |
|
765
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
1122 | return buf; |
|
048901ebbb85
[gaim-migrate @ 775]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
764
diff
changeset
|
1123 | } |
| 915 | 1124 | |
| 1125 | int set_dispstyle (int chat) | |
| 1126 | { | |
| 1127 | int dispstyle; | |
| 1128 | ||
| 1129 | if (chat) { | |
| 1130 | switch (display_options & (OPT_DISP_CHAT_BUTTON_TEXT | | |
| 1131 | OPT_DISP_CHAT_BUTTON_XPM)) { | |
| 1132 | case OPT_DISP_CHAT_BUTTON_TEXT: | |
| 1133 | dispstyle = 1; | |
| 1134 | break; | |
| 1135 | case OPT_DISP_CHAT_BUTTON_XPM: | |
| 1136 | dispstyle = 0; | |
| 1137 | break; | |
| 1138 | default: /* both or neither */ | |
| 1139 | dispstyle = 2; | |
| 1140 | break; | |
| 1141 | } | |
| 1142 | } else { | |
| 1143 | switch (display_options & (OPT_DISP_CONV_BUTTON_TEXT | | |
| 1144 | OPT_DISP_CONV_BUTTON_XPM)) { | |
| 1145 | case OPT_DISP_CONV_BUTTON_TEXT: | |
| 1146 | dispstyle = 1; | |
| 1147 | break; | |
| 1148 | case OPT_DISP_CONV_BUTTON_XPM: | |
| 1149 | dispstyle = 0; | |
| 1150 | break; | |
| 1151 | default: /* both or neither */ | |
| 1152 | dispstyle = 2; | |
| 1153 | break; | |
| 1154 | } | |
| 1155 | } | |
| 1156 | return dispstyle; | |
| 1157 | } | |
| 1009 | 1158 | |
| 1159 | ||
| 1160 | void show_usage (int mode, char *name) | |
| 1161 | { | |
| 1162 | switch (mode) { | |
| 1163 | case 0: /* full help text */ | |
| 1164 | printf ("Usage: %s [OPTION]...\n\n" | |
| 1165 | " -a, --acct display account editor window\n" | |
| 1166 | " -l, --login[=NAME] automatically login (optional argument NAME specifies\n" | |
| 1167 | " account(s) to use)\n" | |
| 1168 | " -u, --user=NAME use account NAME\n" | |
| 1169 | " -v, --version display version information window\n" | |
| 1170 | " -h, --help display this help and exit\n", name); | |
| 1171 | break; | |
| 1172 | case 1: /* short message */ | |
| 1173 | printf ("Try `%s -h' for more information.\n", name); | |
| 1174 | break; | |
| 1175 | } | |
| 1176 | } | |
| 1177 | ||
| 1178 | ||
| 1179 | void set_first_user (char *name) | |
| 1180 | { | |
| 1181 | struct aim_user *u; | |
| 1182 | ||
|
1030
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
1183 | u = find_user (name, -1); |
| 1009 | 1184 | |
| 1185 | if (!u) { /* new user */ | |
| 1186 | u = g_new0(struct aim_user, 1); | |
| 1187 | g_snprintf(u->username, sizeof(u->username), "%s", name); | |
| 1188 | u->protocol = 0 /* PROTO_TOC */; | |
| 1189 | aim_users = g_list_prepend (aim_users, u); | |
| 1190 | } else { /* user already exists */ | |
| 1191 | aim_users = g_list_remove (aim_users, u); | |
| 1192 | aim_users = g_list_prepend (aim_users, u); | |
| 1193 | } | |
| 1194 | save_prefs(); | |
| 1195 | } | |
| 1196 | ||
| 1197 | ||
| 1198 | /* <name> is a comma-separated list of names, or NULL | |
| 1199 | if NULL and there is at least one user defined in .gaimrc, try to login. | |
| 1200 | if not NULL, parse <name> into separate strings, look up each one in | |
| 1201 | .gaimrc and, if it's there, try to login. | |
| 1202 | returns: 0 if successful | |
| 1203 | -1 if no user was found that had a saved password | |
| 1204 | */ | |
| 1205 | int do_auto_login (char *name) | |
| 1206 | { | |
| 1207 | struct aim_user *u; | |
| 1208 | char **names, **n, *first = NULL; | |
| 1209 | int retval = -1; | |
| 1210 | ||
| 1211 | if (name != NULL) { /* list of names given */ | |
| 1212 | names = g_strsplit (name, ",", 32); | |
| 1213 | for (n = names; *n != NULL; n++) { | |
| 1214 | printf ("user %s...\n", *n); | |
|
1030
b9fa9eadc0a4
[gaim-migrate @ 1040]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1009
diff
changeset
|
1215 | u = find_user(*n, -1); |
| 1009 | 1216 | if (u) { /* found a user */ |
| 1217 | if (first == NULL) | |
| 1218 | first = g_strdup (*n); | |
| 1219 | if (u->options & OPT_USR_REM_PASS) { | |
| 1220 | printf ("got user %s\n", *n); | |
| 1221 | retval = 0; | |
| 1222 | serv_login(u); | |
| 1223 | } | |
| 1224 | } | |
| 1225 | } | |
| 1226 | /* make the first user listed the default */ | |
| 1227 | if (first != NULL) | |
| 1228 | set_first_user (first); | |
| 1229 | g_strfreev (names); | |
| 1230 | g_free (first); | |
| 1231 | } else { /* no name given, use default */ | |
| 1232 | u = (struct aim_user *)aim_users->data; | |
| 1233 | if (u->options & OPT_USR_REM_PASS) { | |
| 1234 | retval = 0; | |
| 1235 | serv_login(u); | |
| 1236 | } | |
| 1237 | } | |
| 1238 | ||
| 1239 | return retval; | |
| 1240 | } | |
| 1241 | ||
| 1035 | 1242 | |
| 1243 | int file_is_dir (char *path, GtkWidget *w) | |
| 1244 | { | |
| 1245 | struct stat st; | |
| 1246 | char *name; | |
| 1247 | ||
| 1248 | if (stat(path, &st) == 0 && S_ISDIR(st.st_mode)) { | |
| 1249 | /* append a / if needed */ | |
| 1250 | if (path[strlen(path)-1] != '/') | |
| 1251 | name = g_strconcat(path,"/",NULL); | |
| 1252 | else | |
| 1253 | name = g_strdup(path); | |
| 1254 | gtk_file_selection_set_filename(GTK_FILE_SELECTION(w), name); | |
| 1255 | g_free(name); | |
| 1256 | return 1; | |
| 1257 | } | |
| 1258 | ||
| 1259 | return 0; | |
| 1260 | } | |
|
1100
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1261 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1262 | GSList *message_split(char *message, int limit) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1263 | static GSList *ret = NULL; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1264 | int lastgood = 0, curgood = 0, curpos = 0, len = strlen(message); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1265 | gboolean intag = FALSE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1266 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1267 | if (ret) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1268 | GSList *tmp = ret; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1269 | while (tmp) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1270 | g_free(tmp->data); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1271 | tmp = g_slist_remove(tmp, tmp->data); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1272 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1273 | ret = NULL; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1274 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1275 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1276 | while (TRUE) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1277 | if (lastgood >= len) |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1278 | return ret; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1279 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1280 | if (len - lastgood < limit) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1281 | ret = g_slist_append(ret, g_strdup(&message[lastgood])); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1282 | return ret; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1283 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1284 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1285 | curgood = curpos = 0; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1286 | intag = FALSE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1287 | while (curpos <= limit) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1288 | if (isspace(message[curpos + lastgood]) && !intag) |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1289 | curgood = curpos; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1290 | if (message[curpos + lastgood] == '<') |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1291 | intag = TRUE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1292 | if (message[curpos + lastgood] == '>') |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1293 | intag = FALSE; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1294 | curpos++; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1295 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1296 | |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1297 | if (curgood) { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1298 | ret = g_slist_append(ret, g_strndup(&message[lastgood], curgood)); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1299 | if (isspace(message[curgood + lastgood])) |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1300 | lastgood += curgood + 1; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1301 | else |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1302 | lastgood += curgood; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1303 | } else { |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1304 | /* whoops, guess we have to fudge it here */ |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1305 | ret = g_slist_append(ret, g_strndup(&message[lastgood], limit)); |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1306 | lastgood += limit; |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1307 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1308 | } |
|
efc7d10c7826
[gaim-migrate @ 1110]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1087
diff
changeset
|
1309 | } |