src/protocols/zephyr/zephyr.c

Fri, 21 May 2004 14:33:32 +0000

author
Stu Tomlinson <nosnilmot@pidgin.im>
date
Fri, 21 May 2004 14:33:32 +0000
changeset 8999
dd434cfec86a
parent 8993
41f67bceab41
child 9015
3c27e9074fa2
permissions
-rw-r--r--

[gaim-migrate @ 9774]
" This patch renames the existing received-*-msg signals
to receiving-*msg to fit the naming of other signals
where a pointer to the message is passed (writing,
sending, displaying)

It adds new received-*-msg signals which are emitted
after the receiving signals, in line with the other
conversation signals (wrote, sent, displayed)

This is necessary to allow plugins which depend on the
final received message to work alongside plugins which
may modify the message.

One known example of this is festival-gaim alongside
gaim-encryption - festival-gaim would try to "speak"
the encrypted text:
http://sf.net/tracker/?func=detail&aid=943216&group_id=89763&atid=591320

I've tested this with gaim-encryption and festival-gaim
(locally modified so gaim-encryption uses the receiving
signal and festival uses the received signal)

All in-tree users of received-*-msg are updated to use
receiving-*-msg if they do modify the message, the
conversation-signals documentation is updated, the
signals-test.c & signal-test.tcl plugins are also updated." --Stu Tomlinson

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"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
35
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
36 #include "zephyr/zephyr.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
37
8386
5b9e02f4c03d [gaim-migrate @ 9114]
Mark Doliner <markdoliner@pidgin.im>
parents: 8354
diff changeset
38 #include <strings.h>
5b9e02f4c03d [gaim-migrate @ 9114]
Mark Doliner <markdoliner@pidgin.im>
parents: 8354
diff changeset
39
8560
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
40 #define ZEPHYR_FALLBACK_CHARSET "ISO-8859-1"
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
41
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
42 extern Code_t ZGetLocations(ZLocations_t *, int *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
43 extern Code_t ZSetLocation(char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
44 extern Code_t ZUnsetLocation();
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
45
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
46 typedef struct _zframe zframe;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
47 typedef struct _zephyr_triple zephyr_triple;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
48
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
49 /* struct I need for zephyr_to_html */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
50 struct _zframe {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
51 /* 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
52 * the color. */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
53 gboolean has_closer;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
54 /* </i>, </font>, </b>, etc. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
55 char *closing;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
56 /* text including the opening html thingie. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
57 GString *text;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
58 struct _zframe *enclosing;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
59 };
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 struct _zephyr_triple {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
62 char *class;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
63 char *instance;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
64 char *recipient;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
65 char *name;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
66 gboolean open;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
67 int id;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
68 };
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 #define z_call(func) if (func != ZERR_NONE)\
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
71 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
72 #define z_call_r(func) if (func != ZERR_NONE)\
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
73 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
74 #define z_call_s(func, err) if (func != ZERR_NONE) {\
5606
5551bcc7e59b [gaim-migrate @ 6010]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
75 gaim_connection_error(zgc, err);\
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
76 return;\
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
77 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
78
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
79 static const char *local_zephyr_normalize(const char *);
7322
de15a9314c04 [gaim-migrate @ 7908]
Nathan Walp <nwalp@pidgin.im>
parents: 7262
diff changeset
80 static const char *zephyr_normalize(const GaimAccount *, const char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
81
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
82 /* 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
83 * wouldn't do this. but it is so i will. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
84 static guint32 nottimer = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
85 static guint32 loctimer = 0;
5606
5551bcc7e59b [gaim-migrate @ 6010]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
86 GaimConnection *zgc = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
87 static GList *pending_zloc_names = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
88 static GSList *subscrips = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
89 static int last_id = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
90
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
91 /* just for debugging
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
92 static void handle_unknown(ZNotice_t notice)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
93 {
6484
b8558c29e331 [gaim-migrate @ 6998]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
94 gaim_debug(GAIM_DEBUG_MISC, "z_packet: %s\n", notice.z_packet);
b8558c29e331 [gaim-migrate @ 6998]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
95 gaim_debug(GAIM_DEBUG_MISC, "z_version: %s\n", notice.z_version);
b8558c29e331 [gaim-migrate @ 6998]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
96 gaim_debug(GAIM_DEBUG_MISC, "z_kind: %d\n", notice.z_kind);
b8558c29e331 [gaim-migrate @ 6998]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
97 gaim_debug(GAIM_DEBUG_MISC, "z_class: %s\n", notice.z_class);
b8558c29e331 [gaim-migrate @ 6998]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
98 gaim_debug(GAIM_DEBUG_MISC, "z_class_inst: %s\n", notice.z_class_inst);
b8558c29e331 [gaim-migrate @ 6998]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
99 gaim_debug(GAIM_DEBUG_MISC, "z_opcode: %s\n", notice.z_opcode);
b8558c29e331 [gaim-migrate @ 6998]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
100 gaim_debug(GAIM_DEBUG_MISC, "z_sender: %s\n", notice.z_sender);
b8558c29e331 [gaim-migrate @ 6998]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
101 gaim_debug(GAIM_DEBUG_MISC, "z_recipient: %s\n", notice.z_recipient);
b8558c29e331 [gaim-migrate @ 6998]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
102 gaim_debug(GAIM_DEBUG_MISC, "z_message: %s\n", notice.z_message);
b8558c29e331 [gaim-migrate @ 6998]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
103 gaim_debug(GAIM_DEBUG_MISC, "z_message_len: %d\n", notice.z_message_len);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
104 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
105 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
106
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
107 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
108 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
109 zephyr_triple *zt;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
110
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
111 zt = g_new0(zephyr_triple, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
112 zt->class = g_strdup(c);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
113 zt->instance = g_strdup(i);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
114 zt->recipient = g_strdup(r);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
115 zt->name = g_strdup_printf("%s,%s,%s", c, i, r);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
116 zt->id = ++last_id;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
117 zt->open = FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
118 return zt;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
119 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
120
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
121 static void free_triple(zephyr_triple * zt)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
122 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
123 g_free(zt->class);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
124 g_free(zt->instance);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
125 g_free(zt->recipient);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
126 g_free(zt->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
127 g_free(zt);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
128 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
129
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
130 static const char *gaim_zephyr_get_sender()
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
131 {
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
132 /* will be useful once this plugin can use a backend other
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
133 than libzephyr */
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
134 return ZGetSender();
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
135 }
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
136
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
137 static const char *gaim_zephyr_get_realm()
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
138 {
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
139 /* will be useful once this plugin can use a backend other
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
140 than libzephyr */
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
141 return ZGetRealm();
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
142 }
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
143
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
144 /* returns true if zt1 is a subset of zt2, i.e. zt2 has the same thing or
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
145 * wildcards in each field of zt1. */
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
146 static gboolean triple_subset(zephyr_triple * zt1, zephyr_triple * zt2)
2086
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 if (g_ascii_strcasecmp(zt2->class, zt1->class) && g_ascii_strcasecmp(zt2->class, "*")) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
149 return FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
150 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
151 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
152 return FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
153 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
154 if (g_ascii_strcasecmp(zt2->recipient, zt1->recipient) && g_ascii_strcasecmp(zt2->recipient, "*")) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
155 return FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
156 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
157 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
158 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
159
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
160 static zephyr_triple *find_sub_by_triple(zephyr_triple * zt)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
161 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
162 zephyr_triple *curr_t;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
163 GSList *curr = subscrips;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
164
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
165 while (curr) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
166 curr_t = curr->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
167 if (triple_subset(zt, curr_t))
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
168 return curr_t;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
169 curr = curr->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
170 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
171 return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
172 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
173
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
174 static zephyr_triple *find_sub_by_id(int id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
175 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
176 zephyr_triple *zt;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
177 GSList *curr = subscrips;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
178
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
179 while (curr) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
180 zt = curr->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
181 if (zt->id == id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
182 return zt;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
183 curr = curr->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
184 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
185 return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
186 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
187
8560
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
188 static gchar *zephyr_recv_convert(char *string, int len)
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
189 {
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
190 gchar *utf8;
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
191 GError *err = NULL;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
192
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
193 if (g_utf8_validate(string, len, NULL)) {
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
194 return g_strdup(string);
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
195 } else {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
196 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
197 if (err) {
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
198 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
199 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
200 g_error_free(err);
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
201 }
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
202
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
203 return utf8;
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
204 }
8560
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
205 }
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
206
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
207 /* utility macros that are useful for zephyr_to_html */
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 #define IS_OPENER(c) ((c == '{') || (c == '[') || (c == '(') || (c == '<'))
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
210 #define IS_CLOSER(c) ((c == '}') || (c == ']') || (c == ')') || (c == '>'))
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
211
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
212 /* 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
213 And converts it to zephyr formatting.
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
214 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
215 It ignores <font back=...>
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
216 It does
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
217 <font size = "1 or 2" -> @small
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
218 3 or 4 @medium()
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
219 5,6, or 7 @large()
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
220 <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
221 */
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
222
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
223 static char *html_to_zephyr(const char *message)
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
224 {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
225 int len, cnt, retcount;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
226 char *ret;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
227
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
228 len = strlen(message);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
229 ret = g_new0(char, len * 3);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
230
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
231 bzero(ret, len * 3);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
232 retcount = 0;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
233 cnt = 0;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
234 while (cnt <= len) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
235 if (message[cnt] == '<') {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
236 if (!g_ascii_strncasecmp(message + cnt + 1, "i>", 2)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
237 strncpy(ret + retcount, "@i(", 3);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
238 cnt += 3;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
239 retcount += 3;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
240 } else if (!g_ascii_strncasecmp(message + cnt + 1, "b>", 2)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
241 strncpy(ret + retcount, "@b(", 3);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
242 cnt += 3;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
243 retcount += 3;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
244 } else if (!g_ascii_strncasecmp(message + cnt + 1, "br>", 3)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
245 strncpy(ret + retcount, "\n", 1);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
246 cnt += 4;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
247 retcount += 1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
248 } else if (!g_ascii_strncasecmp(message + cnt + 1, "a href=\"", 8)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
249 cnt += 9;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
250 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
251 ret[retcount] = message[cnt];
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
252 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
253 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
254 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
255 cnt += 2;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
256 /* ignore descriptive string */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
257 while (g_ascii_strncasecmp(message + cnt, "</a>", 4) != 0) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
258 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
259 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
260 cnt += 4;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
261 } else if (!g_ascii_strncasecmp(message + cnt + 1, "font", 4)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
262 cnt += 5;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
263 while (!g_ascii_strncasecmp(message + cnt, " ", 1))
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
264 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
265 if (!g_ascii_strncasecmp(message + cnt, "color=\"", 7)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
266 cnt += 7;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
267 strncpy(ret + retcount, "@color(", 7);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
268 retcount += 7;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
269 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
270 ret[retcount] = message[cnt];
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
271 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
272 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
273 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
274 ret[retcount] = ')';
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
275 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
276 cnt += 2;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
277 } else if (!g_ascii_strncasecmp(message + cnt, "face=\"", 6)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
278 cnt += 6;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
279 strncpy(ret + retcount, "@font(", 6);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
280 retcount += 6;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
281 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
282 ret[retcount] = message[cnt];
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
283 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
284 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
285 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
286 ret[retcount] = ')';
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
287 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
288 cnt += 2;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
289 } else if (!g_ascii_strncasecmp(message + cnt, "size=\"", 6)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
290 cnt += 6;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
291 if ((message[cnt] == '1') || (message[cnt] == '2')) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
292 strncpy(ret + retcount, "@small(", 7);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
293 retcount += 7;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
294 } else if ((message[cnt] == '3')
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
295 || (message[cnt] == '4')) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
296 strncpy(ret + retcount, "@medium(", 8);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
297 retcount += 8;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
298 } else if ((message[cnt] == '5')
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
299 || (message[cnt] == '6')
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
300 || (message[cnt] == '7')) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
301 strncpy(ret + retcount, "@large(", 7);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
302 retcount += 7;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
303 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
304 cnt += 3;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
305 } else {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
306 /* Drop all unrecognized/misparsed font tags */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
307 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
308 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
309 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
310 cnt += 2;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
311 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
312 } else if (!g_ascii_strncasecmp(message + cnt + 1, "/i>", 3)
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
313 || !g_ascii_strncasecmp(message + cnt + 1, "/b>", 3)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
314 cnt += 4;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
315 ret[retcount] = ')';
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
316 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
317 } else if (!g_ascii_strncasecmp(message + cnt + 1, "/font>", 6)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
318 cnt += 7;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
319 strncpy(ret + retcount, "@font(fixed)", 12);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
320 retcount += 12;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
321 } else {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
322 /* Catch all for all unrecognized/misparsed <foo> tage */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
323 while (g_ascii_strncasecmp(message + cnt, ">", 1) != 0) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
324 ret[retcount] = message[cnt];
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
325 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
326 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
327 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
328 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
329 } else {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
330 /* Duh */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
331 ret[retcount] = message[cnt];
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
332 retcount++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
333 cnt++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
334 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
335 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
336 return ret;
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
337 }
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
338
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
339 /* this parses zephyr formatting and converts it to html. For example, if
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
340 * you pass in "@{@color(blue)@i(hello)}" you should get out
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
341 * "<font color=blue><i>hello</i></font>". */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
342 static char *zephyr_to_html(char *message)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
343 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
344 int len, cnt;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
345 zframe *frames, *curr;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
346 char *ret;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
347
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
348 frames = g_new(zframe, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
349 frames->text = g_string_new("");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
350 frames->enclosing = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
351 frames->closing = "";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
352 frames->has_closer = FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
353
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
354 len = strlen(message);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
355 cnt = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
356 while (cnt <= len) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
357 if (message[cnt] == '@') {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
358 zframe *new_f;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
359 char *buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
360 int end;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
361
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
362 for (end = 1; (cnt + end) <= len && !IS_OPENER(message[cnt + end])
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
363 && !IS_CLOSER(message[cnt + end]); end++);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
364 buf = g_new0(char, end);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
365
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
366 if (end) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
367 g_snprintf(buf, end, "%s", message + cnt + 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
368 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
369 if (!g_ascii_strcasecmp(buf, "italic") || !g_ascii_strcasecmp(buf, "i")) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
370 new_f = g_new(zframe, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
371 new_f->enclosing = frames;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
372 new_f->text = g_string_new("<i>");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
373 new_f->closing = "</i>";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
374 new_f->has_closer = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
375 frames = new_f;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
376 cnt += end + 1; /* cnt points to char after opener */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
377 } else if (!g_ascii_strcasecmp(buf, "small")) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
378 new_f = g_new(zframe, 1);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
379 new_f->enclosing = frames;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
380 new_f->text = g_string_new("<font size=\"1\">");
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
381 new_f->closing = "</font>";
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
382 frames = new_f;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
383 cnt += end + 1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
384 } else if (!g_ascii_strcasecmp(buf, "medium")) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
385 new_f = g_new(zframe, 1);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
386 new_f->enclosing = frames;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
387 new_f->text = g_string_new("<font size=\"3\">");
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
388 new_f->closing = "</font>";
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
389 frames = new_f;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
390 cnt += end + 1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
391 } else if (!g_ascii_strcasecmp(buf, "large")) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
392 new_f = g_new(zframe, 1);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
393 new_f->enclosing = frames;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
394 new_f->text = g_string_new("<font size=\"7\">");
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
395 new_f->closing = "</font>";
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
396 frames = new_f;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
397 cnt += end + 1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
398 } else if (!g_ascii_strcasecmp(buf, "bold")
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
399 || !g_ascii_strcasecmp(buf, "b")) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
400 new_f = g_new(zframe, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
401 new_f->enclosing = frames;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
402 new_f->text = g_string_new("<b>");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
403 new_f->closing = "</b>";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
404 new_f->has_closer = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
405 frames = new_f;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
406 cnt += end + 1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
407 } else if (!g_ascii_strcasecmp(buf, "font")) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
408 cnt += end + 1;
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
409 new_f = g_new(zframe, 1);
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
410 new_f->enclosing = frames;
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
411 new_f->text = g_string_new("<font face=");
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
412 for (; (cnt <= len) && !IS_CLOSER(message[cnt]); cnt++) {
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
413 g_string_append_c(new_f->text, message[cnt]);
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
414 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
415 cnt++; /* point to char after closer */
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
416 g_string_append_c(new_f->text, '>');
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
417 new_f->closing = "</font>";
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
418 new_f->has_closer = FALSE;
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
419 frames = new_f;
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
420 } else if (!g_ascii_strcasecmp(buf, "color")) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
421 cnt += end + 1;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
422 new_f = g_new(zframe, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
423 new_f->enclosing = frames;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
424 new_f->text = g_string_new("<font color=");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
425 for (; (cnt <= len) && !IS_CLOSER(message[cnt]); cnt++) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
426 g_string_append_c(new_f->text, message[cnt]);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
427 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
428 cnt++; /* point to char after closer */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
429 g_string_append_c(new_f->text, '>');
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
430 new_f->closing = "</font>";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
431 new_f->has_closer = FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
432 frames = new_f;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
433 } else if (!g_ascii_strcasecmp(buf, "")) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
434 new_f = g_new(zframe, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
435 new_f->enclosing = frames;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
436 new_f->text = g_string_new("");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
437 new_f->closing = "";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
438 new_f->has_closer = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
439 frames = new_f;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
440 cnt += end + 1; /* cnt points to char after opener */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
441 } else {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
442 if ((cnt + end) > len) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
443 g_string_append_c(frames->text, '@');
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
444 cnt++;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
445 } else if (IS_CLOSER(message[cnt + end])) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
446 /* We have @chars..closer . This is
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
447 merely a sequence of chars that isn't a formatting tag
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
448 */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
449 int tmp = cnt;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
450
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
451 while (tmp <= cnt + end) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
452 g_string_append_c(frames->text, message[tmp]);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
453 tmp++;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
454 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
455 cnt += end + 1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
456 } else {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
457 /* unrecognized thingie. act like it's not there, but we
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
458 * still need to take care of the corresponding closer,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
459 * make a frame that does nothing. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
460 new_f = g_new(zframe, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
461 new_f->enclosing = frames;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
462 new_f->text = g_string_new("");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
463 new_f->closing = "";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
464 new_f->has_closer = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
465 frames = new_f;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
466 cnt += end + 1; /* cnt points to char after opener */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
467 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
468 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
469 } else if (IS_CLOSER(message[cnt])) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
470 zframe *popped;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
471 gboolean last_had_closer;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
472
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
473 if (frames->enclosing) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
474 do {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
475 popped = frames;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
476 frames = frames->enclosing;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
477 g_string_append(frames->text, popped->text->str);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
478 g_string_append(frames->text, popped->closing);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
479 g_string_free(popped->text, TRUE);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
480 last_had_closer = popped->has_closer;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
481 g_free(popped);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
482 } while (frames && frames->enclosing && !last_had_closer);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
483 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
484 g_string_append_c(frames->text, message[cnt]);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
485 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
486 cnt++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
487 } else if (message[cnt] == '\n') {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
488 g_string_append(frames->text, "<br>");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
489 cnt++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
490 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
491 g_string_append_c(frames->text, message[cnt++]);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
492 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
493 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
494 /* go through all the stuff that they didn't close */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
495 while (frames->enclosing) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
496 curr = frames;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
497 g_string_append(frames->enclosing->text, frames->text->str);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
498 g_string_append(frames->enclosing->text, frames->closing);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
499 g_string_free(frames->text, TRUE);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
500 frames = frames->enclosing;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
501 g_free(curr);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
502 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
503 ret = frames->text->str;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
504 g_string_free(frames->text, FALSE);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
505 g_free(frames);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
506 return ret;
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
509 static gboolean pending_zloc(char *who)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
510 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
511 GList *curr;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
512
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
513 for (curr = pending_zloc_names; curr != NULL; curr = curr->next) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
514 if (!g_ascii_strcasecmp(local_zephyr_normalize(who), (char *)curr->data)) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
515 g_free((char *)curr->data);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
516 pending_zloc_names = g_list_remove(pending_zloc_names, curr->data);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
517 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
518 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
519 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
520 return FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
521 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
522
8559
2fe36fe190bc [gaim-migrate @ 9303]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8451
diff changeset
523 static void message_failed(ZNotice_t notice, struct sockaddr_in from)
2fe36fe190bc [gaim-migrate @ 9303]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8451
diff changeset
524 {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
525 if (g_ascii_strcasecmp(notice.z_class, "message")) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
526 /* message to chat failed ignore for now */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
527 } else {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
528 gaim_notify_error(zgc, notice.z_recipient, _("User is offline"), NULL);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
529 }
8559
2fe36fe190bc [gaim-migrate @ 9303]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8451
diff changeset
530 }
2fe36fe190bc [gaim-migrate @ 9303]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8451
diff changeset
531
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
532 static void handle_message(ZNotice_t notice, struct sockaddr_in from)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
533 {
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
534 if (!g_ascii_strcasecmp(notice.z_class, LOGIN_CLASS)) {
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
535 /* 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
536 } else if (!g_ascii_strcasecmp(notice.z_class, LOCATE_CLASS)) {
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
537 if (!g_ascii_strcasecmp(notice.z_opcode, LOCATE_LOCATE)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
538 int nlocs;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
539 char *user;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
540 GaimBuddy *b;
2086
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 if (ZParseLocations(&notice, NULL, &nlocs, &user) != ZERR_NONE)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
543 return;
8435
7475bfdcaa20 [gaim-migrate @ 9165]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8386
diff changeset
544
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
545 if ((b = gaim_find_buddy(zgc->account, user)) == NULL) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
546 char *e = strchr(user, '@');
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
547
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
548 if (e && !g_ascii_strcasecmp(e + 1, gaim_zephyr_get_realm())) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
549 *e = '\0';
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
550 }
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4682
diff changeset
551 b = gaim_find_buddy(zgc->account, user);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
552 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
553 if ((b && pending_zloc(b->name)) || pending_zloc(user)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
554 ZLocations_t locs;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
555 int one = 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
556 GString *str = g_string_new("");
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
557
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
558 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
559 if (b && b->alias)
5132
9b087ef3f525 [gaim-migrate @ 5495]
Mark Doliner <markdoliner@pidgin.im>
parents: 4793
diff changeset
560 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
561 if (!nlocs) {
5132
9b087ef3f525 [gaim-migrate @ 5495]
Mark Doliner <markdoliner@pidgin.im>
parents: 4793
diff changeset
562 g_string_append_printf(str, _("<br>Hidden or not logged-in"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
563 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
564 for (; nlocs > 0; nlocs--) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
565 ZGetLocations(&locs, &one);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
566 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
567 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
568 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
569 g_string_free(str, TRUE);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
570 } else
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4687
diff changeset
571 serv_got_update(zgc, b->name, nlocs, 0, 0, 0, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
572
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
573 free(user);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
574 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
575 } else {
8560
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
576 char *buf, *buf2, *buf3;
2804
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
577 char *send_inst;
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
578 char *realmptr;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
579 GaimConversation *gconv1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
580 GaimConvChat *gcc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
581 char *ptr = notice.z_message + strlen(notice.z_message) + 1;
8876
b1992a365b79 [gaim-migrate @ 9645]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8749
diff changeset
582 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
583 char *sendertmp = g_strdup_printf("%s", gaim_zephyr_get_sender());
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7084
diff changeset
584 GaimConvImFlags flags = 0;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
585
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
586 if (len > 0) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
587 gchar *tmpescape;
8560
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
588
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
589 buf = g_malloc(len + 1);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
590 g_snprintf(buf, len + 1, "%s", ptr);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
591 g_strchomp(buf);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
592 tmpescape = gaim_escape_html(buf);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
593 buf2 = zephyr_to_html(tmpescape);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
594 buf3 = zephyr_recv_convert(buf2, strlen(buf2));
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
595 g_free(buf2);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
596 g_free(buf);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
597 g_free(tmpescape);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
598
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
599 if (!g_ascii_strcasecmp(notice.z_class, "MESSAGE") && !g_ascii_strcasecmp(notice.z_class_inst, "PERSONAL")) {
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
600 if (!g_ascii_strcasecmp(notice.z_message, "Automated reply:"))
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7084
diff changeset
601 flags |= GAIM_CONV_IM_AUTO_RESP;
8560
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
602 serv_got_im(zgc, notice.z_sender, buf3, flags, time(NULL));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
603 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
604 zephyr_triple *zt1, *zt2;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
605
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
606 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
607 zt2 = find_sub_by_triple(zt1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
608 if (!zt2) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
609 /* we shouldn't be subscribed to this message. ignore. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
610 } else {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
611 GList *gltmp;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
612 int found = 0;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
613
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
614 if (!zt2->open) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
615 zt2->open = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
616 serv_got_joined_chat(zgc, zt2->id, zt2->name);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
617 gconv1 = gaim_find_conversation_with_account(zt2->name, zgc->account);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
618 gcc = gaim_conversation_get_chat_data(gconv1);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
619 gaim_conv_chat_set_topic(gcc, sendertmp, notice.z_class_inst);
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
620
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
621 }
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
622 /* If the person is in the default Realm, then strip the
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
623 Realm from the sender field */
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
624 sendertmp = g_strdup_printf("%s", notice.z_sender);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
625 if ((realmptr = strchr(sendertmp, '@')) != NULL) {
4588
1e072545c53d [gaim-migrate @ 4872]
Arun Tharuvai <aatharuv@mit.edu>
parents: 4491
diff changeset
626 realmptr++;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
627 if (!g_ascii_strcasecmp(realmptr, gaim_zephyr_get_realm())) {
4588
1e072545c53d [gaim-migrate @ 4872]
Arun Tharuvai <aatharuv@mit.edu>
parents: 4491
diff changeset
628 realmptr--;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
629 sprintf(realmptr, "%c", '\0');
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
630 send_inst = g_strdup_printf("%s %s", sendertmp, notice.z_class_inst);
4588
1e072545c53d [gaim-migrate @ 4872]
Arun Tharuvai <aatharuv@mit.edu>
parents: 4491
diff changeset
631 } else {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
632 send_inst = g_strdup_printf("%s %s", notice.z_sender, notice.z_class_inst);
4588
1e072545c53d [gaim-migrate @ 4872]
Arun Tharuvai <aatharuv@mit.edu>
parents: 4491
diff changeset
633 }
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
634 } else {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
635 send_inst = g_strdup_printf("%s %s", sendertmp, notice.z_class_inst);
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
636 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
637 serv_got_chat_in(zgc, zt2->id, send_inst, FALSE, buf3, time(NULL));
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
638
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
639 gconv1 = gaim_find_conversation_with_account(zt2->name, zgc->account);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
640 gcc = gaim_conversation_get_chat_data(gconv1);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
641 /* gaim_conv_chat_set_topic(gcc,sendertmp,notice.z_class_inst); */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
642 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
643 if (!g_ascii_strcasecmp(gltmp->data, sendertmp))
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
644 found = 1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
645 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
646 if (!found) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
647 /* force interpretation in network byte order */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
648 unsigned char *addrs = (unsigned char *)&(notice.z_sender_addr.s_addr);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
649
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
650 gaim_conv_chat_add_user(gcc, sendertmp, g_strdup_printf("%hhd.%hhd.%hhd.%hhd", (unsigned char)addrs[0], (unsigned char)addrs[1], (unsigned char)addrs[2], (unsigned char)
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
651 addrs[3]));
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 }
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
654 g_free(sendertmp);
2804
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
655 g_free(send_inst);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
656 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
657 free_triple(zt1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
658 }
8560
cc0522d095f8 [gaim-migrate @ 9304]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8559
diff changeset
659 g_free(buf3);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
660 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
661 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
662 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
663
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
664 static gint check_notify(gpointer data)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
665 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
666 while (ZPending()) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
667 ZNotice_t notice;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
668 struct sockaddr_in from;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
669
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
670 z_call_r(ZReceiveNotice(&notice, &from));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
671
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
672 switch (notice.z_kind) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
673 case UNSAFE:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
674 case UNACKED:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
675 case ACKED:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
676 handle_message(notice, from);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
677 break;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
678 case SERVACK:
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
679 if (!(g_ascii_strcasecmp(notice.z_message, ZSRVACK_NOTSENT))) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
680 message_failed(notice, from);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
681 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
682 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
683 default:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
684 /* we'll just ignore things for now */
6484
b8558c29e331 [gaim-migrate @ 6998]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
685 gaim_debug(GAIM_DEBUG_WARNING, "zephyr", "Unhandled notice.\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
686 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
687 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
688
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
689 ZFreeNotice(&notice);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
690 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
691
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
692 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
693 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
694
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
695 static gint check_loc(gpointer data)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
696 {
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
697 GaimBlistNode *gnode, *cnode, *bnode;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
698 ZAsyncLocateData_t ald;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
699
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
700 ald.user = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
701 memset(&(ald.uid), 0, sizeof(ZUnique_Id_t));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
702 ald.version = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
703
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
704 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
705 if (!GAIM_BLIST_NODE_IS_GROUP(gnode))
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
706 continue;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
707 for (cnode = gnode->child; cnode; cnode = cnode->next) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
708 if (!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
709 continue;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
710 for (bnode = cnode->child; bnode; bnode = bnode->next) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
711 GaimBuddy *b = (GaimBuddy *) bnode;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
712
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
713 if (!GAIM_BLIST_NODE_IS_BUDDY(bnode))
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
714 continue;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
715 if (b->account->gc == zgc) {
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7126
diff changeset
716 const char *chk;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
717
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
718 chk = local_zephyr_normalize(b->name);
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
719 /* 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
720 ZRequestLocations(chk, &ald, UNACKED, ZAUTH);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
721 free(ald.user);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
722 free(ald.version);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
723 }
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4227
diff changeset
724 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
725 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
726 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
727
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
728 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
729 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
730
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
731 static char *get_exposure_level()
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
732 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
733 char *exposure = ZGetVariable("exposure");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
734
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
735 if (!exposure)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
736 return EXPOSE_REALMVIS;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
737 if (!g_ascii_strcasecmp(exposure, EXPOSE_NONE))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
738 return EXPOSE_NONE;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
739 if (!g_ascii_strcasecmp(exposure, EXPOSE_OPSTAFF))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
740 return EXPOSE_OPSTAFF;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
741 if (!g_ascii_strcasecmp(exposure, EXPOSE_REALMANN))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
742 return EXPOSE_REALMANN;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
743 if (!g_ascii_strcasecmp(exposure, EXPOSE_NETVIS))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
744 return EXPOSE_NETVIS;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
745 if (!g_ascii_strcasecmp(exposure, EXPOSE_NETANN))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
746 return EXPOSE_NETANN;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
747 return EXPOSE_REALMVIS;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
748 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
749
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
750 static void strip_comments(char *str)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
751 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
752 char *tmp = strchr(str, '#');
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
753
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
754 if (tmp)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
755 *tmp = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
756 g_strchug(str);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
757 g_strchomp(str);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
758 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
759
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
760 static void process_zsubs()
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
761 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
762 FILE *f;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
763 gchar *fname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
764 gchar buff[BUFSIZ];
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
765
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
766 fname = g_strdup_printf("%s/.zephyr.subs", gaim_home_dir());
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
767 f = fopen(fname, "r");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
768 if (f) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
769 char **triple;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
770 ZSubscription_t sub;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
771 char *recip;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
772
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
773 while (fgets(buff, BUFSIZ, f)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
774 strip_comments(buff);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
775 if (buff[0]) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
776 triple = g_strsplit(buff, ",", 3);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
777 if (triple[0] && triple[1]) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
778 char *tmp = g_strdup_printf("%s", gaim_zephyr_get_sender());
2804
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
779 char *atptr;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
780
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
781 sub.zsub_class = triple[0];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
782 sub.zsub_classinst = triple[1];
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
783 if (triple[2] == NULL) {
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
784 recip = g_malloc0(1);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
785 } else if (!g_ascii_strcasecmp(triple[2], "%me%")) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
786 recip = g_strdup_printf("%s", gaim_zephyr_get_sender());
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
787 } else if (!g_ascii_strcasecmp(triple[2], "*")) {
2804
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
788 /* wildcard
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
789 * form of class,instance,* */
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
790 recip = g_malloc0(1);
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
791 } else if (!g_ascii_strcasecmp(triple[2], tmp)) {
2804
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
792 /* form of class,instance,aatharuv@ATHENA.MIT.EDU */
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
793 recip = g_strdup(triple[2]);
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
794 } else if ((atptr = strchr(triple[2], '@')) != NULL) {
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
795 /* form of class,instance,*@ANDREW.CMU.EDU
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
796 * class,instance,@ANDREW.CMU.EDU
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
797 * If realm is local realm, blank recipient, else
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
798 * @REALM-NAME
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
799 */
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
800 char *realmat = g_strdup_printf("@%s",
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
801 gaim_zephyr_get_realm());
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
802
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
803 if (!g_ascii_strcasecmp(atptr, realmat))
2804
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
804 recip = g_malloc0(1);
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
805 else
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
806 recip = g_strdup(atptr);
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
807 g_free(realmat);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
808 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
809 recip = g_strdup(triple[2]);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
810 }
2804
cf7e3be017a7 [gaim-migrate @ 2817]
Arun Tharuvai <aatharuv@mit.edu>
parents: 2791
diff changeset
811 g_free(tmp);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
812 sub.zsub_recipient = recip;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
813 if (ZSubscribeTo(&sub, 1, 0) != ZERR_NONE) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
814 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
815 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
816 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
817 g_free(recip);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
818 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
819 g_strfreev(triple);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
820 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
821 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
822 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
823 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
824
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
825 static void process_anyone()
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
826 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
827 FILE *fd;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
828 gchar buff[BUFSIZ], *filename;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
829 GaimGroup *g;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
830 GaimBuddy *b;
4775
239cb803fb1d [gaim-migrate @ 5095]
Mark Doliner <markdoliner@pidgin.im>
parents: 4770
diff changeset
831
239cb803fb1d [gaim-migrate @ 5095]
Mark Doliner <markdoliner@pidgin.im>
parents: 4770
diff changeset
832 if (!(g = gaim_find_group(_("Anyone")))) {
239cb803fb1d [gaim-migrate @ 5095]
Mark Doliner <markdoliner@pidgin.im>
parents: 4770
diff changeset
833 g = gaim_group_new(_("Anyone"));
239cb803fb1d [gaim-migrate @ 5095]
Mark Doliner <markdoliner@pidgin.im>
parents: 4770
diff changeset
834 gaim_blist_add_group(g, NULL);
239cb803fb1d [gaim-migrate @ 5095]
Mark Doliner <markdoliner@pidgin.im>
parents: 4770
diff changeset
835 }
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
836
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
837 filename = g_strconcat(gaim_home_dir(), "/.anyone", NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
838 if ((fd = fopen(filename, "r")) != NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
839 while (fgets(buff, BUFSIZ, fd)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
840 strip_comments(buff);
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4682
diff changeset
841 if (buff[0]) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
842 if (!(b = gaim_find_buddy(zgc->account, buff))) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
843 b = gaim_buddy_new(zgc->account, buff, NULL);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
844 gaim_blist_add_buddy(b, NULL, g, NULL);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
845 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
846 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
847 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
848 fclose(fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
849 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
850 g_free(filename);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
851 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
852
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
853 static void zephyr_login(GaimAccount * account)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
854 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
855 ZSubscription_t sub;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
856
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
857 if (zgc) {
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5234
diff changeset
858 gaim_notify_error(account->gc, NULL,
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
859 _("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
860 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
861 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
862
5606
5551bcc7e59b [gaim-migrate @ 6010]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
863 zgc = gaim_account_get_connection(account);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
864 zgc->flags |= GAIM_CONNECTION_HTML;
8645
8446e0a232e0 [gaim-migrate @ 9397]
Mark Doliner <markdoliner@pidgin.im>
parents: 8644
diff changeset
865 gaim_connection_update_progress(zgc, _("Connecting"), 0, 2);
8446e0a232e0 [gaim-migrate @ 9397]
Mark Doliner <markdoliner@pidgin.im>
parents: 8644
diff changeset
866
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
867 z_call_s(ZInitialize(), "Couldn't initialize zephyr");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
868 z_call_s(ZOpenPort(NULL), "Couldn't open port");
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
869 z_call_s(ZSetLocation((char *)
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
870 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
871
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
872 sub.zsub_class = "MESSAGE";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
873 sub.zsub_classinst = "PERSONAL";
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
874 sub.zsub_recipient = (char *)gaim_zephyr_get_sender();
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
875
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
876 /* we don't care if this fails. i'm lying right now. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
877 if (ZSubscribeTo(&sub, 1, 0) != ZERR_NONE) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
878 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
879 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
880
5606
5551bcc7e59b [gaim-migrate @ 6010]
Nathan Walp <nwalp@pidgin.im>
parents: 5436
diff changeset
881 gaim_connection_set_state(zgc, GAIM_CONNECTED);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
882 serv_finish_login(zgc);
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 process_anyone();
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
885 process_zsubs();
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
886
8273
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8212
diff changeset
887 nottimer = gaim_timeout_add(100, check_notify, NULL);
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8212
diff changeset
888 loctimer = gaim_timeout_add(20000, check_loc, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
889 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
890
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
891 static void write_zsubs()
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
892 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
893 GSList *s = subscrips;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
894 zephyr_triple *zt;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
895 FILE *fd;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
896 char *fname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
897
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
898 char **triple;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
899
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
900 fname = g_strdup_printf("%s/.zephyr.subs", gaim_home_dir());
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
901 fd = fopen(fname, "w");
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
902
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
903 if (!fd) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
904 g_free(fname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
905 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
906 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
907
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
908 while (s) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
909 zt = s->data;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
910 triple = g_strsplit(zt->name, ",", 3);
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
911 if (triple[2] != NULL) {
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
912 if (!g_ascii_strcasecmp(triple[2], "")) {
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
913 fprintf(fd, "%s,%s,*\n", triple[0], triple[1]);
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
914 } 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
915 fprintf(fd, "%s,%s,%%me%%\n", triple[0], triple[1]);
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
916 } else {
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
917 fprintf(fd, "%s\n", zt->name);
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
918 }
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
919 } else {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
920 fprintf(fd, "%s,%s,*\n", triple[0], triple[1]);
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
921 }
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
922 g_free(triple);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
923 s = s->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
924 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
925 g_free(fname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
926 fclose(fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
927 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
928
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
929 static void write_anyone()
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
930 {
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
931 GaimBlistNode *gnode, *cnode, *bnode;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
932 GaimBuddy *b;
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
933 char *ptr, *fname, *ptr2;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
934 FILE *fd;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
935
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
936 fname = g_strdup_printf("%s/.anyone", gaim_home_dir());
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
937 fd = fopen(fname, "w");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
938 if (!fd) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
939 g_free(fname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
940 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
941 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
942
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
943 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
944 if (!GAIM_BLIST_NODE_IS_GROUP(gnode))
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
945 continue;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
946 for (cnode = gnode->child; cnode; cnode = cnode->next) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
947 if (!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
948 continue;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
949 for (bnode = cnode->child; bnode; bnode = bnode->next) {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
950 if (!GAIM_BLIST_NODE_IS_BUDDY(bnode))
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
951 continue;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
952 b = (GaimBuddy *) bnode;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
953 if (b->account == zgc->account) {
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
954 if ((ptr = strchr(b->name, '@')) != NULL) {
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
955 ptr2 = ptr + 1;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
956 /* We should only strip the realm name if the principal
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
957 is in the user's realm
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
958 */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
959 if (!g_ascii_strcasecmp(ptr2, gaim_zephyr_get_realm())) {
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
960 *ptr = '\0';
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
961 }
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4227
diff changeset
962 }
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
963 fprintf(fd, "%s\n", b->name);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
964 if (ptr)
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
965 *ptr = '@';
3277
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
966 }
2e952a437c23 [gaim-migrate @ 3295]
Arun Tharuvai <aatharuv@mit.edu>
parents: 3158
diff changeset
967 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
968 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
969 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
970
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
971 fclose(fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
972 g_free(fname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
973 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
974
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
975 static void zephyr_close(GaimConnection * gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
976 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
977 GList *l;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
978 GSList *s;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
979
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
980 l = pending_zloc_names;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
981 while (l) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
982 g_free((char *)l->data);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
983 l = l->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
984 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
985 g_list_free(pending_zloc_names);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
986
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
987 if (gaim_account_get_bool(zgc->account, "write_anyone", FALSE))
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
988 write_anyone();
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
989
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
990 if (gaim_account_get_bool(zgc->account, "write_zsubs", FALSE))
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
991 write_zsubs();
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
992
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
993 s = subscrips;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
994 while (s) {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
995 free_triple((zephyr_triple *) s->data);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
996 s = s->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
997 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
998 g_slist_free(subscrips);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
999
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1000 if (nottimer)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
1001 gaim_timeout_remove(nottimer);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1002 nottimer = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1003 if (loctimer)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
1004 gaim_timeout_remove(loctimer);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1005 loctimer = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1006 zgc = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1007 z_call(ZCancelSubscriptions(0));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1008 z_call(ZUnsetLocation());
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1009 z_call(ZClosePort());
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1010 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1011
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1012 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
1013 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1014 ZNotice_t notice;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1015 zephyr_triple *zt;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1016 char *buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1017 const char *sig;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1018 GaimConversation *gconv1;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1019 GaimConvChat *gcc;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1020 char *inst;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1021 char *html_buf;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1022 char *html_buf2;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1023
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1024 zt = find_sub_by_id(id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1025 if (!zt)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1026 /* this should never happen. */
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
1027 return -EINVAL;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1028
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1029 sig = ZGetVariable("zwrite-signature");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1030 if (!sig) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1031 sig = g_get_real_name();
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1032 }
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
1033
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1034 html_buf = html_to_zephyr(im);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1035 html_buf2 = gaim_unescape_html(html_buf);
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
1036
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
1037 buf = g_strdup_printf("%s%c%s", sig, '\0', html_buf2);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1038
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1039 gconv1 = gaim_find_conversation_with_account(zt->name, zgc->account);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1040 gcc = gaim_conversation_get_chat_data(gconv1);
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1041
8712
1f6f8720fbd2 [gaim-migrate @ 9466]
Ethan Blanton <elb@pidgin.im>
parents: 8645
diff changeset
1042 /* This patently does not make sense ... if inst is not set by
1f6f8720fbd2 [gaim-migrate @ 9466]
Ethan Blanton <elb@pidgin.im>
parents: 8645
diff changeset
1043 * gaim_conv_chat_get_topic, we set it to the uninitialized
1f6f8720fbd2 [gaim-migrate @ 9466]
Ethan Blanton <elb@pidgin.im>
parents: 8645
diff changeset
1044 * value of notice.z_class_inst, only to set notice.z_class_inst
1f6f8720fbd2 [gaim-migrate @ 9466]
Ethan Blanton <elb@pidgin.im>
parents: 8645
diff changeset
1045 * back to inst in a half a dozen lines. I'm just going to let
1f6f8720fbd2 [gaim-migrate @ 9466]
Ethan Blanton <elb@pidgin.im>
parents: 8645
diff changeset
1046 * it remain NULL instead.
1f6f8720fbd2 [gaim-migrate @ 9466]
Ethan Blanton <elb@pidgin.im>
parents: 8645
diff changeset
1047 *
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1048 if (!(inst = (char *)gaim_conv_chat_get_topic(gcc)))
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1049 inst = (char *)notice.z_class_inst;
8712
1f6f8720fbd2 [gaim-migrate @ 9466]
Ethan Blanton <elb@pidgin.im>
parents: 8645
diff changeset
1050 */
1f6f8720fbd2 [gaim-migrate @ 9466]
Ethan Blanton <elb@pidgin.im>
parents: 8645
diff changeset
1051 inst = (char *)gaim_conv_chat_get_topic(gcc);
1f6f8720fbd2 [gaim-migrate @ 9466]
Ethan Blanton <elb@pidgin.im>
parents: 8645
diff changeset
1052 /* There, now isn't that better? */
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1053
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1054 bzero((char *)&notice, sizeof(notice));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1055 notice.z_kind = ACKED;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1056 notice.z_port = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1057 notice.z_opcode = "";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1058 notice.z_class = zt->class;
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1059 notice.z_class_inst = inst;
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1060 if (!g_ascii_strcasecmp(zt->recipient, "*"))
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1061 notice.z_recipient = local_zephyr_normalize("");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1062 else
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1063 notice.z_recipient = local_zephyr_normalize(zt->recipient);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1064 notice.z_sender = 0;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1065 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
1066 notice.z_message_len = strlen(html_buf2) + strlen(sig) + 2;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1067 notice.z_message = buf;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1068 g_free(html_buf);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1069 g_free(html_buf2);
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
1070
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1071 ZSendNotice(&notice, ZAUTH);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1072 g_free(buf);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
1073 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1074 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1075
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1076 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
1077 {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1078 ZNotice_t notice;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1079 char *buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1080 const char *sig;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1081 char *html_buf;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1082 char *html_buf2;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1083
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7084
diff changeset
1084 if (flags & GAIM_CONV_IM_AUTO_RESP)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1085 sig = "Automated reply:";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1086 else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1087 sig = ZGetVariable("zwrite-signature");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1088 if (!sig) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1089 sig = g_get_real_name();
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1090 }
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
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1093 html_buf = html_to_zephyr(im);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1094 html_buf2 = gaim_unescape_html(html_buf);
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
1095
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
1096 buf = g_strdup_printf("%s%c%s", sig, '\0', html_buf2);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1097 bzero((char *)&notice, sizeof(notice));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1098 notice.z_kind = ACKED;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1099 notice.z_port = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1100 notice.z_opcode = "";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1101 notice.z_class = "MESSAGE";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1102 notice.z_class_inst = "PERSONAL";
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1103 notice.z_sender = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1104 notice.z_recipient = who;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1105 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
1106 notice.z_message_len = strlen(html_buf2) + strlen(sig) + 2;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1107 notice.z_message = buf;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1108 g_free(html_buf2);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1109 g_free(html_buf);
8451
bc6976e84e8f [gaim-migrate @ 9181]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8449
diff changeset
1110
6904
6c6f9543d94e [gaim-migrate @ 7451]
Arun Tharuvai <aatharuv@mit.edu>
parents: 6787
diff changeset
1111 ZSendNotice(&notice, ZAUTH);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1112 g_free(buf);
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2231
diff changeset
1113 return 1;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1114 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1115
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1116 static const char *zephyr_normalize(const GaimAccount * account, const char *orig)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1117 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1118 static char buf[80];
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1119
7126
fc9c1b53de71 [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
1120 if (!g_ascii_strcasecmp(orig, "")) {
fc9c1b53de71 [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
1121 buf[0] = '\0';
fc9c1b53de71 [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
1122 return buf;
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1123 } else {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1124 g_snprintf(buf, 80, "%s", orig);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1125 }
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1126 return buf;
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1127 }
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1128
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1129
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1130 static const char *local_zephyr_normalize(const char *orig)
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1131 {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1132 static char buf[80];
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1133
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1134 if (!g_ascii_strcasecmp(orig, "")) {
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1135 buf[0] = '\0';
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1136 return buf;
7126
fc9c1b53de71 [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
1137 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1138
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1139 if (strchr(orig, '@')) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1140 g_snprintf(buf, 80, "%s", orig);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1141 } else {
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1142 g_snprintf(buf, 80, "%s@%s", orig, gaim_zephyr_get_realm());
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1143 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1144 return buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1145 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1146
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1147 static void zephyr_zloc(GaimConnection * gc, const char *who)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1148 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1149 ZAsyncLocateData_t ald;
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7126
diff changeset
1150
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1151 if (ZRequestLocations(local_zephyr_normalize(who), &ald, UNACKED, ZAUTH)
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1152 != ZERR_NONE) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1153 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1154 }
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1155 pending_zloc_names = g_list_append(pending_zloc_names, g_strdup(local_zephyr_normalize(who)));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1156 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1157
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1158 static GList *zephyr_buddy_menu(GaimConnection * gc, const char *who)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1159 {
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1160 GList *m = NULL;
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1161 struct proto_buddy_menu *pbm;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1162
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1163 pbm = g_new0(struct proto_buddy_menu, 1);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1164
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1165 pbm->label = _("ZLocate");
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1166 pbm->callback = zephyr_zloc;
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1167 pbm->gc = gc;
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1168 m = g_list_append(m, pbm);
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1169
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
1170 return m;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1171 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1172
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1173 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
1174 {
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 3867
diff changeset
1175 if (gc->away) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1176 g_free(gc->away);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 3867
diff changeset
1177 gc->away = NULL;
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 3867
diff changeset
1178 }
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 3867
diff changeset
1179
5132
9b087ef3f525 [gaim-migrate @ 5495]
Mark Doliner <markdoliner@pidgin.im>
parents: 4793
diff changeset
1180 if (!g_ascii_strcasecmp(state, _("Hidden"))) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1181 ZSetLocation(EXPOSE_OPSTAFF);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 3867
diff changeset
1182 gc->away = g_strdup("");
5132
9b087ef3f525 [gaim-migrate @ 5495]
Mark Doliner <markdoliner@pidgin.im>
parents: 4793
diff changeset
1183 } else if (!g_ascii_strcasecmp(state, _("Online")))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1184 ZSetLocation(get_exposure_level());
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1185 else /* state is GAIM_AWAY_CUSTOM */ if (msg)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1186 gc->away = g_strdup(msg);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1187 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1188
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1189 static GList *zephyr_away_states(GaimConnection * gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1190 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1191 GList *m = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1192
5132
9b087ef3f525 [gaim-migrate @ 5495]
Mark Doliner <markdoliner@pidgin.im>
parents: 4793
diff changeset
1193 m = g_list_append(m, _("Online"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1194 m = g_list_append(m, GAIM_AWAY_CUSTOM);
5132
9b087ef3f525 [gaim-migrate @ 5495]
Mark Doliner <markdoliner@pidgin.im>
parents: 4793
diff changeset
1195 m = g_list_append(m, _("Hidden"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1196
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1197 return m;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1198 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1199
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1200 static GList *zephyr_chat_info(GaimConnection * gc)
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1201 {
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1202 GList *m = NULL;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1203 struct proto_chat_entry *pce;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1204
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1205 pce = g_new0(struct proto_chat_entry, 1);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1206
7841
0000a4c68bf8 [gaim-migrate @ 8494]
Mark Doliner <markdoliner@pidgin.im>
parents: 7475
diff changeset
1207 pce->label = _("_Class:");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1208 pce->identifier = "class";
3158
47352d96c3c9 [gaim-migrate @ 3174]
Harald Barth
parents: 3033
diff changeset
1209 m = g_list_append(m, pce);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1210
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1211 pce = g_new0(struct proto_chat_entry, 1);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1212
7841
0000a4c68bf8 [gaim-migrate @ 8494]
Mark Doliner <markdoliner@pidgin.im>
parents: 7475
diff changeset
1213 pce->label = _("_Instance:");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1214 pce->identifier = "instance";
3158
47352d96c3c9 [gaim-migrate @ 3174]
Harald Barth
parents: 3033
diff changeset
1215 m = g_list_append(m, pce);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1216
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1217 pce = g_new0(struct proto_chat_entry, 1);
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1218
7841
0000a4c68bf8 [gaim-migrate @ 8494]
Mark Doliner <markdoliner@pidgin.im>
parents: 7475
diff changeset
1219 pce->label = _("_Recipient:");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1220 pce->identifier = "recipient";
3158
47352d96c3c9 [gaim-migrate @ 3174]
Harald Barth
parents: 3033
diff changeset
1221 m = g_list_append(m, pce);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1222
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1223 return m;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1224 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1225
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1226 static void zephyr_join_chat(GaimConnection * gc, GHashTable * data)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1227 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1228 ZSubscription_t sub;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1229 zephyr_triple *zt1, *zt2;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1230 const char *classname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1231 const char *instname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1232 const char *recip;
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1233
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1234 classname = g_hash_table_lookup(data, "class");
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1235 instname = g_hash_table_lookup(data, "instance");
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1236 recip = g_hash_table_lookup(data, "recipient");
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1237
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1238 if (!classname || !instname || !recip)
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1239 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1240
4793
1da93f6c80f3 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1241 if (!g_ascii_strcasecmp(recip, "%me%"))
8354
61ee455834c5 [gaim-migrate @ 9078]
Arun Tharuvai <aatharuv@mit.edu>
parents: 8287
diff changeset
1242 recip = gaim_zephyr_get_sender();
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1243
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1244 zt1 = new_triple(classname, instname, recip);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1245 zt2 = find_sub_by_triple(zt1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1246 if (zt2) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1247 free_triple(zt1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1248 if (!zt2->open)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1249 serv_got_joined_chat(gc, zt2->id, zt2->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1250 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1251 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1252
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1253 sub.zsub_class = zt1->class;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1254 sub.zsub_classinst = zt1->instance;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1255 sub.zsub_recipient = zt1->recipient;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1256
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1257 if (ZSubscribeTo(&sub, 1, 0) != ZERR_NONE) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1258 free_triple(zt1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1259 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1260 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1261
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1262 subscrips = g_slist_append(subscrips, zt1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1263 zt1->open = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1264 serv_got_joined_chat(gc, zt1->id, zt1->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1265 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1266
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1267 static void zephyr_chat_leave(GaimConnection * gc, int id)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1268 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1269 zephyr_triple *zt;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1270
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1271 zt = find_sub_by_id(id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1272 if (zt) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1273 zt->open = FALSE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1274 zt->id = ++last_id;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1275 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1276 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1277
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1278 static const char *zephyr_list_icon(GaimAccount * a, GaimBuddy * b)
5202
2c78987f497b [gaim-migrate @ 5568]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1279 {
2c78987f497b [gaim-migrate @ 5568]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1280 return "zephyr";
2c78987f497b [gaim-migrate @ 5568]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1281 }
2c78987f497b [gaim-migrate @ 5568]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1282
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1283
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1284 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
1285 {
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1286 zephyr_triple *zt;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1287 GaimConversation *gconv;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1288 GaimConvChat *gcc;
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1289 char *sender = (char *)gaim_zephyr_get_sender();
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1290
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1291 zt = find_sub_by_id(id);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1292 gconv = gaim_find_conversation_with_account(zt->name, zgc->account);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1293 gcc = gaim_conversation_get_chat_data(gconv);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1294 gaim_conv_chat_set_topic(gcc, sender, topic);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1295
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1296 }
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1297
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1298 static GaimPlugin *my_protocol = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1299
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1300 static GaimPluginProtocolInfo prpl_info = {
8749
fb487e9e101a [gaim-migrate @ 9504]
Christian Hammond <chipx86@chipx86.com>
parents: 8713
diff changeset
1301 GAIM_PRPL_API_VERSION,
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1302 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_NO_PASSWORD,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1303 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1304 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1305 zephyr_list_icon,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1306 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1307 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1308 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1309 zephyr_away_states,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1310 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1311 zephyr_buddy_menu,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1312 zephyr_chat_info,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1313 zephyr_login,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1314 zephyr_close,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1315 zephyr_send_im,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1316 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1317 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1318 zephyr_zloc,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1319 zephyr_set_away,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1320 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1321 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1322 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1323 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1324 NULL,
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1325 NULL,
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1326 NULL,
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1327 NULL,
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1328 NULL,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1329 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1330 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1331 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1332 zephyr_join_chat,
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1333 NULL, /* reject chat invite */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1334 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1335 zephyr_chat_leave,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1336 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1337 zephyr_chat_send,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1338 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1339 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1340 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1341 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1342 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1343 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1344 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1345 NULL,
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
1346 NULL,
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1347 zephyr_normalize,
8568
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
1348 NULL,
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
1349 NULL,
66907b37ce85 [gaim-migrate @ 9316]
Mark Doliner <markdoliner@pidgin.im>
parents: 8562
diff changeset
1350 NULL,
8586
c8c7a19da549 [gaim-migrate @ 9336]
Pekka Riikonen <priikone@silcnet.org>
parents: 8568
diff changeset
1351 zephyr_chat_set_topic,
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1352 NULL,
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1353 NULL,
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1354 NULL,
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1355 NULL,
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1356 NULL
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1357 };
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1358
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1359 static GaimPluginInfo info = {
8749
fb487e9e101a [gaim-migrate @ 9504]
Christian Hammond <chipx86@chipx86.com>
parents: 8713
diff changeset
1360 GAIM_PLUGIN_API_VERSION, /**< api_version */
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1361 GAIM_PLUGIN_PROTOCOL, /**< type */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1362 NULL, /**< ui_requirement */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1363 0, /**< flags */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1364 NULL, /**< dependencies */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1365 GAIM_PRIORITY_DEFAULT, /**< priority */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1366
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1367 "prpl-zephyr", /**< id */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1368 "Zephyr", /**< name */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1369 VERSION, /**< version */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1370 /** summary */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1371 N_("Zephyr Protocol Plugin"),
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1372 /** description */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1373 N_("Zephyr Protocol Plugin"),
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1374 NULL, /**< author */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1375 GAIM_WEBSITE, /**< homepage */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1376
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1377 NULL, /**< load */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1378 NULL, /**< unload */
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1379 NULL, /**< destroy */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1380
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1381 NULL, /**< ui_info */
8993
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8954
diff changeset
1382 &prpl_info, /**< extra_info */
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8954
diff changeset
1383 NULL,
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8954
diff changeset
1384 NULL
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1385 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1386
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1387 static void init_plugin(GaimPlugin * plugin)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1388 {
8212
ba23de5af029 [gaim-migrate @ 8935]
Tim Ringenbach <marv@pidgin.im>
parents: 8170
diff changeset
1389 GaimAccountOption *option;
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1390 char *tmp = get_exposure_level();
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1391
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1392 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
1393 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
1394
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1395 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
1396 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
1397
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1398 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
1399 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
1400
8644
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1401 option = gaim_account_option_string_new(_("Encoding"), "encoding", ZEPHYR_FALLBACK_CHARSET);
ba37f1cc0006 [gaim-migrate @ 9396]
Mark Doliner <markdoliner@pidgin.im>
parents: 8641
diff changeset
1402 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
1403
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1404 my_protocol = plugin;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1405 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1406
5920
963bfdefee02 [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1407 GAIM_INIT_PLUGIN(zephyr, init_plugin, info);

mercurial