annotate src/protocols/zephyr/zephyr.c @ 9740:2bb5e2cd64bd

[gaim-migrate @ 10605] " A few days back, someone on #gaim was wondering how to block IM's from IRC, which isn't supported by gaim, as this isn't supported at a protocol level. I decided to implement gaim's privacy options (permit lists, deny lists, block all users, and permit people on buddy list) at a local level for IRC and Zephyr. Jabber, SILC, and Trepia don't seem to support deny or permit lists in Gaim, but I don't use the latter two protocols and wasn't sure about how to implemnt in in Jabber. When implementing it, I noticed that changes in privacy settings didn't automatically cause blist.xml to get scheduled for writing (even on exit). To fix this, I needed to make schedule_blist_save in blist.c non-static and call it from serv_set_permit_deny() in server.c, and gaim_privacy_{permit,deny}_{add,remove} in privacy.c ." --Arun A Tharuvai committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Wed, 11 Aug 2004 23:52:48 +0000
parents db62420a53a2
children b10d4c6ac7eb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2 /*
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3 * gaim
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5 * Copyright (C) 1998-2001, Mark Spencer <markster@marko.net>
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6 * Some code borrowed from GtkZephyr, by
7084
0909ebf6fb28 [gaim-migrate @ 7649]
Christian Hammond <chipx86@chipx86.com>
parents: 7070
diff changeset
7 * Jag/Sean Dilda <agrajag@linuxpower.org>/<smdilda@unity.ncsu.edu>
0909ebf6fb28 [gaim-migrate @ 7649]
Christian Hammond <chipx86@chipx86.com>
parents: 7070
diff changeset
8 * http://gtkzephyr.linuxpower.org/
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
9 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
10 * This program is free software; you can redistribute it and/or modify
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
11 * it under the terms of the GNU General Public License as published by
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
12 * the Free Software Foundation; either version 2 of the License, or
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
13 * (at your option) any later version.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
14 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
18 * GNU General Public License for more details.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
19 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
21 * along with this program; if not, write to the Free Software
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
23 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
24 */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
25 /* XXX eww */
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
26 #include "src/internal.h"
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
27
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
28 #include "accountopt.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
29 #include "debug.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
30 #include "notify.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
31 #include "prpl.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
32 #include "server.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
33 #include "util.h"
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
34 #include "cmds.h"
9740
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
35 #include "privacy.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
36
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
37 #include "zephyr/zephyr.h"
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
38 #include "internal.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
39
8386
143d0b29ba82 [gaim-migrate @ 9114]
Mark Doliner <mark@kingant.net>
parents: 8354
diff changeset
40 #include <strings.h>
143d0b29ba82 [gaim-migrate @ 9114]
Mark Doliner <mark@kingant.net>
parents: 8354
diff changeset
41
8560
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
42 #define ZEPHYR_FALLBACK_CHARSET "ISO-8859-1"
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
43
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
44 /* these are deliberately high, since most people don't send multiple "PING"s */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
45 #define ZEPHYR_TYPING_SEND_TIMEOUT 15
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
46 #define ZEPHYR_TYPING_RECV_TIMEOUT 10
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
47
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
48 extern Code_t ZGetLocations(ZLocations_t *, int *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
49 extern Code_t ZSetLocation(char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
50 extern Code_t ZUnsetLocation();
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
51 extern Code_t ZGetSubscriptions(ZSubscription_t *, int*);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
52
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
53 typedef struct _zframe zframe;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
54 typedef struct _zephyr_triple zephyr_triple;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
55 typedef struct _zephyr_account zephyr_account;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
56
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
57
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
58 struct _zephyr_account {
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
59 GaimAccount* account;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
60 char *username;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
61 char* realm;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
62 char* galaxy;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
63 char* krbtkfile;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
64 guint32 nottimer;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
65 guint32 loctimer;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
66 GList *pending_zloc_names;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
67 GSList *subscrips;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
68 int last_id;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
69 unsigned short port;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
70 char ourhost[MAXHOSTNAMELEN];
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
71 char ourhostcanon[MAXHOSTNAMELEN];
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
72 };
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
73
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
74 /* struct I need for zephyr_to_html */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
75 struct _zframe {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
76 /* true for everything but @color, since inside the parens of that one is
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
77 * the color. */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
78 gboolean has_closer;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
79 /* </i>, </font>, </b>, etc. */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
80 char *closing;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
81 /* text including the opening html thingie. */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
82 GString *text;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
83 struct _zframe *enclosing;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
84 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
85
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
86 struct _zephyr_triple {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
87 char *class;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
88 char *instance;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
89 char *recipient;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
90 char *name;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
91 gboolean open;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
92 int id;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
93 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
94
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
95 #define z_call(func) if (func != ZERR_NONE)\
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
96 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
97 #define z_call_r(func) if (func != ZERR_NONE)\
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
98 return TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
99 #define z_call_s(func, err) if (func != ZERR_NONE) {\
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
100 gaim_connection_error(gc, err);\
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
101 return;\
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
102 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
103
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
104 char *local_zephyr_normalize(const char *);
7322
ab828b8c3f22 [gaim-migrate @ 7908]
Nathan Walp <nwalp@pidgin.im>
parents: 7262
diff changeset
105 static const char *zephyr_normalize(const GaimAccount *, const char *);
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
106 static const char *gaim_zephyr_get_realm();
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
107 static void zephyr_chat_set_topic(GaimConnection * gc, int id, const char *topic);
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
108
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
109 char *zephyr_strip_foreign_realm(const char* user){
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
110 /*
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
111 Takes in a username of the form username or username@realm
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
112 and returns:
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
113 username, if there is no realm, or the realm is the local realm
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
114 or:
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
115 username@realm if there is a realm and it is foreign
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
116 */
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
117 char *tmp = g_strdup(user);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
118 char *at = strchr(tmp,'@');
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
119 if (at && !g_ascii_strcasecmp(at+1,gaim_zephyr_get_realm())) {
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
120 /* We're passed in a username of the form user@users-realm */
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
121 char* tmp2;
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
122 *at = '\0';
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
123 tmp2 = g_strdup(tmp);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
124 g_free(tmp);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
125 return tmp2;
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
126 }
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
127 else {
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
128 /* We're passed in a username of the form user or user@foreign-realm */
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
129 return tmp;
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
130 }
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
131 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
132
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
133 /* this is so bad, and if Zephyr weren't so fucked up to begin with I
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
134 * wouldn't do this. but it is so i will. */
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
135
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
136 /* just for debugging */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
137 static void handle_unknown(ZNotice_t notice)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
138 {
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
139 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_packet: %s\n", notice.z_packet);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
140 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_version: %s\n", notice.z_version);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
141 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_kind: %d\n", (int)(notice.z_kind));
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
142 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_class: %s\n", notice.z_class);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
143 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_class_inst: %s\n", notice.z_class_inst);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
144 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_opcode: %s\n", notice.z_opcode);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
145 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_sender: %s\n", notice.z_sender);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
146 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_recipient: %s\n", notice.z_recipient);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
147 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_message: %s\n", notice.z_message);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
148 gaim_debug(GAIM_DEBUG_MISC, "zephyr","z_message_len: %d\n", notice.z_message_len);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
149 }
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
150
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
151
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
152 static zephyr_triple *new_triple(zephyr_account *zephyr,const char *c, const char *i, const char *r)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
153 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
154 zephyr_triple *zt;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
155
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
156 zt = g_new0(zephyr_triple, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
157 zt->class = g_strdup(c);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
158 zt->instance = g_strdup(i);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
159 zt->recipient = g_strdup(r);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
160 zt->name = g_strdup_printf("%s,%s,%s", c, i?i:"", r?r:"");
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
161 zt->id = ++(zephyr->last_id);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
162 zt->open = FALSE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
163 return zt;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
164 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
165
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
166 static void free_triple(zephyr_triple * zt)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
167 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
168 g_free(zt->class);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
169 g_free(zt->instance);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
170 g_free(zt->recipient);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
171 g_free(zt->name);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
172 g_free(zt);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
173 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
174
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
175 static gchar *gaim_zephyr_get_sender()
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
176 {
8568
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
177 /* will be useful once this plugin can use a backend other
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
178 than libzephyr */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
179 /* XXX add zephyr error reporting */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
180 gchar *sender;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
181 sender = ZGetSender();
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
182 if (!sender || !g_ascii_strcasecmp(sender,"")) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
183 sender = "";
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
184 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
185 return sender;
8354
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
186 }
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
187
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
188 static const char *gaim_zephyr_get_realm()
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
189 {
8568
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
190 /* will be useful once this plugin can use a backend other
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
191 than libzephyr */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
192 gchar *realm=NULL;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
193 /* XXX add zephyr error reporting */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
194 realm= ZGetRealm();
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
195 return realm;
8354
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
196 }
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
197
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
198 /* returns true if zt1 is a subset of zt2. This function is used to
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
199 determine whether a zephyr sent to zt1 should be placed in the chat
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
200 with triple zt2
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
201
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
202 zt1 is a subset of zt2
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
203 iff. the classnames are identical ignoring case
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
204 AND. the instance names are identical (ignoring case), or zt2->instance is *.
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
205 AND. the recipient names are identical
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
206 */
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
207
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
208 static gboolean triple_subset(zephyr_triple * zt1, zephyr_triple * zt2)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
209 {
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
210 if (g_ascii_strcasecmp(zt2->class, zt1->class)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
211 return FALSE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
212 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
213 if (g_ascii_strcasecmp(zt2->instance, zt1->instance) && g_ascii_strcasecmp(zt2->instance, "*")) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
214 return FALSE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
215 }
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
216 if (g_ascii_strcasecmp(zt2->recipient, zt1->recipient)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
217 return FALSE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
218 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
219 return TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
220 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
221
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
222 static zephyr_triple *find_sub_by_triple(zephyr_account *zephyr,zephyr_triple * zt)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
223 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
224 zephyr_triple *curr_t;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
225 GSList *curr = zephyr->subscrips;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
226
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
227 while (curr) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
228 curr_t = curr->data;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
229 if (triple_subset(zt, curr_t))
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
230 return curr_t;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
231 curr = curr->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
232 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
233 return NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
234 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
235
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
236 static zephyr_triple *find_sub_by_id(zephyr_account *zephyr,int id)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
237 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
238 zephyr_triple *zt;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
239 GSList *curr = zephyr->subscrips;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
240
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
241 while (curr) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
242 zt = curr->data;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
243 if (zt->id == id)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
244 return zt;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
245 curr = curr->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
246 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
247 return NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
248 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
249
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
250 /*
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
251 Converts strings to utf-8 if necessary using user specified encoding
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
252 */
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
253
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
254 static gchar *zephyr_recv_convert(GaimConnection *gc,gchar *string, int len)
8560
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
255 {
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
256 gchar *utf8;
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
257 GError *err = NULL;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
258
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
259 if (g_utf8_validate(string, len, NULL)) {
8568
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
260 return g_strdup(string);
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
261 } else {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
262 utf8 = g_convert(string, len, "UTF-8", gaim_account_get_string(gc->account, "encoding", ZEPHYR_FALLBACK_CHARSET), NULL, NULL, &err);
8568
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
263 if (err) {
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
264 gaim_debug(GAIM_DEBUG_ERROR, "zephyr", "recv conversion error: %s\n", err->message);
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
265 utf8 = g_strdup(_("(There was an error converting this message. Check the 'Encoding' option in the Account Editor)"));
8954
c60f82d78dea [gaim-migrate @ 9727]
Luke Schierer <lschiere@pidgin.im>
parents: 8950
diff changeset
266 g_error_free(err);
8568
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
267 }
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
268
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
269 return utf8;
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
270 }
8560
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
271 }
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
272
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
273 /* utility macros that are useful for zephyr_to_html */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
274
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
275 #define IS_OPENER(c) ((c == '{') || (c == '[') || (c == '(') || (c == '<'))
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
276 #define IS_CLOSER(c) ((c == '}') || (c == ']') || (c == ')') || (c == '>'))
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
277
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
278 /* This parses HTML formatting (put out by one of the gtkimhtml widgets
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
279 And converts it to zephyr formatting.
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
280 It currently deals properly with <b>, <br>, <i>, <font face=...>, <font color=...>,
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
281 It ignores <font back=...>
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
282 It does
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
283 <font size = "1 or 2" -> @small
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
284 3 or 4 @medium()
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
285 5,6, or 7 @large()
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
286 <a href is dealt with by ignoring the description and outputting the link
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
287 */
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
288
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
289 static char *html_to_zephyr(const char *message)
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
290 {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
291 int len, cnt, retcount;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
292 char *ret;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
293
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
294 len = strlen(message);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
295 if (!len)
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
296 return g_strdup("");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
297
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
298 ret = g_new0(char, len * 3);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
299
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
300 bzero(ret, len * 3);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
301 retcount = 0;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
302 cnt = 0;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
303 while (cnt <= len) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
304 if (message[cnt] == '<') {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
305 if (!g_ascii_strncasecmp(message + cnt + 1, "i>", 2)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
306 strncpy(ret + retcount, "@i(", 3);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
307 cnt += 3;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
308 retcount += 3;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
309 } else if (!g_ascii_strncasecmp(message + cnt + 1, "b>", 2)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
310 strncpy(ret + retcount, "@b(", 3);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
311 cnt += 3;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
312 retcount += 3;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
313 } else if (!g_ascii_strncasecmp(message + cnt + 1, "br>", 3)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
314 strncpy(ret + retcount, "\n", 1);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
315 cnt += 4;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
316 retcount += 1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
317 } else if (!g_ascii_strncasecmp(message + cnt + 1, "a href=\"", 8)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
318 cnt += 9;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
319 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
320 ret[retcount] = message[cnt];
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
321 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
322 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
323 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
324 cnt += 2;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
325 /* ignore descriptive string */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
326 while (g_ascii_strncasecmp(message + cnt, "</a>", 4) != 0) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
327 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
328 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
329 cnt += 4;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
330 } else if (!g_ascii_strncasecmp(message + cnt + 1, "font", 4)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
331 cnt += 5;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
332 while (!g_ascii_strncasecmp(message + cnt, " ", 1))
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
333 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
334 if (!g_ascii_strncasecmp(message + cnt, "color=\"", 7)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
335 cnt += 7;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
336 strncpy(ret + retcount, "@color(", 7);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
337 retcount += 7;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
338 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
339 ret[retcount] = message[cnt];
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
340 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
341 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
342 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
343 ret[retcount] = ')';
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
344 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
345 cnt += 2;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
346 } else if (!g_ascii_strncasecmp(message + cnt, "face=\"", 6)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
347 cnt += 6;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
348 strncpy(ret + retcount, "@font(", 6);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
349 retcount += 6;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
350 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
351 ret[retcount] = message[cnt];
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
352 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
353 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
354 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
355 ret[retcount] = ')';
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
356 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
357 cnt += 2;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
358 } else if (!g_ascii_strncasecmp(message + cnt, "size=\"", 6)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
359 cnt += 6;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
360 if ((message[cnt] == '1') || (message[cnt] == '2')) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
361 strncpy(ret + retcount, "@small(", 7);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
362 retcount += 7;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
363 } else if ((message[cnt] == '3')
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
364 || (message[cnt] == '4')) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
365 strncpy(ret + retcount, "@medium(", 8);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
366 retcount += 8;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
367 } else if ((message[cnt] == '5')
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
368 || (message[cnt] == '6')
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
369 || (message[cnt] == '7')) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
370 strncpy(ret + retcount, "@large(", 7);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
371 retcount += 7;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
372 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
373 cnt += 3;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
374 } else {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
375 /* Drop all unrecognized/misparsed font tags */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
376 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
377 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
378 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
379 cnt += 2;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
380 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
381 } else if (!g_ascii_strncasecmp(message + cnt + 1, "/i>", 3)
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
382 || !g_ascii_strncasecmp(message + cnt + 1, "/b>", 3)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
383 cnt += 4;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
384 ret[retcount] = ')';
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
385 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
386 } else if (!g_ascii_strncasecmp(message + cnt + 1, "/font>", 6)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
387 cnt += 7;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
388 strncpy(ret + retcount, "@font(fixed)", 12);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
389 retcount += 12;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
390 } else {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
391 /* Catch all for all unrecognized/misparsed <foo> tage */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
392 while (g_ascii_strncasecmp(message + cnt, ">", 1) != 0) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
393 ret[retcount] = message[cnt];
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
394 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
395 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
396 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
397 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
398 } else {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
399 /* Duh */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
400 ret[retcount] = message[cnt];
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
401 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
402 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
403 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
404 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
405 return ret;
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
406 }
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
407
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
408 /* this parses zephyr formatting and converts it to html. For example, if
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
409 * you pass in "@{@color(blue)@i(hello)}" you should get out
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
410 * "<font color=blue><i>hello</i></font>". */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
411 static char *zephyr_to_html(char *message)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
412 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
413 int len, cnt;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
414 zframe *frames, *curr;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
415 char *ret;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
416
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
417 frames = g_new(zframe, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
418 frames->text = g_string_new("");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
419 frames->enclosing = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
420 frames->closing = "";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
421 frames->has_closer = FALSE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
422
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
423 len = strlen(message);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
424 cnt = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
425 while (cnt <= len) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
426 if (message[cnt] == '@') {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
427 zframe *new_f;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
428 char *buf;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
429 int end;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
430
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
431 for (end = 1; (cnt + end) <= len && !IS_OPENER(message[cnt + end])
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
432 && !IS_CLOSER(message[cnt + end]); end++);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
433 buf = g_new0(char, end);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
434
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
435 if (end) {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
436 g_snprintf(buf, end, "%s", message + cnt + 1);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
437 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
438 if (!g_ascii_strcasecmp(buf, "italic") || !g_ascii_strcasecmp(buf, "i")) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
439 new_f = g_new(zframe, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
440 new_f->enclosing = frames;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
441 new_f->text = g_string_new("<i>");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
442 new_f->closing = "</i>";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
443 new_f->has_closer = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
444 frames = new_f;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
445 cnt += end + 1; /* cnt points to char after opener */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
446 } else if (!g_ascii_strcasecmp(buf, "small")) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
447 new_f = g_new(zframe, 1);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
448 new_f->enclosing = frames;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
449 new_f->text = g_string_new("<font size=\"1\">");
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
450 new_f->closing = "</font>";
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
451 frames = new_f;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
452 cnt += end + 1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
453 } else if (!g_ascii_strcasecmp(buf, "medium")) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
454 new_f = g_new(zframe, 1);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
455 new_f->enclosing = frames;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
456 new_f->text = g_string_new("<font size=\"3\">");
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
457 new_f->closing = "</font>";
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
458 frames = new_f;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
459 cnt += end + 1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
460 } else if (!g_ascii_strcasecmp(buf, "large")) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
461 new_f = g_new(zframe, 1);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
462 new_f->enclosing = frames;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
463 new_f->text = g_string_new("<font size=\"7\">");
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
464 new_f->closing = "</font>";
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
465 frames = new_f;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
466 cnt += end + 1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
467 } else if (!g_ascii_strcasecmp(buf, "bold")
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
468 || !g_ascii_strcasecmp(buf, "b")) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
469 new_f = g_new(zframe, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
470 new_f->enclosing = frames;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
471 new_f->text = g_string_new("<b>");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
472 new_f->closing = "</b>";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
473 new_f->has_closer = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
474 frames = new_f;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
475 cnt += end + 1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
476 } else if (!g_ascii_strcasecmp(buf, "font")) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
477 cnt += end + 1;
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
478 new_f = g_new(zframe, 1);
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
479 new_f->enclosing = frames;
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
480 new_f->text = g_string_new("<font face=");
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
481 for (; (cnt <= len) && !IS_CLOSER(message[cnt]); cnt++) {
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
482 g_string_append_c(new_f->text, message[cnt]);
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
483 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
484 cnt++; /* point to char after closer */
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
485 g_string_append_c(new_f->text, '>');
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
486 new_f->closing = "</font>";
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
487 new_f->has_closer = FALSE;
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
488 frames = new_f;
8568
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
489 } else if (!g_ascii_strcasecmp(buf, "color")) {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
490 cnt += end + 1;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
491 new_f = g_new(zframe, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
492 new_f->enclosing = frames;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
493 new_f->text = g_string_new("<font color=");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
494 for (; (cnt <= len) && !IS_CLOSER(message[cnt]); cnt++) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
495 g_string_append_c(new_f->text, message[cnt]);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
496 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
497 cnt++; /* point to char after closer */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
498 g_string_append_c(new_f->text, '>');
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
499 new_f->closing = "</font>";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
500 new_f->has_closer = FALSE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
501 frames = new_f;
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
502 } else if (!g_ascii_strcasecmp(buf, "")) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
503 new_f = g_new(zframe, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
504 new_f->enclosing = frames;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
505 new_f->text = g_string_new("");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
506 new_f->closing = "";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
507 new_f->has_closer = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
508 frames = new_f;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
509 cnt += end + 1; /* cnt points to char after opener */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
510 } else {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
511 if ((cnt + end) > len) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
512 g_string_append_c(frames->text, '@');
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
513 cnt++;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
514 } else if (IS_CLOSER(message[cnt + end])) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
515 /* We have @chars..closer . This is
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
516 merely a sequence of chars that isn't a formatting tag
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
517 */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
518 int tmp = cnt;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
519
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
520 while (tmp <= cnt + end) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
521 g_string_append_c(frames->text, message[tmp]);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
522 tmp++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
523 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
524 cnt += end + 1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
525 } else {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
526 /* unrecognized thingie. act like it's not there, but we
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
527 * still need to take care of the corresponding closer,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
528 * make a frame that does nothing. */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
529 new_f = g_new(zframe, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
530 new_f->enclosing = frames;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
531 new_f->text = g_string_new("");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
532 new_f->closing = "";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
533 new_f->has_closer = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
534 frames = new_f;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
535 cnt += end + 1; /* cnt points to char after opener */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
536 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
537 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
538 } else if (IS_CLOSER(message[cnt])) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
539 zframe *popped;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
540 gboolean last_had_closer;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
541
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
542 if (frames->enclosing) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
543 do {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
544 popped = frames;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
545 frames = frames->enclosing;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
546 g_string_append(frames->text, popped->text->str);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
547 g_string_append(frames->text, popped->closing);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
548 g_string_free(popped->text, TRUE);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
549 last_had_closer = popped->has_closer;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
550 g_free(popped);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
551 } while (frames && frames->enclosing && !last_had_closer);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
552 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
553 g_string_append_c(frames->text, message[cnt]);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
554 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
555 cnt++;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
556 } else if (message[cnt] == '\n') {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
557 g_string_append(frames->text, "<br>");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
558 cnt++;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
559 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
560 g_string_append_c(frames->text, message[cnt++]);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
561 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
562 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
563 /* go through all the stuff that they didn't close */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
564 while (frames->enclosing) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
565 curr = frames;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
566 g_string_append(frames->enclosing->text, frames->text->str);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
567 g_string_append(frames->enclosing->text, frames->closing);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
568 g_string_free(frames->text, TRUE);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
569 frames = frames->enclosing;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
570 g_free(curr);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
571 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
572 ret = frames->text->str;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
573 g_string_free(frames->text, FALSE);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
574 g_free(frames);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
575 return ret;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
576 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
577
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
578 static gboolean pending_zloc(zephyr_account *zephyr,char *who)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
579 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
580 GList *curr;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
581
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
582 for (curr = zephyr->pending_zloc_names; curr != NULL; curr = curr->next) {
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
583 char* normalized_who = local_zephyr_normalize(who);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
584 if (!g_ascii_strcasecmp(normalized_who, (char *)curr->data)) {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
585 g_free((char *)curr->data);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
586 zephyr->pending_zloc_names = g_list_remove(zephyr->pending_zloc_names, curr->data);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
587 return TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
588 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
589 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
590 return FALSE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
591 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
592
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
593 /* Called when the server notifies us a message couldn't get sent */
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
594
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
595 static void message_failed(GaimConnection *gc, ZNotice_t notice, struct sockaddr_in from)
8559
1c20aa5bd389 [gaim-migrate @ 9303]
Luke Schierer <lschiere@pidgin.im>
parents: 8451
diff changeset
596 {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
597 if (g_ascii_strcasecmp(notice.z_class, "message")) {
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
598 gchar* chat_failed = g_strdup_printf(_("Unable send to chat %s,%s,%s"),notice.z_class,notice.z_class_inst,notice.z_recipient);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
599 gaim_notify_error(gc,"",chat_failed,NULL);
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
600 g_free(chat_failed);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
601 } else {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
602 gaim_notify_error(gc, notice.z_recipient, _("User is offline"), NULL);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
603 }
8559
1c20aa5bd389 [gaim-migrate @ 9303]
Luke Schierer <lschiere@pidgin.im>
parents: 8451
diff changeset
604 }
1c20aa5bd389 [gaim-migrate @ 9303]
Luke Schierer <lschiere@pidgin.im>
parents: 8451
diff changeset
605
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
606 static void handle_message(GaimConnection *gc,ZNotice_t notice, struct sockaddr_in from)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
607 {
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
608 if (!g_ascii_strcasecmp(notice.z_class, LOGIN_CLASS)) {
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
609 /* well, we'll be updating in 20 seconds anyway, might as well ignore this. */
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
610 } else if (!g_ascii_strcasecmp(notice.z_class, LOCATE_CLASS)) {
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
611 if (!g_ascii_strcasecmp(notice.z_opcode, LOCATE_LOCATE)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
612 int nlocs;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
613 char *user;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
614 GaimBuddy *b;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
615
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
616 /* XXX add real error reporting */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
617 if (ZParseLocations(&notice, NULL, &nlocs, &user) != ZERR_NONE)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
618 return;
8435
6bd8bc8f07bb [gaim-migrate @ 9165]
Luke Schierer <lschiere@pidgin.im>
parents: 8386
diff changeset
619
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
620 if ((b = gaim_find_buddy(gc->account, user)) == NULL) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
621 char *e = strchr(user, '@');
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
622
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
623 if (e && !g_ascii_strcasecmp(e + 1, gaim_zephyr_get_realm())) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
624 *e = '\0';
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
625 }
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
626 b = gaim_find_buddy(gc->account, user);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
627 }
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
628 if ((b && pending_zloc(gc->proto_data,b->name)) || pending_zloc(gc->proto_data,user)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
629 ZLocations_t locs;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
630 int one = 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
631 GString *str = g_string_new("");
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
632
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
633 g_string_append_printf(str, _("<b>User:</b> %s<br>"), b ? b->name : user);
8435
6bd8bc8f07bb [gaim-migrate @ 9165]
Luke Schierer <lschiere@pidgin.im>
parents: 8386
diff changeset
634 if (b && b->alias)
5132
494b6b6a6ffa [gaim-migrate @ 5495]
Mark Doliner <mark@kingant.net>
parents: 4793
diff changeset
635 g_string_append_printf(str, _("<b>Alias:</b> %s<br>"), b->alias);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
636 if (!nlocs) {
5132
494b6b6a6ffa [gaim-migrate @ 5495]
Mark Doliner <mark@kingant.net>
parents: 4793
diff changeset
637 g_string_append_printf(str, _("<br>Hidden or not logged-in"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
638 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
639 for (; nlocs > 0; nlocs--) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
640 /* XXX add real error reporting */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
641 ZGetLocations(&locs, &one);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
642 g_string_append_printf(str, _("<br>At %s since %s"), locs.host, locs.time);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
643 }
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
644 gaim_notify_formatted(gc, NULL, _("Buddy Information"), NULL, str->str, NULL, NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
645 g_string_free(str, TRUE);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
646 } else
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
647 serv_got_update(gc, b->name, nlocs, 0, 0, 0, 0);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
648
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
649 g_free(user);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
650 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
651 } else {
8560
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
652 char *buf, *buf2, *buf3;
2804
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
653 char *send_inst;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
654 GaimConversation *gconv1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
655 GaimConvChat *gcc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
656 char *ptr = notice.z_message + strlen(notice.z_message) + 1;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
657 int len;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
658 char *sendertmp = g_strdup_printf("%s", gaim_zephyr_get_sender());
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
659 int signature_length = strlen(notice.z_message);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
660 int message_has_no_body = 0;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7084
diff changeset
661 GaimConvImFlags flags = 0;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
662 gchar *tmpescape;
8560
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
663
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
664 /* Need to deal with 0 length messages to handle typing notification (OPCODE) ping messages */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
665 /* One field zephyrs would have caused gaim to crash */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
666 if ( (notice.z_message_len == 0) || (signature_length >= notice.z_message_len - 1)) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
667 message_has_no_body = 1;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
668 len = 0;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
669 gaim_debug_info("zephyr","message_size %d %d %d\n",len,notice.z_message_len,signature_length);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
670 buf3 = g_strdup("");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
671
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
672 } else {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
673 len = notice.z_message_len - ( signature_length +1);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
674 gaim_debug_info("zephyr","message_size %d %d %d\n",len,notice.z_message_len,signature_length);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
675 buf = g_malloc(len + 1);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
676 g_snprintf(buf, len + 1, "%s", ptr);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
677 g_strchomp(buf);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
678 tmpescape = gaim_escape_html(buf);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
679 g_free(buf);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
680 buf2 = zephyr_to_html(tmpescape);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
681 buf3 = zephyr_recv_convert(gc,buf2, strlen(buf2));
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
682 g_free(buf2);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
683 g_free(tmpescape);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
684 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
685
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
686 if (!g_ascii_strcasecmp(notice.z_class, "MESSAGE") && !g_ascii_strcasecmp(notice.z_class_inst, "PERSONAL")
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
687 && !g_ascii_strcasecmp(notice.z_recipient,gaim_zephyr_get_sender())) {
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
688 gchar* stripped_sender;
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
689 if (!g_ascii_strcasecmp(notice.z_message, "Automated reply:"))
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7084
diff changeset
690 flags |= GAIM_CONV_IM_AUTO_RESP;
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
691 stripped_sender = zephyr_strip_foreign_realm(notice.z_sender);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
692
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
693 if (!g_ascii_strcasecmp(notice.z_opcode,"PING"))
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
694 serv_got_typing(gc,stripped_sender,ZEPHYR_TYPING_RECV_TIMEOUT, GAIM_TYPING);
9740
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
695 else {
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
696 GSList* l;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
697 gboolean in_deny;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
698
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
699 switch (gc->account->perm_deny) {
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
700 case GAIM_PRIVACY_ALLOW_ALL:
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
701 in_deny = 0; break;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
702 case GAIM_PRIVACY_DENY_ALL:
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
703 in_deny = 1; break;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
704 case GAIM_PRIVACY_ALLOW_USERS: /* See if stripped_sender is in gc->account->permit and allow appropriately */
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
705 in_deny = 1;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
706 for(l=gc->account->permit;l!=NULL;l=l->next) {
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
707 if (!gaim_utf8_strcasecmp(stripped_sender, gaim_normalize(gc->account, (char *)l->data))) {
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
708 fprintf(stderr,"stripped sender %s l->data %sf\n",stripped_sender, (char *)l->data);
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
709 in_deny=0;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
710 break;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
711 }
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
712 }
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
713 break;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
714 case GAIM_PRIVACY_DENY_USERS: /* See if stripped_sender is in gc->account->deny and deny if so */
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
715 in_deny = 0;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
716 for(l=gc->account->deny;l!=NULL;l=l->next) {
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
717 if (!gaim_utf8_strcasecmp(stripped_sender, gaim_normalize(gc->account, (char *)l->data))) {
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
718 fprintf(stderr,"stripped sender %s l->data %sf\n",stripped_sender, (char *)l->data);
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
719 in_deny=1;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
720 break;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
721 }
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
722 }
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
723 break;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
724 case GAIM_PRIVACY_ALLOW_BUDDYLIST:
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
725 in_deny = 1;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
726 if (gaim_find_buddy(gc->account,stripped_sender)!=NULL) {
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
727 in_deny = 0;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
728 }
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
729 break;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
730 default:
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
731 in_deny=0; break;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
732 }
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
733
9740
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
734 if (!in_deny) {
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
735 serv_got_im(gc, stripped_sender, buf3, flags, time(NULL));
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
736 }
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
737 }
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
738 g_free(stripped_sender);
9740
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
739
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
740 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
741 zephyr_triple *zt1, *zt2;
9437
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
742 gchar *send_inst_utf8;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
743 zephyr_account *zephyr = gc->proto_data;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
744 zt1 = new_triple(gc->proto_data,notice.z_class, notice.z_class_inst, notice.z_recipient);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
745 zt2 = find_sub_by_triple(gc->proto_data,zt1);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
746 if (!zt2) {
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
747 /* This is a server supplied subscription */
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
748 zephyr->subscrips = g_slist_append(zephyr->subscrips, zt1);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
749 zt2 = find_sub_by_triple(gc->proto_data,zt1);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
750 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
751
9437
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
752 if (!zt2->open) {
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
753 zt2->open = TRUE;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
754 serv_got_joined_chat(gc, zt2->id, zt2->name);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
755 zephyr_chat_set_topic(gc,zt2->id,notice.z_class_inst);
9437
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
756 }
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
757 g_free(sendertmp); /* fix memory leak? */
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
758 /* If the person is in the default Realm, then strip the
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
759 Realm from the sender field */
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
760 sendertmp = zephyr_strip_foreign_realm(notice.z_sender);
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
761 send_inst = g_strdup_printf("%s %s",sendertmp,notice.z_class_inst);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
762 send_inst_utf8 = zephyr_recv_convert(gc,send_inst, strlen(send_inst));
9437
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
763 if (!send_inst_utf8) {
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
764 gaim_debug(GAIM_DEBUG_ERROR, "zephyr","send_inst %s became null\n", send_inst);
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
765 send_inst_utf8 = "malformed instance";
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
766 }
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
767
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
768 serv_got_chat_in(gc, zt2->id, send_inst_utf8, 0, buf3, time(NULL));
9437
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
769 g_free(send_inst);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
770 gconv1 = gaim_find_conversation_with_account(zt2->name, gc->account);
9437
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
771 gcc = gaim_conversation_get_chat_data(gconv1);
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
772
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9478
diff changeset
773 if (!gaim_conv_chat_find_user(gcc, sendertmp)) {
9437
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
774 /* force interpretation in network byte order */
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
775 unsigned char *addrs = (unsigned char *)&(notice.z_sender_addr.s_addr);
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
776 gchar* ipaddr = g_strdup_printf("%hhd.%hhd.%hhd.%hhd", (unsigned char)addrs[0],
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
777 (unsigned char)addrs[1], (unsigned char)addrs[2],
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
778 (unsigned char) addrs[3]);
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
779
9554
8b2451878e26 [gaim-migrate @ 10387]
Luke Schierer <lschiere@pidgin.im>
parents: 9478
diff changeset
780 gaim_conv_chat_add_user(gcc, sendertmp, ipaddr, GAIM_CBFLAGS_NONE);
9437
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
781 g_free(ipaddr); /* fix memory leak? */
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
782
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
783 }
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
784 g_free(sendertmp);
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
785 g_free(send_inst_utf8);
d9f8658b305d [gaim-migrate @ 10258]
Luke Schierer <lschiere@pidgin.im>
parents: 9434
diff changeset
786
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
787 free_triple(zt1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
788 }
8560
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
789 g_free(buf3);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
790
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
791 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
792 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
793
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
794 static gint check_notify(gpointer data)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
795 {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
796 /* XXX add real error reporting */
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
797 GaimConnection *gc = (GaimConnection*) data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
798 while (ZPending()) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
799 ZNotice_t notice;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
800 struct sockaddr_in from;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
801 /* XXX add real error reporting */
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
802
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
803 z_call_r(ZReceiveNotice(&notice, &from));
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
804
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
805 switch (notice.z_kind) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
806 case UNSAFE:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
807 case UNACKED:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
808 case ACKED:
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
809 handle_message(gc,notice, from);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
810 break;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
811 case SERVACK:
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
812 if (!(g_ascii_strcasecmp(notice.z_message, ZSRVACK_NOTSENT))) {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
813 message_failed(gc,notice, from);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
814 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
815 break;
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
816 case CLIENTACK:
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
817 gaim_debug_error("zephyr", "Client ack received\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
818 default:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
819 /* we'll just ignore things for now */
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
820 handle_unknown(notice);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
821 gaim_debug_error("zephyr", "Unhandled notice.\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
822 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
823 }
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
824 /* XXX add real error reporting */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
825 ZFreeNotice(&notice);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
826 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
827
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
828 return TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
829 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
830
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
831 static gint check_loc(gpointer data)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
832 {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
833 GaimBlistNode *gnode, *cnode, *bnode;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
834 ZAsyncLocateData_t ald;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
835 GaimConnection *gc = (GaimConnection*)data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
836
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
837 ald.user = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
838 memset(&(ald.uid), 0, sizeof(ZUnique_Id_t));
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
839 ald.version = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
840
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
841 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
842 if (!GAIM_BLIST_NODE_IS_GROUP(gnode))
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
843 continue;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
844 for (cnode = gnode->child; cnode; cnode = cnode->next) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
845 if (!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
846 continue;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
847 for (bnode = cnode->child; bnode; bnode = bnode->next) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
848 GaimBuddy *b = (GaimBuddy *) bnode;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
849
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
850 if (!GAIM_BLIST_NODE_IS_BUDDY(bnode))
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
851 continue;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
852 if (b->account->gc == gc) {
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7126
diff changeset
853 const char *chk;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
854
8354
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
855 chk = local_zephyr_normalize(b->name);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
856 /* XXX add real error reporting */
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
857 /* doesn't matter if this fails or not; we'll just move on to the next one */
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
858 ZRequestLocations(chk, &ald, UNACKED, ZAUTH);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
859 g_free(ald.user);
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
860 g_free(ald.version);
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
861 }
4349
0c68d402f59f [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4227
diff changeset
862 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
863 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
864 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
865
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
866 return TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
867 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
868
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
869 static char *get_exposure_level()
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
870 {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
871 /* XXX add real error reporting */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
872 char *exposure = ZGetVariable("exposure");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
873
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
874 if (!exposure)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
875 return EXPOSE_REALMVIS;
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
876 if (!g_ascii_strcasecmp(exposure, EXPOSE_NONE))
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
877 return EXPOSE_NONE;
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
878 if (!g_ascii_strcasecmp(exposure, EXPOSE_OPSTAFF))
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
879 return EXPOSE_OPSTAFF;
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
880 if (!g_ascii_strcasecmp(exposure, EXPOSE_REALMANN))
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
881 return EXPOSE_REALMANN;
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
882 if (!g_ascii_strcasecmp(exposure, EXPOSE_NETVIS))
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
883 return EXPOSE_NETVIS;
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
884 if (!g_ascii_strcasecmp(exposure, EXPOSE_NETANN))
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
885 return EXPOSE_NETANN;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
886 return EXPOSE_REALMVIS;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
887 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
888
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
889 static void strip_comments(char *str)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
890 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
891 char *tmp = strchr(str, '#');
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
892
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
893 if (tmp)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
894 *tmp = '\0';
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
895 g_strchug(str);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
896 g_strchomp(str);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
897 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
898
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
899 static void zephyr_inithosts(zephyr_account* zephyr)
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
900 {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
901 /* XXX This code may not be Win32 clean */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
902 struct hostent *hent;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
903
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
904 if (gethostname(zephyr->ourhost, sizeof(zephyr->ourhost)-1) == -1) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
905 gaim_debug(GAIM_DEBUG_ERROR, "zephyr", "unable to retrieve hostname, %%host%% and %%canon%% will be wrong in subscriptions and have been set to unknown\n");
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
906 g_stpcpy(zephyr->ourhost,"unknown");
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
907 g_stpcpy(zephyr->ourhostcanon,"unknown");
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
908 return;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
909 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
910
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
911 if (!(hent = gethostbyname(zephyr->ourhost))) {
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
912 gaim_debug(GAIM_DEBUG_ERROR,"zephyr", "unable to resolve hostname, %%canon%% will be wrong in subscriptions.and has been set to the value of %%host%%, %s\n",zephyr->ourhost);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
913 g_stpcpy(zephyr->ourhostcanon,zephyr->ourhost);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
914 return;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
915 }
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
916 g_stpcpy(zephyr->ourhostcanon,hent->h_name);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
917 return;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
918 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
919
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
920 static void process_zsubs(zephyr_account *zephyr)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
921 {
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
922 /* Loads zephyr chats "(subscriptions) from ~/.zephyr.subs, and
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
923 registers (subscribes to) them on the server */
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
924
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
925 /* XXX deal with unsubscriptions */
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
926 /* XXX deal with punts */
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
927
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
928 FILE *f;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
929 gchar *fname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
930 gchar buff[BUFSIZ];
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
931
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
932 zephyr_inithosts(zephyr);
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
933 fname = g_strdup_printf("%s/.zephyr.subs", gaim_home_dir());
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
934 f = fopen(fname, "r");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
935 if (f) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
936 char **triple;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
937 ZSubscription_t sub;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
938 char *recip;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
939 char *z_class;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
940 char *z_instance;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
941
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
942 while (fgets(buff, BUFSIZ, f)) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
943 strip_comments(buff);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
944 if (buff[0]) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
945 triple = g_strsplit(buff, ",", 3);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
946 if (triple[0] && triple[1]) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
947 char *tmp = g_strdup_printf("%s", gaim_zephyr_get_sender());
2804
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
948 char *atptr;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
949
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
950 sub.zsub_class = triple[0];
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
951 sub.zsub_classinst = triple[1];
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
952 if (triple[2] == NULL) {
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
953 recip = g_malloc0(1);
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
954 } else if (!g_ascii_strcasecmp(triple[2], "%me%")) {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
955 recip = g_strdup_printf("%s", gaim_zephyr_get_sender());
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
956 } else if (!g_ascii_strcasecmp(triple[2], "*")) {
2804
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
957 /* wildcard
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
958 * form of class,instance,* */
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
959 recip = g_malloc0(1);
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
960 } else if (!g_ascii_strcasecmp(triple[2], tmp)) {
2804
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
961 /* form of class,instance,aatharuv@ATHENA.MIT.EDU */
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
962 recip = g_strdup(triple[2]);
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
963 } else if ((atptr = strchr(triple[2], '@')) != NULL) {
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
964 /* form of class,instance,*@ANDREW.CMU.EDU
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
965 * class,instance,@ANDREW.CMU.EDU
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
966 * If realm is local realm, blank recipient, else
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
967 * @REALM-NAME
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
968 */
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
969 char *realmat = g_strdup_printf("@%s",
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
970 gaim_zephyr_get_realm());
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
971
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
972 if (!g_ascii_strcasecmp(atptr, realmat))
2804
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
973 recip = g_malloc0(1);
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
974 else
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
975 recip = g_strdup(atptr);
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
976 g_free(realmat);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
977 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
978 recip = g_strdup(triple[2]);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
979 }
2804
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
980 g_free(tmp);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
981 sub.zsub_recipient = recip;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
982
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
983 if (!g_ascii_strcasecmp(triple[0],"%host%")) {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
984 z_class = g_strdup(zephyr->ourhost);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
985 } else if (!g_ascii_strcasecmp(triple[0],"%canon%")) {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
986 z_class = g_strdup(zephyr->ourhostcanon);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
987 } else {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
988 z_class = g_strdup(triple[0]);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
989 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
990 sub.zsub_class = z_class;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
991
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
992 if (!g_ascii_strcasecmp(triple[1],"%host%")) {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
993 z_instance = g_strdup(zephyr->ourhost);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
994 } else if (!g_ascii_strcasecmp(triple[1],"%canon%")) {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
995 z_instance = g_strdup(zephyr->ourhostcanon);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
996 } else {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
997 z_instance = g_strdup(triple[1]);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
998 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
999 sub.zsub_classinst = z_instance;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1000
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1001 /* There should be some sort of error report listing classes that couldn't be subbed to.
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1002 Not important right now though */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1003
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1004 if (ZSubscribeTo(&sub, 1, 0) != ZERR_NONE) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1005
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1006 gaim_debug(GAIM_DEBUG_ERROR, "zephyr", "Couldn't subscribe to %s, %s, %s\n", sub.zsub_class, sub.zsub_classinst, sub.zsub_recipient);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1007 }
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1008
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1009 zephyr->subscrips = g_slist_append(zephyr->subscrips, new_triple(zephyr,sub.zsub_class,sub.zsub_classinst,sub.zsub_recipient));
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1010 /* g_hash_table_destroy(sub_hash_table); */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1011 g_free(z_instance);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1012 g_free(z_class);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1013 g_free(recip);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1014 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1015 g_strfreev(triple);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1016 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1017 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1018 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1019 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1020
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1021 static void process_anyone(GaimConnection *gc)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1022 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1023 FILE *fd;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1024 gchar buff[BUFSIZ], *filename;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1025 GaimGroup *g;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1026 GaimBuddy *b;
4775
92ae181271e9 [gaim-migrate @ 5095]
Mark Doliner <mark@kingant.net>
parents: 4770
diff changeset
1027
92ae181271e9 [gaim-migrate @ 5095]
Mark Doliner <mark@kingant.net>
parents: 4770
diff changeset
1028 if (!(g = gaim_find_group(_("Anyone")))) {
92ae181271e9 [gaim-migrate @ 5095]
Mark Doliner <mark@kingant.net>
parents: 4770
diff changeset
1029 g = gaim_group_new(_("Anyone"));
92ae181271e9 [gaim-migrate @ 5095]
Mark Doliner <mark@kingant.net>
parents: 4770
diff changeset
1030 gaim_blist_add_group(g, NULL);
92ae181271e9 [gaim-migrate @ 5095]
Mark Doliner <mark@kingant.net>
parents: 4770
diff changeset
1031 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1032
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
1033 filename = g_strconcat(gaim_home_dir(), "/.anyone", NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1034 if ((fd = fopen(filename, "r")) != NULL) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1035 while (fgets(buff, BUFSIZ, fd)) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1036 strip_comments(buff);
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4682
diff changeset
1037 if (buff[0]) {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1038 if (!(b = gaim_find_buddy(gc->account, buff))) {
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1039 b = gaim_buddy_new(gc->account, buff, NULL);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1040 gaim_blist_add_buddy(b, NULL, g, NULL);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1041 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1042 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1043 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1044 fclose(fd);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1045 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1046 g_free(filename);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1047 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1048
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1049 static void zephyr_login(GaimAccount * account)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1050 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1051 ZSubscription_t sub;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1052 GaimConnection *gc;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1053 zephyr_account *zephyr;
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1054
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1055 gc = gaim_account_get_connection(account);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1056 gc->flags |= GAIM_CONNECTION_HTML | GAIM_CONNECTION_NO_BGCOLOR | GAIM_CONNECTION_NO_URLDESC;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1057 gc->proto_data = zephyr=g_new0(zephyr_account,1);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1058
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1059 gaim_connection_update_progress(gc, _("Connecting"), 0, 8);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1060
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1061 /* XXX z_call_s should actually try to report the com_err determined error */
8645
47f647dd2ac3 [gaim-migrate @ 9397]
Mark Doliner <mark@kingant.net>
parents: 8644
diff changeset
1062
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1063 z_call_s(ZInitialize(), "Couldn't initialize zephyr");
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1064 z_call_s(ZOpenPort(&(zephyr->port)), "Couldn't open port");
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1065 z_call_s(ZSetLocation((char *)
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1066 gaim_account_get_string(gc->account, "exposure_level", EXPOSE_REALMVIS)), "Couldn't set location");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1067
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1068 sub.zsub_class = "MESSAGE";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1069 sub.zsub_classinst = "PERSONAL";
8354
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
1070 sub.zsub_recipient = (char *)gaim_zephyr_get_sender();
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1071
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1072 if (ZSubscribeTo(&sub, 1, 0) != ZERR_NONE) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1073 /* XXX don't translate this yet. It could be written better */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1074 /* XXX error messages could be handled with more detail */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1075 gaim_notify_error(account->gc, NULL,
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1076 "Unable to subscribe to messages", "Unable to subscribe to initial messages");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1077 return;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1078 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1079
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1080 gaim_connection_set_state(gc, GAIM_CONNECTED);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1081 serv_finish_login(gc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1082
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1083 process_anyone(gc);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1084 process_zsubs(gc->proto_data);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1085
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1086 zephyr->nottimer = gaim_timeout_add(100, check_notify, gc);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1087 zephyr->loctimer = gaim_timeout_add(20000, check_loc, gc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1088 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1089
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1090 static void write_zsubs(zephyr_account *zephyr)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1091 {
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1092 /* Exports subscription (chat) list back to
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1093 * .zephyr.subs
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1094 * XXX deal with %host%, %canon%, unsubscriptions, and negative subscriptions (punts?)
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1095 */
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1096
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1097 GSList *s = zephyr->subscrips;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1098 zephyr_triple *zt;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1099 FILE *fd;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1100 char *fname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1101
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1102 char **triple;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1103
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
1104 fname = g_strdup_printf("%s/.zephyr.subs", gaim_home_dir());
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1105 fd = fopen(fname, "w");
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1106
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1107 if (!fd) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1108 g_free(fname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1109 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1110 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1111
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1112 while (s) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1113 char *zclass, *zinst, *zrecip;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1114 zt = s->data;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1115 triple = g_strsplit(zt->name, ",", 3);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1116
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1117 /* deal with classes */
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1118 if (!g_ascii_strcasecmp(triple[0],zephyr->ourhost)) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1119 zclass = g_strdup("%host%");;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1120 } else if (!g_ascii_strcasecmp(triple[0],zephyr->ourhostcanon)) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1121 zclass = g_strdup("%canon%");;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1122 } else {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1123 zclass = g_strdup(triple[0]);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1124 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1125
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1126 /* deal with instances */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1127
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1128 if (!g_ascii_strcasecmp(triple[1],zephyr->ourhost)) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1129 zinst = g_strdup("%host%");;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1130 } else if (!g_ascii_strcasecmp(triple[1],zephyr->ourhostcanon)) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1131 zinst = g_strdup("%canon%");;
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
1132 } else {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1133 zinst = g_strdup(triple[1]);
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
1134 }
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1135
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1136 /* deal with recipients */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1137 if (triple[2] == NULL) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1138 zrecip = g_strdup("*");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1139 } else if (!g_ascii_strcasecmp(triple[2],"")){
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1140 zrecip = g_strdup("*");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1141 } else if (!g_ascii_strcasecmp(triple[2], gaim_zephyr_get_sender())) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1142 zrecip = g_strdup("%me%");
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
1143 } else {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1144 zrecip = g_strdup(triple[2]);
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
1145 }
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1146
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1147 fprintf(fd, "%s,%s,%s\n",zclass,zinst,zrecip);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1148
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1149 g_free(zclass);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1150 g_free(zinst);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1151 g_free(zrecip);
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
1152 g_free(triple);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1153 s = s->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1154 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1155 g_free(fname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1156 fclose(fd);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1157 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1158
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1159 static void write_anyone(GaimConnection *gc)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1160 {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1161 GaimBlistNode *gnode, *cnode, *bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1162 GaimBuddy *b;
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
1163 char *ptr, *fname, *ptr2;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1164 FILE *fd;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1165
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
1166 fname = g_strdup_printf("%s/.anyone", gaim_home_dir());
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1167 fd = fopen(fname, "w");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1168 if (!fd) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1169 g_free(fname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1170 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1171 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1172
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1173 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1174 if (!GAIM_BLIST_NODE_IS_GROUP(gnode))
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
1175 continue;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1176 for (cnode = gnode->child; cnode; cnode = cnode->next) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1177 if (!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
1178 continue;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1179 for (bnode = cnode->child; bnode; bnode = bnode->next) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1180 if (!GAIM_BLIST_NODE_IS_BUDDY(bnode))
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1181 continue;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1182 b = (GaimBuddy *) bnode;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1183 if (b->account == gc->account) {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1184 if ((ptr = strchr(b->name, '@')) != NULL) {
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1185 ptr2 = ptr + 1;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1186 /* We should only strip the realm name if the principal
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1187 is in the user's realm
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1188 */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1189 if (!g_ascii_strcasecmp(ptr2, gaim_zephyr_get_realm())) {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1190 *ptr = '\0';
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1191 }
4349
0c68d402f59f [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4227
diff changeset
1192 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1193 fprintf(fd, "%s\n", b->name);
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1194 if (ptr)
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1195 *ptr = '@';
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
1196 }
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
1197 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1198 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1199 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1200
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1201 fclose(fd);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1202 g_free(fname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1203 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1204
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1205 static void zephyr_close(GaimConnection * gc)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1206 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1207 GList *l;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1208 GSList *s;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1209 zephyr_account *zephyr = gc->proto_data;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1210
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1211 l = zephyr->pending_zloc_names;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1212 while (l) {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1213 g_free((char *)l->data);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1214 l = l->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1215 }
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1216 g_list_free(zephyr->pending_zloc_names);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1217
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1218 if (gaim_account_get_bool(gc->account, "write_anyone", FALSE))
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1219 write_anyone(gc);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1220
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1221 if (gaim_account_get_bool(gc->account, "write_zsubs", FALSE))
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1222 write_zsubs(gc->proto_data);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1223
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1224 s = zephyr->subscrips;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1225 while (s) {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1226 free_triple((zephyr_triple *) s->data);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1227 s = s->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1228 }
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1229 g_slist_free(zephyr->subscrips);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1230
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1231 if (zephyr->nottimer)
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1232 gaim_timeout_remove(zephyr->nottimer);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1233 zephyr->nottimer = 0;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1234 if (zephyr->loctimer)
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1235 gaim_timeout_remove(zephyr->loctimer);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1236 zephyr->loctimer = 0;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1237 gc = NULL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1238 z_call(ZCancelSubscriptions(0));
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1239 z_call(ZUnsetLocation());
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1240 z_call(ZClosePort());
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1241 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1242
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1243 static int zephyr_send_message(char* zclass, char* instance, char* recipient, const char *im,
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1244 const char *sig, char *opcode) ;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1245
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1246 const char * zephyr_get_signature()
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1247 {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1248 /* XXX add zephyr error reporting */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1249 const char * sig =ZGetVariable("zwrite-signature");
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1250 if (!sig) {
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1251 sig = g_get_real_name();
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1252 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1253 return sig;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1254 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1255
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1256 static int zephyr_chat_send(GaimConnection * gc, int id, const char *im)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1257 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1258 zephyr_triple *zt;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1259 const char *sig;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1260 GaimConversation *gconv1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1261 GaimConvChat *gcc;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1262 char *inst;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1263 char *recipient;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1264
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1265 zt = find_sub_by_id(gc->proto_data,id);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1266 if (!zt)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1267 /* this should never happen. */
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
1268 return -EINVAL;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1269
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1270 sig = zephyr_get_signature();
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1271
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1272 gconv1 = gaim_find_conversation_with_account(zt->name, gc->account);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1273 gcc = gaim_conversation_get_chat_data(gconv1);
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
1274
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1275 if (!(inst = (char *)gaim_conv_chat_get_topic(gcc)))
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1276 inst = g_strdup("PERSONAL");
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1277
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1278 if (!g_ascii_strcasecmp(zt->recipient, "*"))
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1279 recipient = local_zephyr_normalize("");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1280 else
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1281 recipient = local_zephyr_normalize(zt->recipient);
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
1282
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1283 zephyr_send_message(zt->class,inst,recipient,im,sig,"");
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1284 /* g_free(inst); */
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1285 /* g_free(recipient); */
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
1286 return 0;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1287 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1288
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1289
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1290 static int zephyr_send_im(GaimConnection * gc, const char *who, const char *im, GaimConvImFlags flags)
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1291 {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1292 const char *sig;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1293
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7084
diff changeset
1294 if (flags & GAIM_CONV_IM_AUTO_RESP)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1295 sig = "Automated reply:";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1296 else {
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1297 sig = zephyr_get_signature();
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1298 }
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1299 zephyr_send_message("MESSAGE","PERSONAL",local_zephyr_normalize(who),im,sig,"");
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1300
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1301 return 1;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1302 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1303
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1304 static int zephyr_send_message(char* zclass, char* instance, char* recipient, const char *im,
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1305 const char *sig, char *opcode)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1306 {
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1307 char *html_buf;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1308 char *html_buf2;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1309 char *buf;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1310 ZNotice_t notice;
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
1311
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1312 html_buf = html_to_zephyr(im);
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1313 html_buf2 = gaim_unescape_html(html_buf);
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1314
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1315 buf = g_strdup_printf("%s%c%s", sig, '\0', html_buf2);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1316 bzero((char *)&notice, sizeof(notice));
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1317
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1318 notice.z_kind = ACKED;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1319 notice.z_port = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1320 notice.z_opcode = "";
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1321 notice.z_class = zclass;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1322 notice.z_class_inst = instance;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1323 notice.z_recipient = recipient;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1324 notice.z_sender = 0;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1325 notice.z_default_format = "Class $class, Instance $instance:\n" "To: @bold($recipient) at $time $date\n" "From: @bold($1) <$sender>\n\n$2";
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
1326 notice.z_message_len = strlen(html_buf2) + strlen(sig) + 2;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1327 notice.z_message = buf;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1328 notice.z_opcode = g_strdup(opcode);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1329 gaim_debug_info("zephyr","About to send notice");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1330 if (! ZSendNotice(&notice, ZAUTH) == ZERR_NONE) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1331 /* XXX handle errors here */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1332 return 0;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1333 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1334 gaim_debug_info("zephyr","notice sent");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1335 g_free(buf);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1336
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1337 g_free(html_buf2);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1338 g_free(html_buf);
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
1339
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1340 return 1;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1341 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1342
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1343 static const char *zephyr_normalize(const GaimAccount * account, const char *orig)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1344 {
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1345 /* returns the string you gave it. Maybe this function shouldn't be here */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1346 static char buf[80];
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1347
7126
eda3de6dacbb [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
1348 if (!g_ascii_strcasecmp(orig, "")) {
eda3de6dacbb [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
1349 buf[0] = '\0';
eda3de6dacbb [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
1350 return buf;
8354
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
1351 } else {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1352 g_snprintf(buf, 80, "%s", orig);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1353 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1354 return buf;
8354
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
1355 }
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
1356
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
1357
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1358 char *local_zephyr_normalize(const char *orig)
8354
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
1359 {
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1360 /*
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1361 Basically the inverse of zephyr_strip_foreign_realm
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1362 */
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1363 static char buf[80];
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1364
8354
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
1365 if (!g_ascii_strcasecmp(orig, "")) {
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
1366 buf[0] = '\0';
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
1367 return buf;
7126
eda3de6dacbb [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
1368 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1369
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1370 if (strchr(orig, '@')) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1371 g_snprintf(buf, 80, "%s", orig);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1372 } else {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1373 g_snprintf(buf, 80, "%s@%s", orig, gaim_zephyr_get_realm());
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1374 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1375 return buf;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1376 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1377
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9015
diff changeset
1378 static void zephyr_zloc(GaimConnection *gc, const char *who)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1379 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1380 ZAsyncLocateData_t ald;
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1381 gchar* normalized_who = local_zephyr_normalize(who);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1382 zephyr_account *zephyr = gc->proto_data;
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7126
diff changeset
1383
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1384 if (ZRequestLocations(normalized_who, &ald, UNACKED, ZAUTH) == ZERR_NONE) {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1385 zephyr->pending_zloc_names = g_list_append(zephyr->pending_zloc_names,
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1386 g_strdup(normalized_who));
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1387 } else {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1388 /* XXX deal with errors somehow */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1389 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1390 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1391
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1392 static void zephyr_set_away(GaimConnection * gc, const char *state, const char *msg)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1393 {
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 3867
diff changeset
1394 if (gc->away) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1395 g_free(gc->away);
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 3867
diff changeset
1396 gc->away = NULL;
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 3867
diff changeset
1397 }
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 3867
diff changeset
1398
5132
494b6b6a6ffa [gaim-migrate @ 5495]
Mark Doliner <mark@kingant.net>
parents: 4793
diff changeset
1399 if (!g_ascii_strcasecmp(state, _("Hidden"))) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1400 /* XXX handle errors */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1401 ZSetLocation(EXPOSE_OPSTAFF);
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 3867
diff changeset
1402 gc->away = g_strdup("");
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1403 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1404 else if (!g_ascii_strcasecmp(state, _("Online"))) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1405 /* XXX handle errors */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1406 ZSetLocation(get_exposure_level());
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1407 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1408 else /* state is GAIM_AWAY_CUSTOM */ if (msg)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1409 gc->away = g_strdup(msg);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1410 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1411
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1412 static GList *zephyr_away_states(GaimConnection * gc)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1413 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1414 GList *m = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1415
5132
494b6b6a6ffa [gaim-migrate @ 5495]
Mark Doliner <mark@kingant.net>
parents: 4793
diff changeset
1416 m = g_list_append(m, _("Online"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1417 m = g_list_append(m, GAIM_AWAY_CUSTOM);
5132
494b6b6a6ffa [gaim-migrate @ 5495]
Mark Doliner <mark@kingant.net>
parents: 4793
diff changeset
1418 m = g_list_append(m, _("Hidden"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1419
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1420 return m;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1421 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1422
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1423 static GList *zephyr_chat_info(GaimConnection * gc)
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1424 {
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2170
diff changeset
1425 GList *m = NULL;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2170
diff changeset
1426 struct proto_chat_entry *pce;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1427
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2170
diff changeset
1428 pce = g_new0(struct proto_chat_entry, 1);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1429
7841
0555e59dfba9 [gaim-migrate @ 8494]
Mark Doliner <mark@kingant.net>
parents: 7475
diff changeset
1430 pce->label = _("_Class:");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1431 pce->identifier = "class";
3158
ea6f8d8d74e5 [gaim-migrate @ 3174]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
1432 m = g_list_append(m, pce);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1433
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2170
diff changeset
1434 pce = g_new0(struct proto_chat_entry, 1);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1435
7841
0555e59dfba9 [gaim-migrate @ 8494]
Mark Doliner <mark@kingant.net>
parents: 7475
diff changeset
1436 pce->label = _("_Instance:");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1437 pce->identifier = "instance";
3158
ea6f8d8d74e5 [gaim-migrate @ 3174]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
1438 m = g_list_append(m, pce);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1439
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2170
diff changeset
1440 pce = g_new0(struct proto_chat_entry, 1);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1441
7841
0555e59dfba9 [gaim-migrate @ 8494]
Mark Doliner <mark@kingant.net>
parents: 7475
diff changeset
1442 pce->label = _("_Recipient:");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1443 pce->identifier = "recipient";
3158
ea6f8d8d74e5 [gaim-migrate @ 3174]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
1444 m = g_list_append(m, pce);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1445
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2170
diff changeset
1446 return m;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1447 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1448
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1449 /* Called when the server notifies us a message couldn't get sent */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1450
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1451 static void zephyr_subscribe_failed(GaimConnection *gc,ZSubscription_t *sub)
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1452 {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1453 gchar* subscribe_failed = g_strdup_printf(_("Attempt to subscribe to %s,%s,%s failed"), sub->zsub_class, sub->zsub_classinst,sub->zsub_recipient);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1454 gaim_notify_error(gc,"", subscribe_failed, NULL);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1455 g_free(subscribe_failed);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1456 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1457
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1458 static void zephyr_join_chat(GaimConnection * gc, GHashTable * data)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1459 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1460 ZSubscription_t sub;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1461 zephyr_triple *zt1, *zt2;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1462 const char *classname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1463 const char *instname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1464 const char *recip;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1465 zephyr_account *zephyr=gc->proto_data;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1466 classname = g_hash_table_lookup(data, "class");
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1467 instname = g_hash_table_lookup(data, "instance");
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1468 recip = g_hash_table_lookup(data, "recipient");
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
1469
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1470
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1471 if (!classname)
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2170
diff changeset
1472 return;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1473
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1474 if (!g_ascii_strcasecmp(classname,"%host%"))
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1475 classname = g_strdup(zephyr->ourhost);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1476 if (!g_ascii_strcasecmp(classname,"%canon%"))
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1477 classname = g_strdup(zephyr->ourhostcanon);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1478
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1479 if (!instname || !strlen(instname))
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1480 instname = "*";
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1481
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1482 if (!g_ascii_strcasecmp(instname,"%host%"))
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1483 instname = g_strdup(zephyr->ourhost);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1484 if (!g_ascii_strcasecmp(instname,"%canon%"))
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1485 instname = g_strdup(zephyr->ourhostcanon);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1486
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1487 if (!recip || (*recip == '*'))
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1488 recip = "";
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1489 if (!g_ascii_strcasecmp(recip, "%me%"))
8354
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
1490 recip = gaim_zephyr_get_sender();
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1491
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1492 zt1 = new_triple(gc->proto_data,classname, instname, recip);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1493 zt2 = find_sub_by_triple(gc->proto_data,zt1);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1494 if (zt2) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1495 free_triple(zt1);
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1496 if (!zt2->open) {
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1497 if (!g_ascii_strcasecmp(instname,"*"))
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1498 instname = "PERSONAL";
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1499 serv_got_joined_chat(gc, zt2->id, zt2->name);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1500 zephyr_chat_set_topic(gc,zt2->id,instname);
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1501 zt2->open = TRUE;
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1502 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1503 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1504 }
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1505
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1506 sub.zsub_class = zt1->class;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1507 sub.zsub_classinst = zt1->instance;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1508 sub.zsub_recipient = zt1->recipient;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1509
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1510 if (ZSubscribeTo(&sub, 1, 0) != ZERR_NONE) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1511 /* XXX output better subscription information */
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1512 zephyr_subscribe_failed(gc,&sub);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1513 free_triple(zt1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1514 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1515 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1516
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1517 zephyr->subscrips = g_slist_append(zephyr->subscrips, zt1);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1518 zt1->open = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1519 serv_got_joined_chat(gc, zt1->id, zt1->name);
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1520 if (!g_ascii_strcasecmp(instname,"*"))
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1521 instname = "PERSONAL";
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1522 zephyr_chat_set_topic(gc,zt1->id,instname);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1523 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1524
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1525 static void zephyr_chat_leave(GaimConnection * gc, int id)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1526 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1527 zephyr_triple *zt;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1528 zephyr_account *zephyr = gc->proto_data;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1529 zt = find_sub_by_id(zephyr,id);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1530 if (zt) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1531 zt->open = FALSE;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1532 zt->id = ++(zephyr->last_id);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1533 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1534 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1535
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1536 static GaimChat *zephyr_find_blist_chat(GaimAccount *account, const char *name)
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1537 {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1538 GaimBlistNode *gnode, *cnode;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1539
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1540 /* XXX needs to be %host%,%canon%, and %me% clean */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1541 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1542 for(cnode = gnode->child; cnode; cnode = cnode->next) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1543 GaimChat *chat = (GaimChat*)cnode;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1544 char *zclass, *inst, *recip;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1545 char** triple;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1546 if(!GAIM_BLIST_NODE_IS_CHAT(cnode))
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1547 continue;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1548 if(chat->account !=account)
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1549 continue;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1550 if(!(zclass = g_hash_table_lookup(chat->components, "class")))
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1551 continue;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1552 if(!(inst = g_hash_table_lookup(chat->components, "instance")))
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1553 inst = g_strdup("");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1554 if(!(recip = g_hash_table_lookup(chat->components, "recipient")))
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1555 recip = g_strdup("");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1556 triple = g_strsplit(name,",",3);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1557 if (!g_ascii_strcasecmp(triple[0],zclass) && !g_ascii_strcasecmp(triple[1],inst) && !g_ascii_strcasecmp(triple[2],recip))
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1558 return chat;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1559
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1560 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1561 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1562 return NULL;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1563 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1564 static const char *zephyr_list_icon(GaimAccount * a, GaimBuddy * b)
5202
ccb0ab32ba01 [gaim-migrate @ 5568]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1565 {
ccb0ab32ba01 [gaim-migrate @ 5568]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1566 return "zephyr";
ccb0ab32ba01 [gaim-migrate @ 5568]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1567 }
ccb0ab32ba01 [gaim-migrate @ 5568]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
1568
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1569 static int zephyr_send_typing(GaimConnection *gc, const char *who, int typing) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1570 gchar *recipient;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1571 if (!typing)
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1572 return 0;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1573 /* XXX We probably should care if this fails. Or maybe we don't want to */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1574 if (!who) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1575 gaim_debug_info("zephyr", "who is null\n");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1576 recipient = local_zephyr_normalize("");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1577 } else {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1578 recipient = local_zephyr_normalize(who);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1579 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1580
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1581 gaim_debug_info("zephyr","about to send typing notification to %s",recipient);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1582 zephyr_send_message("MESSAGE","PERSONAL",recipient,"","","PING");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1583 gaim_debug_info("zephyr","sent typing notification");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1584 return ZEPHYR_TYPING_SEND_TIMEOUT;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1585 }
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
1586
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1587
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1588
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1589 static void zephyr_chat_set_topic(GaimConnection * gc, int id, const char *topic)
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1590 {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1591 zephyr_triple *zt;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1592 GaimConversation *gconv;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1593 GaimConvChat *gcc;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1594 gchar *topic_utf8;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1595 char *sender = (char *)gaim_zephyr_get_sender();
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
1596
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1597 zt = find_sub_by_id(gc->proto_data,id);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1598 gconv = gaim_find_conversation_with_account(zt->name, gc->account);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1599 gcc = gaim_conversation_get_chat_data(gconv);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1600
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1601 topic_utf8 = zephyr_recv_convert(gc,(gchar *)topic,strlen(topic));
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1602 gaim_conv_chat_set_topic(gcc,sender,topic_utf8);
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1603 g_free(topic_utf8);
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1604 return;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1605 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1606
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1607 /* commands */
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1608
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1609 static GaimCmdRet zephyr_gaim_cmd_msg(GaimConversation *conv,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1610 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1611 {
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1612 char *recipient;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1613
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1614 if (!g_ascii_strcasecmp(args[0],"*"))
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1615 return GAIM_CMD_RET_FAILED; /* "*" is not a valid argument */
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1616 else
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1617 recipient = local_zephyr_normalize(args[0]);
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1618
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1619 if (strlen(recipient) < 1)
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1620 return GAIM_CMD_RET_FAILED; /* a null recipient is a chat message, not an IM */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1621
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1622 if (zephyr_send_message("MESSAGE","PERSONAL",recipient,args[1],zephyr_get_signature(),""))
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1623 return GAIM_CMD_RET_OK;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1624 else
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1625 return GAIM_CMD_RET_FAILED;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1626 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1627
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1628 static GaimCmdRet zephyr_gaim_cmd_zlocate(GaimConversation *conv,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1629 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1630 {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1631 zephyr_zloc(gaim_conversation_get_gc(conv),args[0]);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1632 return GAIM_CMD_RET_OK;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1633 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1634
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1635 static GaimCmdRet zephyr_gaim_cmd_instance(GaimConversation *conv,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1636 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1637 {
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1638 /* Currently it sets the instance with leading spaces and
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1639 * all. This might not be the best thing to do, though having
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1640 * one word isn't ideal either. */
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1641
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1642 GaimConvChat *gcc = gaim_conversation_get_chat_data(conv);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1643 int id = gcc->id;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1644 const char* instance = args[0];
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1645 zephyr_chat_set_topic(gaim_conversation_get_gc(conv),id,instance);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1646 return GAIM_CMD_RET_OK;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1647 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1648
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1649 static GaimCmdRet zephyr_gaim_cmd_joinchat_cir(GaimConversation *conv,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1650 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1651 {
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1652 /* Join a new zephyr chat */
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1653 GHashTable *triple = g_hash_table_new(NULL,NULL);
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1654 g_hash_table_insert(triple,"class",args[0]);
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1655 g_hash_table_insert(triple,"instance",args[1]);
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1656 g_hash_table_insert(triple,"recipient",args[2]);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1657 zephyr_join_chat(gaim_conversation_get_gc(conv),triple);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1658 return GAIM_CMD_RET_OK;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1659 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1660
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1661 static GaimCmdRet zephyr_gaim_cmd_zi(GaimConversation *conv,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1662 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1663 {
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1664 /* args = instance, message */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1665 if ( zephyr_send_message("message",args[0],"",args[1],zephyr_get_signature(),""))
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1666 return GAIM_CMD_RET_OK;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1667 else
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1668 return GAIM_CMD_RET_FAILED;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1669 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1670
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1671 static GaimCmdRet zephyr_gaim_cmd_zci(GaimConversation *conv,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1672 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1673 {
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1674 /* args = class, instance, message */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1675 if ( zephyr_send_message(args[0],args[1],"",args[2],zephyr_get_signature(),""))
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1676 return GAIM_CMD_RET_OK;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1677 else
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1678 return GAIM_CMD_RET_FAILED;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1679 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1680
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1681 static GaimCmdRet zephyr_gaim_cmd_zcir(GaimConversation *conv,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1682 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1683 {
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1684 /* args = class, instance, recipient, message */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1685 if ( zephyr_send_message(args[0],args[1],args[2],args[3],zephyr_get_signature(),""))
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1686 return GAIM_CMD_RET_OK;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1687 else
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1688 return GAIM_CMD_RET_FAILED;
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
1689 }
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
1690
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1691 static GaimCmdRet zephyr_gaim_cmd_zir(GaimConversation *conv,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1692 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1693 {
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1694 /* args = instance, recipient, message */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1695 if ( zephyr_send_message("message",args[0],args[1],args[2],zephyr_get_signature(),""))
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1696 return GAIM_CMD_RET_OK;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1697 else
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1698 return GAIM_CMD_RET_FAILED;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1699 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1700
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1701 static GaimCmdRet zephyr_gaim_cmd_zc(GaimConversation *conv,
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1702 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1703 {
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1704 /* args = class, message */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1705 if ( zephyr_send_message(args[0],"PERSONAL","",args[1],zephyr_get_signature(),""))
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1706 return GAIM_CMD_RET_OK;
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1707 else
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1708 return GAIM_CMD_RET_FAILED;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1709 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1710
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1711 static void zephyr_register_slash_commands()
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1712 {
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1713
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1714 gaim_cmd_register("msg","ws", GAIM_CMD_P_PRPL,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1715 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1716 "prpl-zephyr",
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1717 zephyr_gaim_cmd_msg, _("msg &lt;nick&gt; &lt;message&gt;: Send a private message to a user"), NULL);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1718
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1719 gaim_cmd_register("zlocate","w", GAIM_CMD_P_PRPL,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1720 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1721 "prpl-zephyr",
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1722 zephyr_gaim_cmd_zlocate, _("zlocate &lt;nick&gt;: Locate user"), NULL);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1723
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1724 gaim_cmd_register("zl","w", GAIM_CMD_P_PRPL,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1725 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1726 "prpl-zephyr",
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1727 zephyr_gaim_cmd_zlocate, _("zl &lt;nick&gt;: Locate user"), NULL);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1728
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1729 gaim_cmd_register("instance","s", GAIM_CMD_P_PRPL,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1730 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1731 "prpl-zephyr",
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1732 zephyr_gaim_cmd_instance, _("instance &lt;instance&gt;: Set the instance to be used on this class"), NULL);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1733
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1734 gaim_cmd_register("inst","s", GAIM_CMD_P_PRPL,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1735 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1736 "prpl-zephyr",
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1737 zephyr_gaim_cmd_instance, _("inst &lt;instance&gt;: Set the instance to be used on this class"), NULL);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1738
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1739 gaim_cmd_register("sub", "www", GAIM_CMD_P_PRPL,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1740 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1741 "prpl-zephyr",
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1742 zephyr_gaim_cmd_joinchat_cir,
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1743 _("sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"), NULL);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1744
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1745 gaim_cmd_register("zi","ws", GAIM_CMD_P_PRPL,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1746 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1747 "prpl-zephyr",
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1748 zephyr_gaim_cmd_zi, _("zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"), NULL);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1749
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1750 gaim_cmd_register("zci","wws",GAIM_CMD_P_PRPL,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1751 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1752 "prpl-zephyr",
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1753 zephyr_gaim_cmd_zci,
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1754 _("zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,<i>instance</i>,*&gt;"), NULL);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1755
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1756 gaim_cmd_register("zcir","wwws",GAIM_CMD_P_PRPL,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1757 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1758 "prpl-zephyr",
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1759 zephyr_gaim_cmd_zcir,
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1760 _("zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"), NULL);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1761
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1762 gaim_cmd_register("zir","wws",GAIM_CMD_P_PRPL,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1763 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1764 "prpl-zephyr",
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1765 zephyr_gaim_cmd_zir,
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1766 _("zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,<i>instance</i>,<i>recipient</i>&gt;"), NULL);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1767
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1768 gaim_cmd_register("zc","ws", GAIM_CMD_P_PRPL,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1769 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1770 "prpl-zephyr",
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1771 zephyr_gaim_cmd_zc, _("zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"), NULL);
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
1772
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1773 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1774
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1775
9740
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1776 static void
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1777 zephyr_add_deny(GaimConnection *gc, const char *who)
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1778 {
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1779 gaim_privacy_deny_add(gc->account,who,1);
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1780 }
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1781
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1782 static void
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1783 zephyr_remove_deny(GaimConnection *gc, const char *who)
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1784 {
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1785 gaim_privacy_deny_remove(gc->account,who,1);
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1786 }
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1787
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1788 static void
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1789 zephyr_add_permit(GaimConnection *gc, const char *who)
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1790 {
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1791 gaim_privacy_permit_add(gc->account,who,1);
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1792 }
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1793
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1794 static void
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1795 zephyr_remove_permit(GaimConnection *gc, const char *who)
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1796 {
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1797 gaim_privacy_permit_remove(gc->account,who,1);
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1798 }
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1799
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1800 static void
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1801 zephyr_set_permit_deny(GaimConnection *gc)
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1802 {
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1803 /* This doesn't have to do anything, since really, we can just check account->perm_deny when deciding whether to di */
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1804 return;
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1805 }
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1806 static int zephyr_resubscribe(GaimConnection *gc)
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1807 {
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1808 /* Resubscribe to the in-memory list of subscriptions and also
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1809 unsubscriptions*/
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1810 zephyr_account *zephyr = gc->proto_data;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1811 GSList *s = zephyr->subscrips;
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1812 zephyr_triple *zt;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1813 ZSubscription_t zst;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1814 while (s) {
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1815 zt = s->data;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1816 zst.zsub_class = zt->class;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1817 zst.zsub_classinst = zt->instance;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1818 zst.zsub_recipient = zt->recipient;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1819 /* XXX We really should care if this fails */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1820 ZSubscribeTo(&zst, 1, 0);
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1821 s = s->next;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1822 }
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1823 /* XXX handle unsubscriptions */
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1824 return 1;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1825 }
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1826
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1827
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1828 static void zephyr_action_resubscribe(GaimPluginAction *action)
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1829 {
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1830
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1831 GaimConnection *gc = (GaimConnection *) action->context;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1832 zephyr_resubscribe(gc);
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1833 }
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1834
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1835
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1836 static void zephyr_action_get_subs_from_server(GaimPluginAction *action)
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1837 {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1838 GaimConnection *gc = (GaimConnection *) action->context;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1839 zephyr_account *zephyr = gc->proto_data;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1840 gchar *title;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1841 int retval, nsubs, one,i;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1842 ZSubscription_t subs;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1843 GString* subout = g_string_new("Subscription list<br>");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1844
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1845 title = g_strdup_printf("Server subscriptions for %s", gaim_zephyr_get_sender());
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1846
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1847 if (zephyr->port == 0) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1848 gaim_debug(GAIM_DEBUG_ERROR,"zephyr", "error while retrieving port");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1849 return;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1850 }
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1851 if ((retval = ZRetrieveSubscriptions(zephyr->port,&nsubs)) != ZERR_NONE) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1852 /* XXX better error handling */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1853 gaim_debug(GAIM_DEBUG_ERROR,"zephyr", "error while retrieving subscriptions from server");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1854 return;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1855 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1856 g_string_append_printf(subout,"Subscription list <br>");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1857 for(i=0;i<nsubs;i++) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1858 one = 1;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1859 if ((retval = ZGetSubscriptions(&subs,&one)) != ZERR_NONE) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1860 /* XXX better error handling */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1861 gaim_debug(GAIM_DEBUG_ERROR,"zephyr", "error while retrieving individual subscription");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1862 return;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1863 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1864 g_string_append_printf(subout, "Class %s Instance %s Recipient %s<br>",
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1865 subs.zsub_class, subs.zsub_classinst,
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1866 subs.zsub_recipient);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1867 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1868 gaim_notify_formatted(gc, title, title, NULL, subout->str, NULL, NULL);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1869 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1870
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1871
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1872 static GList *zephyr_actions(GaimPlugin *plugin, gpointer context)
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1873 {
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1874 GList *list = NULL;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1875 GaimPluginAction *act = NULL;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1876
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1877 act = gaim_plugin_action_new(_("Resubscribe"), zephyr_action_resubscribe);
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1878 list = g_list_append(list, act);
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1879
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1880 act = gaim_plugin_action_new(_("Retrieve subscriptions from server"), zephyr_action_get_subs_from_server);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1881 list = g_list_append(list,act);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1882
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1883 return list;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1884 }
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1885
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1886 static GaimPlugin *my_protocol = NULL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1887
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1888 static GaimPluginProtocolInfo prpl_info = {
8749
d7b8eb1f0a18 [gaim-migrate @ 9504]
Christian Hammond <chipx86@chipx86.com>
parents: 8713
diff changeset
1889 GAIM_PRPL_API_VERSION,
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1890 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_NO_PASSWORD,
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1891 NULL, /* ??? user_splits */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1892 NULL, /* ??? protocol_options */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1893 NO_BUDDY_ICONS,
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1894 zephyr_list_icon,
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1895 NULL, /* ??? list_emblems */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1896 NULL, /* ??? status_text */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1897 NULL, /* ??? tooltip_text */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1898 zephyr_away_states, /* away_states */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1899 NULL, /* ??? blist_node_menu - probably all useful actions are already handled*/
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1900 zephyr_chat_info, /* chat_info */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1901 zephyr_login, /* login */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1902 zephyr_close, /* close */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1903 zephyr_send_im, /* send_im */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1904 NULL, /* XXX set info (Location?) */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1905 zephyr_send_typing, /* send_typing */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1906 zephyr_zloc, /* get_info */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1907 zephyr_set_away, /* XXX set_away need to fix */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1908 NULL, /* ??? set idle */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1909 NULL, /* change password */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1910 NULL, /* add_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1911 NULL, /* add_buddies */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1912 NULL, /* remove_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1913 NULL, /* remove_buddies */
9740
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1914 zephyr_add_permit, /* add_permit -- not useful, since anyone can zephyr you by default*/
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1915 zephyr_add_deny, /* XXX add_deny -- maybe put an auto "I'm ignoring your zephyrs*/
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1916 zephyr_remove_permit, /* remove_permit -- not useful, see add permit */
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1917 zephyr_remove_deny, /* XXX remove deny -- remove above deny, */
2bb5e2cd64bd [gaim-migrate @ 10605]
Luke Schierer <lschiere@pidgin.im>
parents: 9713
diff changeset
1918 zephyr_set_permit_deny, /* ??? set permit deny */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1919 NULL, /* --- warn */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1920 zephyr_join_chat, /* join_chat */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1921 NULL, /* reject_chat */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1922 NULL, /* chat_invite */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1923 zephyr_chat_leave, /* chat_leave */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1924 NULL, /* chat_whisper */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1925 zephyr_chat_send, /* chat_send */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1926 NULL, /* keepalive */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1927 NULL, /* register_user */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1928 NULL, /* XXX get_cb_info get chat buddy info */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1929 NULL, /* get_cb_away */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1930 NULL, /* alias_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1931 NULL, /* group_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1932 NULL, /* rename_group */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1933 NULL, /* ??? buddy_free */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1934 NULL, /* convo_closed */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1935 zephyr_normalize, /* normalize */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1936 NULL, /* XXX set_buddy_icon */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1937 NULL, /* remove_group */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1938 NULL, /* XXX get_cb_real_name */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1939 zephyr_chat_set_topic, /* set_chat_topic */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1940 zephyr_find_blist_chat, /* find_blist_chat */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1941 NULL, /* roomlist_get_list */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1942 NULL, /* roomlist_cancel */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1943 NULL, /* roomlist_expand_category */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1944 NULL, /* can_receive_file */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
1945 NULL /* send_file */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1946 };
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1947
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1948 static GaimPluginInfo info = {
8749
d7b8eb1f0a18 [gaim-migrate @ 9504]
Christian Hammond <chipx86@chipx86.com>
parents: 8713
diff changeset
1949 GAIM_PLUGIN_API_VERSION, /**< api_version */
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1950 GAIM_PLUGIN_PROTOCOL, /**< type */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1951 NULL, /**< ui_requirement */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1952 0, /**< flags */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1953 NULL, /**< dependencies */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1954 GAIM_PRIORITY_DEFAULT, /**< priority */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1955
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1956 "prpl-zephyr", /**< id */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1957 "Zephyr", /**< name */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1958 VERSION, /**< version */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1959 /** summary */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1960 N_("Zephyr Protocol Plugin"),
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1961 /** description */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1962 N_("Zephyr Protocol Plugin"),
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1963 NULL, /**< author */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1964 GAIM_WEBSITE, /**< homepage */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1965
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1966 NULL, /**< load */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1967 NULL, /**< unload */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1968 NULL, /**< destroy */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1969
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1970 NULL, /**< ui_info */
8993
294ae6548d4e [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8954
diff changeset
1971 &prpl_info, /**< extra_info */
294ae6548d4e [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8954
diff changeset
1972 NULL,
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1973 zephyr_actions
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1974 };
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1975
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1976 static void init_plugin(GaimPlugin * plugin)
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1977 {
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
1978 GaimAccountOption *option;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1979 char *tmp = get_exposure_level();
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1980
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1981 option = gaim_account_option_bool_new(_("Export to .anyone"), "write_anyone", FALSE);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1982 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
1983
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1984 option = gaim_account_option_bool_new(_("Export to .zephyr.subs"), "write_zsubs", FALSE);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1985 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
1986
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1987 option = gaim_account_option_string_new(_("Exposure"), "exposure_level", tmp ? tmp : EXPOSE_REALMVIS);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1988 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
1989
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1990 option = gaim_account_option_string_new(_("Encoding"), "encoding", ZEPHYR_FALLBACK_CHARSET);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1991 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
8560
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
1992
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
1993 my_protocol = plugin;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1994 zephyr_register_slash_commands();
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1995 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1996
5920
7d385de2f9cd [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
1997 GAIM_INIT_PLUGIN(zephyr, init_plugin, info);