src/protocols/zephyr/zephyr.c

Thu, 01 Jul 2004 15:57:38 +0000

author
Cole Kowalski
date
Thu, 01 Jul 2004 15:57:38 +0000
changeset 9435
b17d52fece0f
parent 9434
20e865677c77
child 9437
91fd42d0dc69
permissions
-rw-r--r--

[gaim-migrate @ 10256]
this patch had some little discussion, so the original comments about it
don't make too much sense now.

it makes the log viewwer further collapse things into months for things
older than the current month. for relatively short logs this might not be
wonderful, but it should help with very long logs. see patch #963827

oh and thanks to Cole Kowalski for this

committer: Luke Schierer <lschiere@pidgin.im>

2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2 /*
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 * gaim
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5 * Copyright (C) 1998-2001, Mark Spencer <markster@marko.net>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6 * Some code borrowed from GtkZephyr, by
7084
da83f7ead5c6 [gaim-migrate @ 7649]
Christian Hammond <chipx86@chipx86.com>
parents: 7070
diff changeset
7 * Jag/Sean Dilda <agrajag@linuxpower.org>/<smdilda@unity.ncsu.edu>
da83f7ead5c6 [gaim-migrate @ 7649]
Christian Hammond <chipx86@chipx86.com>
parents: 7070
diff changeset
8 * http://gtkzephyr.linuxpower.org/
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
9 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 * (at your option) any later version.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 * GNU General Public License for more details.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21 * along with this program; if not, write to the Free Software
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
23 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
24 */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
25 /* XXX eww */
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
26 #include "src/internal.h"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
27
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
28 #include "accountopt.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
29 #include "debug.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
30 #include "multi.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
31 #include "notify.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
32 #include "prpl.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
33 #include "server.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
34 #include "util.h"
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
35 #include "cmds.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
36
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
37 #include "zephyr/zephyr.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
38
8386
5b9e02f4c03d [gaim-migrate @ 9114]
Mark Doliner <markdoliner@pidgin.im>
parents: 8354
diff changeset
39 #include <strings.h>
5b9e02f4c03d [gaim-migrate @ 9114]
Mark Doliner <markdoliner@pidgin.im>
parents: 8354
diff changeset
40
8560
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
41 #define ZEPHYR_FALLBACK_CHARSET "ISO-8859-1"
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
42
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
43 extern Code_t ZGetLocations(ZLocations_t *, int *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
44 extern Code_t ZSetLocation(char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
45 extern Code_t ZUnsetLocation();
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
46
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
47 typedef struct _zframe zframe;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
48 typedef struct _zephyr_triple zephyr_triple;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
49
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
50 /* struct I need for zephyr_to_html */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
51 struct _zframe {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
52 /* true for everything but @color, since inside the parens of that one is
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
53 * the color. */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
54 gboolean has_closer;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
55 /* </i>, </font>, </b>, etc. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
56 char *closing;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
57 /* text including the opening html thingie. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
58 GString *text;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
59 struct _zframe *enclosing;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
60 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
61
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
62 struct _zephyr_triple {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
63 char *class;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
64 char *instance;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
65 char *recipient;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
66 char *name;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
67 gboolean open;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
68 int id;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
69 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
70
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
71 #define z_call(func) if (func != ZERR_NONE)\
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
72 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
73 #define z_call_r(func) if (func != ZERR_NONE)\
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
74 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
75 #define z_call_s(func, err) if (func != ZERR_NONE) {\
5606
5551bcc7e59b [gaim-migrate @ 6010]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
76 gaim_connection_error(zgc, err);\
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
77 return;\
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
78 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
79
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
80 char *local_zephyr_normalize(const char *);
7322
de15a9314c04 [gaim-migrate @ 7908]
Nathan Walp <nwalp@pidgin.im>
parents: 7262
diff changeset
81 static const char *zephyr_normalize(const GaimAccount *, const char *);
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
82 static const char *gaim_zephyr_get_realm();
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
83 static void zephyr_chat_set_topic(GaimConnection * gc, int id, const char *topic);
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
84
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
85 char *zephyr_strip_foreign_realm(const char* user){
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
86 /*
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
87 Takes in a username of the form username or username@realm
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
88 and returns:
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
89 username, if there is no realm, or the realm is the local realm
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
90 or:
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
91 username@realm if there is a realm and it is foreign
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
92 */
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
93 char *tmp = g_strdup(user);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
94 char *at = strchr(tmp,'@');
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
95 if (at && !g_ascii_strcasecmp(at+1,gaim_zephyr_get_realm())) {
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
96 /* We're passed in a username of the form user@users-realm */
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
97 char* tmp2;
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
98 *at = '\0';
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
99 tmp2 = g_strdup(tmp);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
100 g_free(tmp);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
101 return tmp2;
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
102 }
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
103 else {
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
104 /* We're passed in a username of the form user or user@foreign-realm */
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
105 return tmp;
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
106 }
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
107 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
108
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
109 /* this is so bad, and if Zephyr weren't so fucked up to begin with I
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
110 * wouldn't do this. but it is so i will. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
111 static guint32 nottimer = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
112 static guint32 loctimer = 0;
5606
5551bcc7e59b [gaim-migrate @ 6010]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
113 GaimConnection *zgc = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
114 static GList *pending_zloc_names = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
115 static GSList *subscrips = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
116 static int last_id = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
117
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
118 /* just for debugging */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
119 static void handle_unknown(ZNotice_t notice)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
120 {
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
121 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_packet: %s\n", notice.z_packet);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
122 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_version: %s\n", notice.z_version);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
123 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_kind: %d\n", (int)(notice.z_kind));
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
124 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_class: %s\n", notice.z_class);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
125 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_class_inst: %s\n", notice.z_class_inst);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
126 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_opcode: %s\n", notice.z_opcode);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
127 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_sender: %s\n", notice.z_sender);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
128 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_recipient: %s\n", notice.z_recipient);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
129 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_message: %s\n", notice.z_message);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
130 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_message_len: %d\n", notice.z_message_len);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
131 }
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
132
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
133
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
134 static zephyr_triple *new_triple(const char *c, const char *i, const char *r)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
135 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
136 zephyr_triple *zt;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
137
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
138 zt = g_new0(zephyr_triple, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
139 zt->class = g_strdup(c);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
140 zt->instance = g_strdup(i);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
141 zt->recipient = g_strdup(r);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
142 zt->name = g_strdup_printf("%s,%s,%s", c, i, r);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
143 zt->id = ++last_id;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
144 zt->open = FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
145 return zt;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
146 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
147
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
148 static void free_triple(zephyr_triple * zt)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
149 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
150 g_free(zt->class);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
151 g_free(zt->instance);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
152 g_free(zt->recipient);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
153 g_free(zt->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
154 g_free(zt);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
155 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
156
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
157 static const char *gaim_zephyr_get_sender()
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
158 {
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
159 /* will be useful once this plugin can use a backend other
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
160 than libzephyr */
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
161 return ZGetSender();
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
162 }
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
163
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
164 static const char *gaim_zephyr_get_realm()
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
165 {
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
166 /* will be useful once this plugin can use a backend other
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
167 than libzephyr */
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
168 return ZGetRealm();
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
169 }
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
170
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
171 /* returns true if zt1 is a subset of zt2. This function is used to
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
172 determine whether a zephyr sent to zt1 should be placed in the chat
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
173 with triple zt2
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
174
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
175 zt1 is a subset of zt2
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
176 iff. the classnames are identical ignoring case
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
177 AND. the instance names are identical (ignoring case), or zt2->instance is *.
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
178 AND. the recipient names are identical
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
179 */
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
180
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
181 static gboolean triple_subset(zephyr_triple * zt1, zephyr_triple * zt2)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
182 {
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
183 if (g_ascii_strcasecmp(zt2->class, zt1->class)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
184 return FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
185 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
186 if (g_ascii_strcasecmp(zt2->instance, zt1->instance) && g_ascii_strcasecmp(zt2->instance, "*")) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
187 return FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
188 }
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
189 if (g_ascii_strcasecmp(zt2->recipient, zt1->recipient)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
190 return FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
191 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
192 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
193 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
194
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
195 static zephyr_triple *find_sub_by_triple(zephyr_triple * zt)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
196 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
197 zephyr_triple *curr_t;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
198 GSList *curr = subscrips;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
199
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
200 while (curr) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
201 curr_t = curr->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
202 if (triple_subset(zt, curr_t))
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
203 return curr_t;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
204 curr = curr->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
205 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
206 return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
207 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
208
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
209 static zephyr_triple *find_sub_by_id(int id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
210 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
211 zephyr_triple *zt;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
212 GSList *curr = subscrips;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
213
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
214 while (curr) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
215 zt = curr->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
216 if (zt->id == id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
217 return zt;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
218 curr = curr->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
219 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
220 return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
221 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
222
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
223 /*
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
224 Converts strings to utf-8 if necessary using user specified encoding
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
225 */
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
226
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
227 static gchar *zephyr_recv_convert(gchar *string, int len)
8560
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
228 {
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
229 gchar *utf8;
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
230 GError *err = NULL;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
231
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
232 if (g_utf8_validate(string, len, NULL)) {
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
233 return g_strdup(string);
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
234 } else {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
235 utf8 = g_convert(string, len, "UTF-8", gaim_account_get_string(zgc->account, "encoding", ZEPHYR_FALLBACK_CHARSET), NULL, NULL, &err);
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
236 if (err) {
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
237 gaim_debug(GAIM_DEBUG_ERROR, "zephyr", "recv conversion error: %s\n", err->message);
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
238 utf8 = g_strdup(_("(There was an error converting this message. Check the 'Encoding' option in the Account Editor)"));
8954
105094d38e3b [gaim-migrate @ 9727]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8950
diff changeset
239 g_error_free(err);
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
240 }
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
241
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
242 return utf8;
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
243 }
8560
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
244 }
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
245
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
246 /* utility macros that are useful for zephyr_to_html */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
247
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
248 #define IS_OPENER(c) ((c == '{') || (c == '[') || (c == '(') || (c == '<'))
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
249 #define IS_CLOSER(c) ((c == '}') || (c == ']') || (c == ')') || (c == '>'))
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
250
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
251 /* This parses HTML formatting (put out by one of the gtkimhtml widgets
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
252 And converts it to zephyr formatting.
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
253 It currently deals properly with <b>, <br>, <i>, <font face=...>, <font color=...>,
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
254 It ignores <font back=...>
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
255 It does
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
256 <font size = "1 or 2" -> @small
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
257 3 or 4 @medium()
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
258 5,6, or 7 @large()
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
259 <a href is dealt with by ignoring the description and outputting the link
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
260 */
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
261
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
262 static char *html_to_zephyr(const char *message)
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
263 {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
264 int len, cnt, retcount;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
265 char *ret;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
266
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
267 len = strlen(message);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
268 ret = g_new0(char, len * 3);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
269
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
270 bzero(ret, len * 3);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
271 retcount = 0;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
272 cnt = 0;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
273 while (cnt <= len) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
274 if (message[cnt] == '<') {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
275 if (!g_ascii_strncasecmp(message + cnt + 1, "i>", 2)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
276 strncpy(ret + retcount, "@i(", 3);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
277 cnt += 3;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
278 retcount += 3;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
279 } else if (!g_ascii_strncasecmp(message + cnt + 1, "b>", 2)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
280 strncpy(ret + retcount, "@b(", 3);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
281 cnt += 3;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
282 retcount += 3;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
283 } else if (!g_ascii_strncasecmp(message + cnt + 1, "br>", 3)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
284 strncpy(ret + retcount, "\n", 1);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
285 cnt += 4;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
286 retcount += 1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
287 } else if (!g_ascii_strncasecmp(message + cnt + 1, "a href=\"", 8)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
288 cnt += 9;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
289 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
290 ret[retcount] = message[cnt];
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
291 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
292 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
293 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
294 cnt += 2;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
295 /* ignore descriptive string */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
296 while (g_ascii_strncasecmp(message + cnt, "</a>", 4) != 0) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
297 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
298 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
299 cnt += 4;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
300 } else if (!g_ascii_strncasecmp(message + cnt + 1, "font", 4)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
301 cnt += 5;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
302 while (!g_ascii_strncasecmp(message + cnt, " ", 1))
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
303 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
304 if (!g_ascii_strncasecmp(message + cnt, "color=\"", 7)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
305 cnt += 7;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
306 strncpy(ret + retcount, "@color(", 7);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
307 retcount += 7;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
308 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
309 ret[retcount] = message[cnt];
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
310 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
311 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
312 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
313 ret[retcount] = ')';
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
314 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
315 cnt += 2;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
316 } else if (!g_ascii_strncasecmp(message + cnt, "face=\"", 6)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
317 cnt += 6;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
318 strncpy(ret + retcount, "@font(", 6);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
319 retcount += 6;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
320 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
321 ret[retcount] = message[cnt];
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
322 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
323 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
324 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
325 ret[retcount] = ')';
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
326 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
327 cnt += 2;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
328 } else if (!g_ascii_strncasecmp(message + cnt, "size=\"", 6)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
329 cnt += 6;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
330 if ((message[cnt] == '1') || (message[cnt] == '2')) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
331 strncpy(ret + retcount, "@small(", 7);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
332 retcount += 7;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
333 } else if ((message[cnt] == '3')
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
334 || (message[cnt] == '4')) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
335 strncpy(ret + retcount, "@medium(", 8);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
336 retcount += 8;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
337 } else if ((message[cnt] == '5')
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
338 || (message[cnt] == '6')
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
339 || (message[cnt] == '7')) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
340 strncpy(ret + retcount, "@large(", 7);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
341 retcount += 7;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
342 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
343 cnt += 3;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
344 } else {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
345 /* Drop all unrecognized/misparsed font tags */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
346 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
347 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
348 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
349 cnt += 2;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
350 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
351 } else if (!g_ascii_strncasecmp(message + cnt + 1, "/i>", 3)
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
352 || !g_ascii_strncasecmp(message + cnt + 1, "/b>", 3)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
353 cnt += 4;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
354 ret[retcount] = ')';
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
355 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
356 } else if (!g_ascii_strncasecmp(message + cnt + 1, "/font>", 6)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
357 cnt += 7;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
358 strncpy(ret + retcount, "@font(fixed)", 12);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
359 retcount += 12;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
360 } else {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
361 /* Catch all for all unrecognized/misparsed <foo> tage */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
362 while (g_ascii_strncasecmp(message + cnt, ">", 1) != 0) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
363 ret[retcount] = message[cnt];
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
364 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
365 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
366 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
367 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
368 } else {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
369 /* Duh */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
370 ret[retcount] = message[cnt];
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
371 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
372 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
373 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
374 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
375 return ret;
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
376 }
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
377
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
378 /* this parses zephyr formatting and converts it to html. For example, if
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
379 * you pass in "@{@color(blue)@i(hello)}" you should get out
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
380 * "<font color=blue><i>hello</i></font>". */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
381 static char *zephyr_to_html(char *message)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
382 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
383 int len, cnt;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
384 zframe *frames, *curr;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
385 char *ret;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
386
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
387 frames = g_new(zframe, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
388 frames->text = g_string_new("");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
389 frames->enclosing = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
390 frames->closing = "";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
391 frames->has_closer = FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
392
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
393 len = strlen(message);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
394 cnt = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
395 while (cnt <= len) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
396 if (message[cnt] == '@') {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
397 zframe *new_f;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
398 char *buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
399 int end;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
400
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
401 for (end = 1; (cnt + end) <= len && !IS_OPENER(message[cnt + end])
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
402 && !IS_CLOSER(message[cnt + end]); end++);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
403 buf = g_new0(char, end);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
404
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
405 if (end) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
406 g_snprintf(buf, end, "%s", message + cnt + 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
407 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
408 if (!g_ascii_strcasecmp(buf, "italic") || !g_ascii_strcasecmp(buf, "i")) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
409 new_f = g_new(zframe, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
410 new_f->enclosing = frames;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
411 new_f->text = g_string_new("<i>");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
412 new_f->closing = "</i>";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
413 new_f->has_closer = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
414 frames = new_f;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
415 cnt += end + 1; /* cnt points to char after opener */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
416 } else if (!g_ascii_strcasecmp(buf, "small")) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
417 new_f = g_new(zframe, 1);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
418 new_f->enclosing = frames;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
419 new_f->text = g_string_new("<font size=\"1\">");
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
420 new_f->closing = "</font>";
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
421 frames = new_f;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
422 cnt += end + 1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
423 } else if (!g_ascii_strcasecmp(buf, "medium")) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
424 new_f = g_new(zframe, 1);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
425 new_f->enclosing = frames;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
426 new_f->text = g_string_new("<font size=\"3\">");
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
427 new_f->closing = "</font>";
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
428 frames = new_f;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
429 cnt += end + 1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
430 } else if (!g_ascii_strcasecmp(buf, "large")) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
431 new_f = g_new(zframe, 1);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
432 new_f->enclosing = frames;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
433 new_f->text = g_string_new("<font size=\"7\">");
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
434 new_f->closing = "</font>";
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
435 frames = new_f;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
436 cnt += end + 1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
437 } else if (!g_ascii_strcasecmp(buf, "bold")
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
438 || !g_ascii_strcasecmp(buf, "b")) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
439 new_f = g_new(zframe, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
440 new_f->enclosing = frames;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
441 new_f->text = g_string_new("<b>");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
442 new_f->closing = "</b>";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
443 new_f->has_closer = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
444 frames = new_f;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
445 cnt += end + 1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
446 } else if (!g_ascii_strcasecmp(buf, "font")) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
447 cnt += end + 1;
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
448 new_f = g_new(zframe, 1);
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
449 new_f->enclosing = frames;
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
450 new_f->text = g_string_new("<font face=");
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
451 for (; (cnt <= len) && !IS_CLOSER(message[cnt]); cnt++) {
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
452 g_string_append_c(new_f->text, message[cnt]);
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
453 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
454 cnt++; /* point to char after closer */
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
455 g_string_append_c(new_f->text, '>');
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
456 new_f->closing = "</font>";
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
457 new_f->has_closer = FALSE;
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
458 frames = new_f;
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
459 } else if (!g_ascii_strcasecmp(buf, "color")) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
460 cnt += end + 1;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
461 new_f = g_new(zframe, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
462 new_f->enclosing = frames;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
463 new_f->text = g_string_new("<font color=");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
464 for (; (cnt <= len) && !IS_CLOSER(message[cnt]); cnt++) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
465 g_string_append_c(new_f->text, message[cnt]);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
466 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
467 cnt++; /* point to char after closer */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
468 g_string_append_c(new_f->text, '>');
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
469 new_f->closing = "</font>";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
470 new_f->has_closer = FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
471 frames = new_f;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
472 } else if (!g_ascii_strcasecmp(buf, "")) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
473 new_f = g_new(zframe, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
474 new_f->enclosing = frames;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
475 new_f->text = g_string_new("");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
476 new_f->closing = "";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
477 new_f->has_closer = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
478 frames = new_f;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
479 cnt += end + 1; /* cnt points to char after opener */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
480 } else {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
481 if ((cnt + end) > len) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
482 g_string_append_c(frames->text, '@');
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
483 cnt++;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
484 } else if (IS_CLOSER(message[cnt + end])) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
485 /* We have @chars..closer . This is
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
486 merely a sequence of chars that isn't a formatting tag
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
487 */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
488 int tmp = cnt;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
489
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
490 while (tmp <= cnt + end) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
491 g_string_append_c(frames->text, message[tmp]);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
492 tmp++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
493 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
494 cnt += end + 1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
495 } else {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
496 /* unrecognized thingie. act like it's not there, but we
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
497 * still need to take care of the corresponding closer,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
498 * make a frame that does nothing. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
499 new_f = g_new(zframe, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
500 new_f->enclosing = frames;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
501 new_f->text = g_string_new("");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
502 new_f->closing = "";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
503 new_f->has_closer = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
504 frames = new_f;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
505 cnt += end + 1; /* cnt points to char after opener */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
506 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
507 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
508 } else if (IS_CLOSER(message[cnt])) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
509 zframe *popped;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
510 gboolean last_had_closer;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
511
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
512 if (frames->enclosing) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
513 do {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
514 popped = frames;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
515 frames = frames->enclosing;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
516 g_string_append(frames->text, popped->text->str);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
517 g_string_append(frames->text, popped->closing);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
518 g_string_free(popped->text, TRUE);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
519 last_had_closer = popped->has_closer;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
520 g_free(popped);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
521 } while (frames && frames->enclosing && !last_had_closer);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
522 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
523 g_string_append_c(frames->text, message[cnt]);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
524 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
525 cnt++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
526 } else if (message[cnt] == '\n') {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
527 g_string_append(frames->text, "<br>");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
528 cnt++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
529 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
530 g_string_append_c(frames->text, message[cnt++]);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
531 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
532 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
533 /* go through all the stuff that they didn't close */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
534 while (frames->enclosing) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
535 curr = frames;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
536 g_string_append(frames->enclosing->text, frames->text->str);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
537 g_string_append(frames->enclosing->text, frames->closing);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
538 g_string_free(frames->text, TRUE);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
539 frames = frames->enclosing;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
540 g_free(curr);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
541 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
542 ret = frames->text->str;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
543 g_string_free(frames->text, FALSE);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
544 g_free(frames);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
545 return ret;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
546 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
547
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
548 static gboolean pending_zloc(char *who)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
549 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
550 GList *curr;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
551
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
552 for (curr = pending_zloc_names; curr != NULL; curr = curr->next) {
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
553 char* normalized_who = local_zephyr_normalize(who);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
554 if (!g_ascii_strcasecmp(normalized_who, (char *)curr->data)) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
555 g_free((char *)curr->data);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
556 pending_zloc_names = g_list_remove(pending_zloc_names, curr->data);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
557 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
558 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
559 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
560 return FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
561 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
562
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
563 /* Called when the server notifies us a message couldn't get sent */
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
564
8559
2fe36fe190bc [gaim-migrate @ 9303]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8451
diff changeset
565 static void message_failed(ZNotice_t notice, struct sockaddr_in from)
2fe36fe190bc [gaim-migrate @ 9303]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8451
diff changeset
566 {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
567 if (g_ascii_strcasecmp(notice.z_class, "message")) {
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
568 gchar* chat_failed = g_strdup_printf(_("Unable send to chat %s,%s,%s"),notice.z_class,notice.z_class_inst,notice.z_recipient);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
569 gaim_notify_error(zgc,"",chat_failed,NULL);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
570 g_free(chat_failed);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
571 } else {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
572 gaim_notify_error(zgc, notice.z_recipient, _("User is offline"), NULL);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
573 }
8559
2fe36fe190bc [gaim-migrate @ 9303]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8451
diff changeset
574 }
2fe36fe190bc [gaim-migrate @ 9303]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8451
diff changeset
575
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
576 static void handle_message(ZNotice_t notice, struct sockaddr_in from)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
577 {
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
578 if (!g_ascii_strcasecmp(notice.z_class, LOGIN_CLASS)) {
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
579 /* well, we'll be updating in 20 seconds anyway, might as well ignore this. */
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
580 } else if (!g_ascii_strcasecmp(notice.z_class, LOCATE_CLASS)) {
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
581 if (!g_ascii_strcasecmp(notice.z_opcode, LOCATE_LOCATE)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
582 int nlocs;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
583 char *user;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
584 GaimBuddy *b;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
585
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
586 if (ZParseLocations(&notice, NULL, &nlocs, &user) != ZERR_NONE)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
587 return;
8435
7475bfdcaa20 [gaim-migrate @ 9165]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8386
diff changeset
588
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
589 if ((b = gaim_find_buddy(zgc->account, user)) == NULL) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
590 char *e = strchr(user, '@');
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
591
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
592 if (e && !g_ascii_strcasecmp(e + 1, gaim_zephyr_get_realm())) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
593 *e = '\0';
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
594 }
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4682
diff changeset
595 b = gaim_find_buddy(zgc->account, user);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
596 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
597 if ((b && pending_zloc(b->name)) || pending_zloc(user)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
598 ZLocations_t locs;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
599 int one = 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
600 GString *str = g_string_new("");
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
601
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
602 g_string_append_printf(str, _("<b>User:</b> %s<br>"), b ? b->name : user);
8435
7475bfdcaa20 [gaim-migrate @ 9165]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8386
diff changeset
603 if (b && b->alias)
5132
9b087ef3f525 [gaim-migrate @ 5495]
Mark Doliner <markdoliner@pidgin.im>
parents: 4793
diff changeset
604 g_string_append_printf(str, _("<b>Alias:</b> %s<br>"), b->alias);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
605 if (!nlocs) {
5132
9b087ef3f525 [gaim-migrate @ 5495]
Mark Doliner <markdoliner@pidgin.im>
parents: 4793
diff changeset
606 g_string_append_printf(str, _("<br>Hidden or not logged-in"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
607 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
608 for (; nlocs > 0; nlocs--) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
609 ZGetLocations(&locs, &one);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
610 g_string_append_printf(str, _("<br>At %s since %s"), locs.host, locs.time);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
611 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
612 gaim_notify_formatted(zgc, NULL, _("Buddy Information"), NULL, str->str, NULL, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
613 g_string_free(str, TRUE);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
614 } else
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4687
diff changeset
615 serv_got_update(zgc, b->name, nlocs, 0, 0, 0, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
616
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
617 g_free(user);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
618 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
619 } else {
8560
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
620 char *buf, *buf2, *buf3;
2804
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
621 char *send_inst;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
622 GaimConversation *gconv1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
623 GaimConvChat *gcc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
624 char *ptr = notice.z_message + strlen(notice.z_message) + 1;
8876
b1992a365b79 [gaim-migrate @ 9645]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8749
diff changeset
625 int len = notice.z_message_len - (strlen(notice.z_message) +1);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
626 char *sendertmp = g_strdup_printf("%s", gaim_zephyr_get_sender());
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7084
diff changeset
627 GaimConvImFlags flags = 0;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
628
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
629 if (len > 0) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
630 gchar *tmpescape;
8560
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
631
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
632 buf = g_malloc(len + 1);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
633 g_snprintf(buf, len + 1, "%s", ptr);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
634 g_strchomp(buf);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
635 tmpescape = gaim_escape_html(buf);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
636 buf2 = zephyr_to_html(tmpescape);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
637 buf3 = zephyr_recv_convert(buf2, strlen(buf2));
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
638 g_free(buf2);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
639 g_free(buf);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
640 g_free(tmpescape);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
641
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
642 if (!g_ascii_strcasecmp(notice.z_class, "MESSAGE") && !g_ascii_strcasecmp(notice.z_class_inst, "PERSONAL")
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
643 && !g_ascii_strcasecmp(notice.z_recipient,gaim_zephyr_get_sender())) {
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
644 gchar* stripped_sender;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
645 if (!g_ascii_strcasecmp(notice.z_message, "Automated reply:"))
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7084
diff changeset
646 flags |= GAIM_CONV_IM_AUTO_RESP;
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
647 stripped_sender = zephyr_strip_foreign_realm(notice.z_sender);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
648 serv_got_im(zgc, stripped_sender, buf3, flags, time(NULL));
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
649 g_free(stripped_sender);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
650 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
651 zephyr_triple *zt1, *zt2;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
652
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
653 zt1 = new_triple(notice.z_class, notice.z_class_inst, notice.z_recipient);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
654 zt2 = find_sub_by_triple(zt1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
655 if (!zt2) {
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
656 /* This is a server supplied subscription */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
657 subscrips = g_slist_append(subscrips, zt1);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
658 zt2 = find_sub_by_triple(zt1);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
659 }
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
660 /*else { */
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
661 GList *gltmp;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
662 int found = 0;
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
663 gchar *send_inst_utf8;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
664 /* GError *err; */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
665
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
666 if (!zt2->open) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
667 zt2->open = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
668 serv_got_joined_chat(zgc, zt2->id, zt2->name);
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
669 zephyr_chat_set_topic(zgc,zt2->id,notice.z_class_inst);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
670 }
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
671 g_free(sendertmp); /* fix memory leak? */
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
672 /* If the person is in the default Realm, then strip the
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
673 Realm from the sender field */
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
674 sendertmp = zephyr_strip_foreign_realm(notice.z_sender);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
675 send_inst = g_strdup_printf("%s %s",sendertmp,notice.z_class_inst);
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
676 send_inst_utf8 = zephyr_recv_convert(send_inst, strlen(send_inst));
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
677 if (!send_inst_utf8) {
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
678 fprintf(stderr, "zephyr: send_inst %s became null\n",send_inst);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
679 gaim_debug(GAIM_DEBUG_ERROR, "zephyr","send_inst %s became null\n", send_inst);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
680 send_inst_utf8 = "malformed instance";
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
681 }
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
682
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
683 serv_got_chat_in(zgc, zt2->id, send_inst_utf8, FALSE, buf3, time(NULL));
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
684 g_free(send_inst);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
685 gconv1 = gaim_find_conversation_with_account(zt2->name, zgc->account);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
686 gcc = gaim_conversation_get_chat_data(gconv1);
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
687
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
688 for (gltmp = gaim_conv_chat_get_users(gcc); gltmp; gltmp = gltmp->next) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
689 if (!g_ascii_strcasecmp(gltmp->data, sendertmp))
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
690 found = 1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
691 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
692 if (!found) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
693 /* force interpretation in network byte order */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
694 unsigned char *addrs = (unsigned char *)&(notice.z_sender_addr.s_addr);
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
695 gchar* ipaddr = g_strdup_printf("%hhd.%hhd.%hhd.%hhd", (unsigned char)addrs[0],
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
696 (unsigned char)addrs[1], (unsigned char)addrs[2],
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
697 (unsigned char) addrs[3]);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
698
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
699 gaim_conv_chat_add_user(gcc, sendertmp, ipaddr);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
700 g_free(ipaddr); /* fix memory leak? */
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
701
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
702 }
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
703 g_free(sendertmp);
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
704 g_free(send_inst_utf8);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
705
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
706 /* } */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
707 free_triple(zt1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
708 }
8560
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
709 g_free(buf3);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
710 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
711 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
712 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
713
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
714 static gint check_notify(gpointer data)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
715 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
716 while (ZPending()) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
717 ZNotice_t notice;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
718 struct sockaddr_in from;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
719
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
720 z_call_r(ZReceiveNotice(&notice, &from));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
721
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
722 switch (notice.z_kind) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
723 case UNSAFE:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
724 case UNACKED:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
725 case ACKED:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
726 handle_message(notice, from);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
727 break;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
728 case SERVACK:
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
729 if (!(g_ascii_strcasecmp(notice.z_message, ZSRVACK_NOTSENT))) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
730 message_failed(notice, from);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
731 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
732 break;
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
733 case CLIENTACK:
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
734 gaim_debug(GAIM_DEBUG_ERROR,"zephyr", "Client ack received\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
735 default:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
736 /* we'll just ignore things for now */
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
737 handle_unknown(notice);
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
738 gaim_debug(GAIM_DEBUG_ERROR, "zephyr", "Unhandled notice.\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
739 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
740 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
741
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
742 ZFreeNotice(&notice);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
743 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
744
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
745 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
746 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
747
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
748 static gint check_loc(gpointer data)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
749 {
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
750 GaimBlistNode *gnode, *cnode, *bnode;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
751 ZAsyncLocateData_t ald;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
752
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
753 ald.user = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
754 memset(&(ald.uid), 0, sizeof(ZUnique_Id_t));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
755 ald.version = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
756
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
757 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
758 if (!GAIM_BLIST_NODE_IS_GROUP(gnode))
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
759 continue;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
760 for (cnode = gnode->child; cnode; cnode = cnode->next) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
761 if (!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
762 continue;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
763 for (bnode = cnode->child; bnode; bnode = bnode->next) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
764 GaimBuddy *b = (GaimBuddy *) bnode;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
765
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
766 if (!GAIM_BLIST_NODE_IS_BUDDY(bnode))
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
767 continue;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
768 if (b->account->gc == zgc) {
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7126
diff changeset
769 const char *chk;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
770
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
771 chk = local_zephyr_normalize(b->name);
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
772 /* doesn't matter if this fails or not; we'll just move on to the next one */
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
773 ZRequestLocations(chk, &ald, UNACKED, ZAUTH);
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
774 g_free(ald.user);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
775 g_free(ald.version);
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
776 }
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4227
diff changeset
777 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
778 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
779 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
780
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
781 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
782 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
783
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
784 static char *get_exposure_level()
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
785 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
786 char *exposure = ZGetVariable("exposure");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
787
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
788 if (!exposure)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
789 return EXPOSE_REALMVIS;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
790 if (!g_ascii_strcasecmp(exposure, EXPOSE_NONE))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
791 return EXPOSE_NONE;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
792 if (!g_ascii_strcasecmp(exposure, EXPOSE_OPSTAFF))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
793 return EXPOSE_OPSTAFF;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
794 if (!g_ascii_strcasecmp(exposure, EXPOSE_REALMANN))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
795 return EXPOSE_REALMANN;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
796 if (!g_ascii_strcasecmp(exposure, EXPOSE_NETVIS))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
797 return EXPOSE_NETVIS;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
798 if (!g_ascii_strcasecmp(exposure, EXPOSE_NETANN))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
799 return EXPOSE_NETANN;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
800 return EXPOSE_REALMVIS;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
801 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
802
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
803 static void strip_comments(char *str)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
804 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
805 char *tmp = strchr(str, '#');
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
806
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
807 if (tmp)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
808 *tmp = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
809 g_strchug(str);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
810 g_strchomp(str);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
811 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
812
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
813 static void process_zsubs()
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
814 {
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
815 /* Loads zephyr chats "(subscriptions) from ~/.zephyr.subs, and
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
816 registers (subscribes to) them on the server */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
817
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
818 /* XXX write subscriptions into the buddy list somehow "a Zephyr Chats group?"*/
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
819 /* XXX deal with unsubscriptions */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
820 /* XXX deal with punts */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
821
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
822 FILE *f;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
823 gchar *fname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
824 gchar buff[BUFSIZ];
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
825
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
826 fname = g_strdup_printf("%s/.zephyr.subs", gaim_home_dir());
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
827 f = fopen(fname, "r");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
828 if (f) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
829 char **triple;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
830 ZSubscription_t sub;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
831 char *recip;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
832
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
833 while (fgets(buff, BUFSIZ, f)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
834 strip_comments(buff);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
835 if (buff[0]) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
836 triple = g_strsplit(buff, ",", 3);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
837 if (triple[0] && triple[1]) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
838 char *tmp = g_strdup_printf("%s", gaim_zephyr_get_sender());
2804
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
839 char *atptr;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
840
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
841 sub.zsub_class = triple[0];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
842 sub.zsub_classinst = triple[1];
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
843 if (triple[2] == NULL) {
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
844 recip = g_malloc0(1);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
845 } else if (!g_ascii_strcasecmp(triple[2], "%me%")) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
846 recip = g_strdup_printf("%s", gaim_zephyr_get_sender());
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
847 } else if (!g_ascii_strcasecmp(triple[2], "*")) {
2804
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
848 /* wildcard
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
849 * form of class,instance,* */
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
850 recip = g_malloc0(1);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
851 } else if (!g_ascii_strcasecmp(triple[2], tmp)) {
2804
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
852 /* form of class,instance,aatharuv@ATHENA.MIT.EDU */
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
853 recip = g_strdup(triple[2]);
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
854 } else if ((atptr = strchr(triple[2], '@')) != NULL) {
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
855 /* form of class,instance,*@ANDREW.CMU.EDU
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
856 * class,instance,@ANDREW.CMU.EDU
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
857 * If realm is local realm, blank recipient, else
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
858 * @REALM-NAME
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
859 */
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
860 char *realmat = g_strdup_printf("@%s",
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
861 gaim_zephyr_get_realm());
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
862
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
863 if (!g_ascii_strcasecmp(atptr, realmat))
2804
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
864 recip = g_malloc0(1);
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
865 else
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
866 recip = g_strdup(atptr);
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
867 g_free(realmat);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
868 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
869 recip = g_strdup(triple[2]);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
870 }
2804
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
871 g_free(tmp);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
872 sub.zsub_recipient = recip;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
873 if (ZSubscribeTo(&sub, 1, 0) != ZERR_NONE) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
874 gaim_debug(GAIM_DEBUG_ERROR, "zephyr", "Couldn't subscribe to %s, %s, %s\n", sub.zsub_class, sub.zsub_classinst, sub.zsub_recipient);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
875 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
876 subscrips = g_slist_append(subscrips, new_triple(triple[0], triple[1], recip));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
877 g_free(recip);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
878 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
879 g_strfreev(triple);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
880 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
881 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
882 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
883 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
884
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
885 static void process_anyone()
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
886 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
887 FILE *fd;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
888 gchar buff[BUFSIZ], *filename;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
889 GaimGroup *g;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
890 GaimBuddy *b;
4775
239cb803fb1d [gaim-migrate @ 5095]
Mark Doliner <markdoliner@pidgin.im>
parents: 4770
diff changeset
891
239cb803fb1d [gaim-migrate @ 5095]
Mark Doliner <markdoliner@pidgin.im>
parents: 4770
diff changeset
892 if (!(g = gaim_find_group(_("Anyone")))) {
239cb803fb1d [gaim-migrate @ 5095]
Mark Doliner <markdoliner@pidgin.im>
parents: 4770
diff changeset
893 g = gaim_group_new(_("Anyone"));
239cb803fb1d [gaim-migrate @ 5095]
Mark Doliner <markdoliner@pidgin.im>
parents: 4770
diff changeset
894 gaim_blist_add_group(g, NULL);
239cb803fb1d [gaim-migrate @ 5095]
Mark Doliner <markdoliner@pidgin.im>
parents: 4770
diff changeset
895 }
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
896
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
897 filename = g_strconcat(gaim_home_dir(), "/.anyone", NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
898 if ((fd = fopen(filename, "r")) != NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
899 while (fgets(buff, BUFSIZ, fd)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
900 strip_comments(buff);
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4682
diff changeset
901 if (buff[0]) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
902 if (!(b = gaim_find_buddy(zgc->account, buff))) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
903 b = gaim_buddy_new(zgc->account, buff, NULL);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
904 gaim_blist_add_buddy(b, NULL, g, NULL);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
905 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
906 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
907 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
908 fclose(fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
909 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
910 g_free(filename);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
911 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
912
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
913 static void zephyr_login(GaimAccount * account)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
914 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
915 ZSubscription_t sub;
9427
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
916
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
917 if (zgc) {
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5234
diff changeset
918 gaim_notify_error(account->gc, NULL,
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
919 _("Already logged in with Zephyr"), _("Because Zephyr uses your system username, you " "are unable to have multiple accounts on it " "when logged in as the same user."));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
920 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
921 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
922
5606
5551bcc7e59b [gaim-migrate @ 6010]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
923 zgc = gaim_account_get_connection(account);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
924 zgc->flags |= GAIM_CONNECTION_HTML;
8645
8446e0a232e0 [gaim-migrate @ 9397]
Mark Doliner <markdoliner@pidgin.im>
parents: 8644
diff changeset
925 gaim_connection_update_progress(zgc, _("Connecting"), 0, 2);
8446e0a232e0 [gaim-migrate @ 9397]
Mark Doliner <markdoliner@pidgin.im>
parents: 8644
diff changeset
926
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
927 z_call_s(ZInitialize(), "Couldn't initialize zephyr");
9427
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
928 z_call_s(ZOpenPort(NULL), "Couldn't open port");
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
929 z_call_s(ZSetLocation((char *)
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
930 gaim_account_get_string(zgc->account, "exposure_level", EXPOSE_REALMVIS)), "Couldn't set location");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
931
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
932 sub.zsub_class = "MESSAGE";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
933 sub.zsub_classinst = "PERSONAL";
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
934 sub.zsub_recipient = (char *)gaim_zephyr_get_sender();
9427
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
935
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
936 /* we don't care if this fails. i'm lying right now. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
937 if (ZSubscribeTo(&sub, 1, 0) != ZERR_NONE) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
938 gaim_debug(GAIM_DEBUG_ERROR, "zephyr", "Couldn't subscribe to messages!\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
939 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
940
5606
5551bcc7e59b [gaim-migrate @ 6010]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
941 gaim_connection_set_state(zgc, GAIM_CONNECTED);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
942 serv_finish_login(zgc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
943
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
944 process_anyone();
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
945 process_zsubs();
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
946
8273
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8212
diff changeset
947 nottimer = gaim_timeout_add(100, check_notify, NULL);
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8212
diff changeset
948 loctimer = gaim_timeout_add(20000, check_loc, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
949 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
950
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
951 static void write_zsubs()
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
952 {
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
953 /* Exports subscription (chat) list back to
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
954 * .zephyr.subs
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
955 * XXX deal with %host%, %canon%, unsubscriptions, and negative subscriptions (punts?)
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
956 */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
957
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
958 GSList *s = subscrips;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
959 zephyr_triple *zt;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
960 FILE *fd;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
961 char *fname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
962
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
963 char **triple;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
964
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
965 fname = g_strdup_printf("%s/.zephyr.subs", gaim_home_dir());
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
966 fd = fopen(fname, "w");
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
967
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
968 if (!fd) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
969 g_free(fname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
970 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
971 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
972
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
973 while (s) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
974 zt = s->data;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
975 triple = g_strsplit(zt->name, ",", 3);
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
976 if (triple[2] != NULL) {
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
977 if (!g_ascii_strcasecmp(triple[2], "")) {
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
978 fprintf(fd, "%s,%s,*\n", triple[0], triple[1]);
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
979 } else if (!g_ascii_strcasecmp(triple[2], gaim_zephyr_get_sender())) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
980 fprintf(fd, "%s,%s,%%me%%\n", triple[0], triple[1]);
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
981 } else {
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
982 fprintf(fd, "%s\n", zt->name);
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
983 }
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
984 } else {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
985 fprintf(fd, "%s,%s,*\n", triple[0], triple[1]);
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
986 }
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
987 g_free(triple);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
988 s = s->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
989 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
990 g_free(fname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
991 fclose(fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
992 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
993
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
994 static void write_anyone()
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
995 {
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
996 GaimBlistNode *gnode, *cnode, *bnode;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
997 GaimBuddy *b;
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
998 char *ptr, *fname, *ptr2;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
999 FILE *fd;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1000
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
1001 fname = g_strdup_printf("%s/.anyone", gaim_home_dir());
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1002 fd = fopen(fname, "w");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1003 if (!fd) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1004 g_free(fname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1005 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1006 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1007
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1008 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1009 if (!GAIM_BLIST_NODE_IS_GROUP(gnode))
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
1010 continue;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1011 for (cnode = gnode->child; cnode; cnode = cnode->next) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1012 if (!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
1013 continue;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1014 for (bnode = cnode->child; bnode; bnode = bnode->next) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1015 if (!GAIM_BLIST_NODE_IS_BUDDY(bnode))
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1016 continue;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1017 b = (GaimBuddy *) bnode;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1018 if (b->account == zgc->account) {
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1019 if ((ptr = strchr(b->name, '@')) != NULL) {
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1020 ptr2 = ptr + 1;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1021 /* We should only strip the realm name if the principal
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1022 is in the user's realm
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1023 */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1024 if (!g_ascii_strcasecmp(ptr2, gaim_zephyr_get_realm())) {
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1025 *ptr = '\0';
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1026 }
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4227
diff changeset
1027 }
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1028 fprintf(fd, "%s\n", b->name);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1029 if (ptr)
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1030 *ptr = '@';
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
1031 }
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
1032 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1033 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1034 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1035
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1036 fclose(fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1037 g_free(fname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1038 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1039
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1040 static void zephyr_close(GaimConnection * gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1041 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1042 GList *l;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1043 GSList *s;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1044
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1045 l = pending_zloc_names;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1046 while (l) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1047 g_free((char *)l->data);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1048 l = l->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1049 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1050 g_list_free(pending_zloc_names);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1051
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1052 if (gaim_account_get_bool(zgc->account, "write_anyone", FALSE))
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1053 write_anyone();
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1054
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1055 if (gaim_account_get_bool(zgc->account, "write_zsubs", FALSE))
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1056 write_zsubs();
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1057
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1058 s = subscrips;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1059 while (s) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1060 free_triple((zephyr_triple *) s->data);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1061 s = s->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1062 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1063 g_slist_free(subscrips);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1064
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1065 if (nottimer)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
1066 gaim_timeout_remove(nottimer);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1067 nottimer = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1068 if (loctimer)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
1069 gaim_timeout_remove(loctimer);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1070 loctimer = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1071 zgc = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1072 z_call(ZCancelSubscriptions(0));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1073 z_call(ZUnsetLocation());
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1074 z_call(ZClosePort());
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1075 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1076
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1077 static int zephyr_send_message(char* zclass, char* instance, char* recipient, const char *im,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1078 const char *sig) ;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1079
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1080 const char * zephyr_get_signature()
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1081 {
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1082 const char * sig;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1083 sig = ZGetVariable("zwrite-signature");
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1084 if (!sig) {
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1085 sig = g_get_real_name();
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1086 }
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1087 return sig;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1088 }
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1089
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1090 static int zephyr_chat_send(GaimConnection * gc, int id, const char *im)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1091 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1092 zephyr_triple *zt;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1093 const char *sig;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1094 GaimConversation *gconv1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1095 GaimConvChat *gcc;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1096 char *inst;
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1097 char *recipient;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1098
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1099 zt = find_sub_by_id(id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1100 if (!zt)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1101 /* this should never happen. */
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
1102 return -EINVAL;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1103
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1104 sig = zephyr_get_signature();
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1105
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1106 gconv1 = gaim_find_conversation_with_account(zt->name, zgc->account);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1107 gcc = gaim_conversation_get_chat_data(gconv1);
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1108
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1109 if (!(inst = (char *)gaim_conv_chat_get_topic(gcc)))
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1110 inst = g_strdup("PERSONAL");
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1111
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1112 if (!g_ascii_strcasecmp(zt->recipient, "*"))
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1113 recipient = local_zephyr_normalize("");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1114 else
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1115 recipient = local_zephyr_normalize(zt->recipient);
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
1116
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1117 zephyr_send_message(zt->class,inst,recipient,im,sig);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1118 /* g_free(inst); */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1119 /* g_free(recipient); */
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
1120 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1121 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1122
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1123
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1124 static int zephyr_send_im(GaimConnection * gc, const char *who, const char *im, GaimConvImFlags flags)
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1125 {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1126 const char *sig;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1127
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7084
diff changeset
1128 if (flags & GAIM_CONV_IM_AUTO_RESP)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1129 sig = "Automated reply:";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1130 else {
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1131 sig = zephyr_get_signature();
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1132 }
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1133 zephyr_send_message("MESSAGE","PERSONAL",local_zephyr_normalize(who),im,sig);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1134
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1135 return 1;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1136 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1137
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1138 static int zephyr_send_message(char* zclass, char* instance, char* recipient, const char *im,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1139 const char *sig)
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1140 {
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1141 char *html_buf;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1142 char *html_buf2;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1143 char *buf;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1144 ZNotice_t notice;
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
1145
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1146 html_buf = html_to_zephyr(im);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1147 html_buf2 = gaim_unescape_html(html_buf);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1148
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1149 buf = g_strdup_printf("%s%c%s", sig, '\0', html_buf2);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1150 bzero((char *)&notice, sizeof(notice));
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1151
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1152 notice.z_kind = ACKED;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1153 notice.z_port = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1154 notice.z_opcode = "";
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1155 notice.z_class = zclass;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1156 notice.z_class_inst = instance;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1157 notice.z_recipient = recipient;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1158 notice.z_sender = 0;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1159 notice.z_default_format = "Class $class, Instance $instance:\n" "To: @bold($recipient) at $time $date\n" "From: @bold($1) <$sender>\n\n$2";
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
1160 notice.z_message_len = strlen(html_buf2) + strlen(sig) + 2;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1161 notice.z_message = buf;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1162 g_free(html_buf2);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1163 g_free(html_buf);
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
1164
6904
6c6f9543d94e [gaim-migrate @ 7451]
Arun Tharuvai <aatharuv@mit.edu>
parents: 6787
diff changeset
1165 ZSendNotice(&notice, ZAUTH);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1166 g_free(buf);
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1167 return 1;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1168 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1169
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1170 static const char *zephyr_normalize(const GaimAccount * account, const char *orig)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1171 {
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1172 /* returns the string you gave it. Maybe this function shouldn't be here */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1173 static char buf[80];
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1174
7126
fc9c1b53de71 [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
1175 if (!g_ascii_strcasecmp(orig, "")) {
fc9c1b53de71 [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
1176 buf[0] = '\0';
fc9c1b53de71 [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
1177 return buf;
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1178 } else {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1179 g_snprintf(buf, 80, "%s", orig);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1180 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1181 return buf;
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1182 }
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1183
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1184
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1185 char *local_zephyr_normalize(const char *orig)
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1186 {
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1187 /*
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1188 Basically the inverse of zephyr_strip_foreign_realm
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1189 */
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1190 static char buf[80];
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1191
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1192 if (!g_ascii_strcasecmp(orig, "")) {
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1193 buf[0] = '\0';
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1194 return buf;
7126
fc9c1b53de71 [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
1195 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1196
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1197 if (strchr(orig, '@')) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1198 g_snprintf(buf, 80, "%s", orig);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1199 } else {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1200 g_snprintf(buf, 80, "%s@%s", orig, gaim_zephyr_get_realm());
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1201 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1202 return buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1203 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1204
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
1205 static void zephyr_zloc(GaimConnection *gc, const char *who)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1206 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1207 ZAsyncLocateData_t ald;
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1208 gchar* normalized_who = local_zephyr_normalize(who);
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7126
diff changeset
1209
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1210 if (ZRequestLocations(normalized_who, &ald, UNACKED, ZAUTH) == ZERR_NONE) {
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
1211 pending_zloc_names = g_list_append(pending_zloc_names,
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1212 g_strdup(normalized_who));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1213 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1214 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1215
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1216 static void zephyr_set_away(GaimConnection * gc, const char *state, const char *msg)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1217 {
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 3867
diff changeset
1218 if (gc->away) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1219 g_free(gc->away);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 3867
diff changeset
1220 gc->away = NULL;
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 3867
diff changeset
1221 }
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 3867
diff changeset
1222
5132
9b087ef3f525 [gaim-migrate @ 5495]
Mark Doliner <markdoliner@pidgin.im>
parents: 4793
diff changeset
1223 if (!g_ascii_strcasecmp(state, _("Hidden"))) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1224 ZSetLocation(EXPOSE_OPSTAFF);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 3867
diff changeset
1225 gc->away = g_strdup("");
5132
9b087ef3f525 [gaim-migrate @ 5495]
Mark Doliner <markdoliner@pidgin.im>
parents: 4793
diff changeset
1226 } else if (!g_ascii_strcasecmp(state, _("Online")))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1227 ZSetLocation(get_exposure_level());
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1228 else /* state is GAIM_AWAY_CUSTOM */ if (msg)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1229 gc->away = g_strdup(msg);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1230 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1231
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1232 static GList *zephyr_away_states(GaimConnection * gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1233 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1234 GList *m = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1235
5132
9b087ef3f525 [gaim-migrate @ 5495]
Mark Doliner <markdoliner@pidgin.im>
parents: 4793
diff changeset
1236 m = g_list_append(m, _("Online"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1237 m = g_list_append(m, GAIM_AWAY_CUSTOM);
5132
9b087ef3f525 [gaim-migrate @ 5495]
Mark Doliner <markdoliner@pidgin.im>
parents: 4793
diff changeset
1238 m = g_list_append(m, _("Hidden"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1239
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1240 return m;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1241 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1242
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1243 static GList *zephyr_chat_info(GaimConnection * gc)
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1244 {
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1245 GList *m = NULL;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1246 struct proto_chat_entry *pce;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1247
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1248 pce = g_new0(struct proto_chat_entry, 1);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1249
7841
0000a4c68bf8 [gaim-migrate @ 8494]
Mark Doliner <markdoliner@pidgin.im>
parents: 7475
diff changeset
1250 pce->label = _("_Class:");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1251 pce->identifier = "class";
3158
47352d96c3c9 [gaim-migrate @ 3174]
Harald Barth
parents: 3033
diff changeset
1252 m = g_list_append(m, pce);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1253
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1254 pce = g_new0(struct proto_chat_entry, 1);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1255
7841
0000a4c68bf8 [gaim-migrate @ 8494]
Mark Doliner <markdoliner@pidgin.im>
parents: 7475
diff changeset
1256 pce->label = _("_Instance:");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1257 pce->identifier = "instance";
3158
47352d96c3c9 [gaim-migrate @ 3174]
Harald Barth
parents: 3033
diff changeset
1258 m = g_list_append(m, pce);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1259
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1260 pce = g_new0(struct proto_chat_entry, 1);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1261
7841
0000a4c68bf8 [gaim-migrate @ 8494]
Mark Doliner <markdoliner@pidgin.im>
parents: 7475
diff changeset
1262 pce->label = _("_Recipient:");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1263 pce->identifier = "recipient";
3158
47352d96c3c9 [gaim-migrate @ 3174]
Harald Barth
parents: 3033
diff changeset
1264 m = g_list_append(m, pce);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1265
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1266 return m;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1267 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1268
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1269 static void zephyr_join_chat(GaimConnection * gc, GHashTable * data)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1270 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1271 ZSubscription_t sub;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1272 zephyr_triple *zt1, *zt2;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1273 const char *classname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1274 const char *instname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1275 const char *recip;
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1276
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1277 classname = g_hash_table_lookup(data, "class");
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1278 instname = g_hash_table_lookup(data, "instance");
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1279 recip = g_hash_table_lookup(data, "recipient");
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1280
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1281 if (!classname)
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1282 return;
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1283 if (!instname || !strlen(instname))
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1284 instname = "*";
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1285 if (!recip || (*recip == '*'))
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1286 recip = "";
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1287 if (!g_ascii_strcasecmp(recip, "%me%"))
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1288 recip = gaim_zephyr_get_sender();
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1289
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1290 zt1 = new_triple(classname, instname, recip);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1291 zt2 = find_sub_by_triple(zt1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1292 if (zt2) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1293 free_triple(zt1);
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1294 if (!zt2->open) {
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1295 if (!g_ascii_strcasecmp(instname,"*"))
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1296 instname = "PERSONAL";
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1297 serv_got_joined_chat(gc, zt2->id, zt2->name);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1298 zephyr_chat_set_topic(zgc,zt2->id,instname);
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1299 zt2->open = TRUE;
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1300 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1301 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1302 }
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1303
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1304 sub.zsub_class = zt1->class;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1305 sub.zsub_classinst = zt1->instance;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1306 sub.zsub_recipient = zt1->recipient;
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1307
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1308 if (ZSubscribeTo(&sub, 1, 0) != ZERR_NONE) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1309 free_triple(zt1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1310 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1311 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1312
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1313 subscrips = g_slist_append(subscrips, zt1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1314 zt1->open = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1315 serv_got_joined_chat(gc, zt1->id, zt1->name);
9328
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1316 if (!g_ascii_strcasecmp(instname,"*"))
383af9cae116 [gaim-migrate @ 10136]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9308
diff changeset
1317 instname = "PERSONAL";
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1318 zephyr_chat_set_topic(zgc,zt1->id,instname);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1319 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1320
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1321 static void zephyr_chat_leave(GaimConnection * gc, int id)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1322 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1323 zephyr_triple *zt;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1324
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1325 zt = find_sub_by_id(id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1326 if (zt) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1327 zt->open = FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1328 zt->id = ++last_id;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1329 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1330 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1331
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1332 static const char *zephyr_list_icon(GaimAccount * a, GaimBuddy * b)
5202
2c78987f497b [gaim-migrate @ 5568]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1333 {
2c78987f497b [gaim-migrate @ 5568]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1334 return "zephyr";
2c78987f497b [gaim-migrate @ 5568]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1335 }
2c78987f497b [gaim-migrate @ 5568]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1336
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1337
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1338
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1339
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1340 static void zephyr_chat_set_topic(GaimConnection * gc, int id, const char *topic)
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1341 {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1342 zephyr_triple *zt;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1343 GaimConversation *gconv;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1344 GaimConvChat *gcc;
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1345 gchar *topic_utf8;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1346 char *sender = (char *)gaim_zephyr_get_sender();
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1347
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1348 zt = find_sub_by_id(id);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1349 gconv = gaim_find_conversation_with_account(zt->name, zgc->account);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1350 gcc = gaim_conversation_get_chat_data(gconv);
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1351
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1352 topic_utf8 = zephyr_recv_convert((gchar *)topic,strlen(topic));
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1353 gaim_conv_chat_set_topic(gcc,sender,topic_utf8);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1354 g_free(topic_utf8);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1355 return;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1356 }
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1357
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1358 /* commands */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1359
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1360 static GaimCmdRet zephyr_gaim_cmd_msg(GaimConversation *conv,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1361 const char *cmd, char **args, char **error)
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1362 {
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1363 char *recipient;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1364 if (!g_ascii_strcasecmp(args[0],"*"))
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1365 recipient = local_zephyr_normalize("");
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1366 else
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1367 recipient = local_zephyr_normalize(args[0]);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1368
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1369 if (zephyr_send_message("MESSAGE","PERSONAL",recipient,args[1],zephyr_get_signature()))
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1370 return GAIM_CMD_RET_OK;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1371 else
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1372 return GAIM_CMD_RET_FAILED;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1373 }
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1374
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1375 static GaimCmdRet zephyr_gaim_cmd_zlocate(GaimConversation *conv,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1376 const char *cmd, char **args, char **error)
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1377 {
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1378 zephyr_zloc(zgc,args[0]);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1379 return GAIM_CMD_RET_OK;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1380 }
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1381
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1382 static GaimCmdRet zephyr_gaim_cmd_instance(GaimConversation *conv,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1383 const char *cmd, char **args, char **error)
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1384 {
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1385 /* Currently it sets the instance with leading spaces and
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1386 * all. This might not be the best thing to do, though having
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1387 * one word isn't ideal either. */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1388
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1389 GaimConvChat *gc = gaim_conversation_get_chat_data(conv);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1390 int id = gc->id;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1391 const char* instance = args[0];
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1392 zephyr_chat_set_topic(zgc,id,instance);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1393 return GAIM_CMD_RET_OK;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1394 }
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1395
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1396 static GaimCmdRet zephyr_gaim_cmd_joinchat_cir(GaimConversation *conv,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1397 const char *cmd, char **args, char **error)
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1398 {
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1399 /* Join a new zephyr chat */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1400 GHashTable *triple = g_hash_table_new(NULL,NULL);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1401 g_hash_table_insert(triple,"class",args[0]);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1402 g_hash_table_insert(triple,"instance",args[1]);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1403 g_hash_table_insert(triple,"recipient",args[2]);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1404 zephyr_join_chat(zgc,triple);
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1405 return GAIM_CMD_RET_OK;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1406 }
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1407
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1408 static GaimCmdRet zephyr_gaim_cmd_zi(GaimConversation *conv,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1409 const char *cmd, char **args, char **error)
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1410 {
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1411 /* args = instance, message */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1412 if (zephyr_send_message("message",args[0],"",args[1],zephyr_get_signature()))
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1413 return GAIM_CMD_RET_OK;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1414 else
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1415 return GAIM_CMD_RET_FAILED;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1416 }
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1417
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1418 static GaimCmdRet zephyr_gaim_cmd_zci(GaimConversation *conv,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1419 const char *cmd, char **args, char **error)
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1420 {
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1421 /* args = class, instance, message */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1422 if ( zephyr_send_message(args[0],args[1],"",args[2],zephyr_get_signature()))
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1423 return GAIM_CMD_RET_OK;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1424 else
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1425 return GAIM_CMD_RET_FAILED;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1426 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1427
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1428 static GaimCmdRet zephyr_gaim_cmd_zcir(GaimConversation *conv,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1429 const char *cmd, char **args, char **error)
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1430 {
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1431 /* args = class, instance, recipient, message */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1432 if ( zephyr_send_message(args[0],args[1],args[2],args[3],zephyr_get_signature()))
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1433 return GAIM_CMD_RET_OK;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1434 else
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1435 return GAIM_CMD_RET_FAILED;
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1436 }
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1437
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1438 static GaimCmdRet zephyr_gaim_cmd_zir(GaimConversation *conv,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1439 const char *cmd, char **args, char **error)
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1440 {
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1441 /* args = instance, recipient, message */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1442 if ( zephyr_send_message("message",args[0],args[1],args[2],zephyr_get_signature()))
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1443 return GAIM_CMD_RET_OK;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1444 else
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1445 return GAIM_CMD_RET_FAILED;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1446 }
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1447
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1448 static GaimCmdRet zephyr_gaim_cmd_zc(GaimConversation *conv,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1449 const char *cmd, char **args, char **error)
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1450 {
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1451 /* args = class, message */
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1452 if ( zephyr_send_message(args[0],"PERSONAL","",args[1],zephyr_get_signature()))
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1453 return GAIM_CMD_RET_OK;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1454 else
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1455 return GAIM_CMD_RET_FAILED;
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1456 }
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1457
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1458 static void zephyr_register_slash_commands()
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1459 {
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1460
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1461 gaim_cmd_register("msg","ws", GAIM_CMD_P_PRPL,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1462 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1463 "prpl-zephyr",
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1464 zephyr_gaim_cmd_msg, _("msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user"));
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1465
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1466 gaim_cmd_register("zlocate","w", GAIM_CMD_P_PRPL,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1467 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1468 "prpl-zephyr",
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1469 zephyr_gaim_cmd_zlocate, _("zlocate &lt;nick&gt;: Locate user"));
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1470
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1471 gaim_cmd_register("zl","w", GAIM_CMD_P_PRPL,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1472 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1473 "prpl-zephyr",
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1474 zephyr_gaim_cmd_zlocate, _("zl &lt;nick&gt;: Locate user"));
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1475
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1476 gaim_cmd_register("instance","s", GAIM_CMD_P_PRPL,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1477 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1478 "prpl-zephyr",
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1479 zephyr_gaim_cmd_instance, _("inst &lt;instance&gt;: Set the instance to be used on this class"));
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1480
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1481 gaim_cmd_register("inst","s", GAIM_CMD_P_PRPL,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1482 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1483 "prpl-zephyr",
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1484 zephyr_gaim_cmd_instance, _("instance &lt;instance&gt;: Set the instance to be used on this class"));
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1485
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1486 gaim_cmd_register("sub", "www", GAIM_CMD_P_PRPL,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1487 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1488 "prpl-zephyr",
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1489 zephyr_gaim_cmd_joinchat_cir,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1490 _("sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"));
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1491
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1492 gaim_cmd_register("zi","ws", GAIM_CMD_P_PRPL,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1493 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1494 "prpl-zephyr",
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1495 zephyr_gaim_cmd_zi, _("zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"));
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1496
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1497 gaim_cmd_register("zci","wws",GAIM_CMD_P_PRPL,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1498 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1499 "prpl-zephyr",
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1500 zephyr_gaim_cmd_zci,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1501 _("zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,<i>instance</i>,*&gt;"));
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1502
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1503 gaim_cmd_register("zcir","wwws",GAIM_CMD_P_PRPL,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1504 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1505 "prpl-zephyr",
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1506 zephyr_gaim_cmd_zcir,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1507 _("zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"));
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1508
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1509 gaim_cmd_register("zir","wws",GAIM_CMD_P_PRPL,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1510 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1511 "prpl-zephyr",
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1512 zephyr_gaim_cmd_zir,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1513 _("zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,<i>instance</i>,<i>recipient</i>&gt;"));
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1514
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1515 gaim_cmd_register("zc","ws", GAIM_CMD_P_PRPL,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1516 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1517 "prpl-zephyr",
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1518 zephyr_gaim_cmd_zc, _("zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"));
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1519
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1520 }
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1521
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1522
9427
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1523 static int zephyr_resubscribe(GaimConnection *gc)
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1524 {
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1525 /* Resubscribe to the in-memory list of subscriptions and also
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1526 unsubscriptions*/
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1527
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1528 GSList *s = subscrips;
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1529 zephyr_triple *zt;
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1530 ZSubscription_t zst;
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1531 while (s) {
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1532 zt = s->data;
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1533 zst.zsub_class = zt->class;
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1534 zst.zsub_classinst = zt->instance;
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1535 zst.zsub_recipient = zt->recipient;
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1536 ZSubscribeTo(&zst, 1, 0);
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1537 /* XXX We really should care if this fails */
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1538 s = s->next;
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1539 }
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1540 /* XXX handle unsubscriptions */
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1541 return 1;
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1542 }
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1543
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1544
9427
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1545 static void zephyr_action_resubscribe(GaimPluginAction *action)
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1546 {
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1547
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1548 GaimConnection *gc = (GaimConnection *) action->context;
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1549 zephyr_resubscribe(gc);
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1550 }
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1551
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1552
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1553 static GList *zephyr_actions(GaimPlugin *plugin, gpointer context)
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1554 {
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1555 GList *list = NULL;
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1556 GaimPluginAction *act = NULL;
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1557
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1558 act = gaim_plugin_action_new(_("Resubscribe"), zephyr_action_resubscribe);
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1559 list = g_list_append(list, act);
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1560
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1561 return list;
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1562 }
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1563
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1564 static GaimPlugin *my_protocol = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1565
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1566 static GaimPluginProtocolInfo prpl_info = {
8749
fb487e9e101a [gaim-migrate @ 9504]
Christian Hammond <chipx86@chipx86.com>
parents: 8713
diff changeset
1567 GAIM_PRPL_API_VERSION,
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1568 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_NO_PASSWORD,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1569 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1570 NULL,
9308
4ea759d72d37 [gaim-migrate @ 10116]
Sean Egan <seanegan@pidgin.im>
parents: 9030
diff changeset
1571 NO_BUDDY_ICONS,
4ea759d72d37 [gaim-migrate @ 10116]
Sean Egan <seanegan@pidgin.im>
parents: 9030
diff changeset
1572 zephyr_list_icon,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1573 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1574 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1575 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1576 zephyr_away_states,
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
1577 NULL,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1578 zephyr_chat_info,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1579 zephyr_login,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1580 zephyr_close,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1581 zephyr_send_im,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1582 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1583 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1584 zephyr_zloc,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1585 zephyr_set_away,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1586 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1587 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1588 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1589 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1590 NULL,
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1591 NULL,
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1592 NULL,
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1593 NULL,
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1594 NULL,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1595 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1596 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1597 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1598 zephyr_join_chat,
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1599 NULL, /* reject chat invite */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1600 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1601 zephyr_chat_leave,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1602 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1603 zephyr_chat_send,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1604 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1605 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1606 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1607 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1608 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1609 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1610 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1611 NULL,
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
1612 NULL,
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1613 zephyr_normalize,
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
1614 NULL,
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
1615 NULL,
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
1616 NULL,
8586
c8c7a19da549 [gaim-migrate @ 9336]
Pekka Riikonen <priikone@silcnet.org>
parents: 8568
diff changeset
1617 zephyr_chat_set_topic,
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1618 NULL,
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1619 NULL,
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1620 NULL,
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1621 NULL
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1622 };
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1623
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1624 static GaimPluginInfo info = {
8749
fb487e9e101a [gaim-migrate @ 9504]
Christian Hammond <chipx86@chipx86.com>
parents: 8713
diff changeset
1625 GAIM_PLUGIN_API_VERSION, /**< api_version */
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1626 GAIM_PLUGIN_PROTOCOL, /**< type */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1627 NULL, /**< ui_requirement */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1628 0, /**< flags */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1629 NULL, /**< dependencies */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1630 GAIM_PRIORITY_DEFAULT, /**< priority */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1631
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1632 "prpl-zephyr", /**< id */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1633 "Zephyr", /**< name */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1634 VERSION, /**< version */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1635 /** summary */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1636 N_("Zephyr Protocol Plugin"),
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1637 /** description */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1638 N_("Zephyr Protocol Plugin"),
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1639 NULL, /**< author */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1640 GAIM_WEBSITE, /**< homepage */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1641
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1642 NULL, /**< load */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1643 NULL, /**< unload */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1644 NULL, /**< destroy */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1645
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1646 NULL, /**< ui_info */
8993
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8954
diff changeset
1647 &prpl_info, /**< extra_info */
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8954
diff changeset
1648 NULL,
9427
4155f2f8f5fb [gaim-migrate @ 10245]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9426
diff changeset
1649 zephyr_actions
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1650 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1651
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1652 static void init_plugin(GaimPlugin * plugin)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1653 {
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1654 GaimAccountOption *option;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1655 char *tmp = get_exposure_level();
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1656
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1657 option = gaim_account_option_bool_new(_("Export to .anyone"), "write_anyone", FALSE);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1658 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1659
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1660 option = gaim_account_option_bool_new(_("Export to .zephyr.subs"), "write_zsubs", FALSE);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1661 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1662
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1663 option = gaim_account_option_string_new(_("Exposure"), "exposure_level", tmp ? tmp : EXPOSE_REALMVIS);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1664 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1665
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1666 option = gaim_account_option_string_new(_("Encoding"), "encoding", ZEPHYR_FALLBACK_CHARSET);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1667 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
8560
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
1668
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1669 my_protocol = plugin;
9434
20e865677c77 [gaim-migrate @ 10254]
Arun Tharuvai <aatharuv@mit.edu>
parents: 9427
diff changeset
1670 zephyr_register_slash_commands();
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1671 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1672
5920
963bfdefee02 [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1673 GAIM_INIT_PLUGIN(zephyr, init_plugin, info);

mercurial