annotate src/protocols/zephyr/zephyr.c @ 10038:eb8ccdd6f5f2

[gaim-migrate @ 10997] " Fix Philip Mucci's bug (reported to gaim-devel on the 16th), where malformed (visibility) strings, caused users to be unmessageable and hidden, by normalizing them, and using sane defaults. Fixes CraigD's bug IRC reported on IRC (non-kerberized zephyr users always have the realm "local-realm"), by adding a user-specified "Realm" option string. Also added two new preferences (import from .anyone and import from .zephyr.subs) to go with (export to .anyone and "export to .zephyr.subs"). Since one can now use multiple accounts, most people wouldn't want to use the same buddy lists and chat room lists for both accounts. Added a /topic command to make zephyr use the same command name as the other protocols which have topics." --Arun A Tharuvai committer: Tailor Script <tailor@pidgin.im>
author Luke Schierer <lschiere@pidgin.im>
date Sat, 18 Sep 2004 22:25:12 +0000
parents c124bef68132
children 8490f2e292a6
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 *
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
10 * Some code borrowed from kzephyr, by
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
11 * Chris Colohan <colohan+@cs.cmu.edu>
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
12 *
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
13 * This program is free software; you can redistribute it and/or modify
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
14 * 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
15 * the Free Software Foundation; either version 2 of the License, or
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
16 * (at your option) any later version.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
17 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
18 * This program is distributed in the hope that it will be useful,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
21 * GNU General Public License for more details.
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
22 *
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
23 * You should have received a copy of the GNU General Public License
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
24 * along with this program; if not, write to the Free Software
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
26 *
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
27
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
28 */
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
29 /* XXX eww */
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
30 #include "src/internal.h"
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
31
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
32 #include "accountopt.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
33 #include "debug.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
34 #include "notify.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
35 #include "prpl.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
36 #include "server.h"
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
37 #include "util.h"
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
38 #include "cmds.h"
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
39 #include "privacy.h"
9943
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9927
diff changeset
40 #include "version.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
41
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
42 #include "zephyr.h"
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
43 #include "internal.h"
5872
059d95c67cda [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5717
diff changeset
44
8386
143d0b29ba82 [gaim-migrate @ 9114]
Mark Doliner <mark@kingant.net>
parents: 8354
diff changeset
45 #include <strings.h>
143d0b29ba82 [gaim-migrate @ 9114]
Mark Doliner <mark@kingant.net>
parents: 8354
diff changeset
46
8560
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
47 #define ZEPHYR_FALLBACK_CHARSET "ISO-8859-1"
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
48
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
49 /* 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
50 #define ZEPHYR_TYPING_SEND_TIMEOUT 15
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
51 #define ZEPHYR_TYPING_RECV_TIMEOUT 10
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
52 #define ZEPHYR_FD_READ 0
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
53 #define ZEPHYR_FD_WRITE 1
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
54
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
55 extern Code_t ZGetLocations(ZLocations_t *, int *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
56 extern Code_t ZSetLocation(char *);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
57 extern Code_t ZUnsetLocation();
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
58 extern Code_t ZGetSubscriptions(ZSubscription_t *, int*);
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
59 extern char __Zephyr_realm[];
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
60 typedef struct _zframe zframe;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
61 typedef struct _zephyr_triple zephyr_triple;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
62 typedef struct _zephyr_account zephyr_account;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
63 typedef struct _parse_tree parse_tree;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
64
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
65 typedef enum {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
66 GAIM_ZEPHYR_NONE, /* Non-kerberized ZEPH0.2 */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
67 GAIM_ZEPHYR_KRB4, /* ZEPH0.2 w/ KRB4 support */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
68 GAIM_ZEPHYR_TZC, /* tzc executable proxy */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
69 GAIM_ZEPHYR_INTERGALACTIC_KRB4, /* Kerberized ZEPH0.3 */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
70 } zephyr_connection_type;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
71
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
72 struct _zephyr_account {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
73 GaimAccount* account;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
74 char *username;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
75 char *realm;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
76 char *encoding;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
77 char* galaxy; /* not yet useful */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
78 char* krbtkfile; /* not yet useful */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
79 guint32 nottimer;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
80 guint32 loctimer;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
81 GList *pending_zloc_names;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
82 GSList *subscrips;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
83 int last_id;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
84 unsigned short port;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
85 char ourhost[HOST_NAME_MAX + 1];
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
86 char ourhostcanon[HOST_NAME_MAX + 1];
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
87 zephyr_connection_type connection_type;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
88 int totzc[2];
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
89 int fromtzc[2];
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
90 char *exposure;
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
91 pid_t tzc_pid;
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
92 gchar *away;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
93 };
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
94
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
95 #define MAXCHILDREN 20
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
96
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
97 struct _parse_tree {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
98 gchar* contents;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
99 parse_tree *children[MAXCHILDREN];
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
100 int num_children;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
101 };
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
102
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
103 parse_tree null_parse_tree = {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
104 "",
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
105 {},
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
106 0,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
107 };
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
108
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
109 #define use_none(zephyr) ((zephyr->connection_type == GAIM_ZEPHYR_NONE)?1:0)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
110 #define use_krb4(zephyr) ((zephyr->connection_type == GAIM_ZEPHYR_KRB4)?1:0)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
111 #define use_tzc(zephyr) ((zephyr->connection_type == GAIM_ZEPHYR_TZC)?1:0)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
112
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
113 #define use_zeph02(zephyr) ( (zephyr->connection_type == GAIM_ZEPHYR_NONE)?1: ((zephyr->connection_type == GAIM_ZEPHYR_KRB4)?1:0))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
114
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
115 /* struct I need for zephyr_to_html */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
116 struct _zframe {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
117 /* 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
118 * the color. */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
119 gboolean has_closer;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
120 /* </i>, </font>, </b>, etc. */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
121 char *closing;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
122 /* text including the opening html thingie. */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
123 GString *text;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
124 struct _zframe *enclosing;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
125 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
126
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
127 struct _zephyr_triple {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
128 char *class;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
129 char *instance;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
130 char *recipient;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
131 char *name;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
132 gboolean open;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
133 int id;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
134 };
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
135
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
136 #define z_call(func) if (func != ZERR_NONE)\
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
137 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
138 #define z_call_r(func) if (func != ZERR_NONE)\
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
139 return TRUE;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
140
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
141 #define z_call_s(func, err) if (func != ZERR_NONE) {\
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
142 gaim_connection_error(gc, err);\
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
143 return;\
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
144 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
145
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
146
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
147 Code_t zephyr_subscribe_to(zephyr_account* zephyr, char* class, char *instance, char *recipient, char* galaxy) {
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
148
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
149 if (use_tzc(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
150 /* ((tzcfodder . subscribe) ("class" "instance" "recipient")) */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
151 gchar *zsubstr = g_strdup_printf("((tzcfodder . subscribe) (\"%s\" \"%s\" \"%s\"))\n",class,instance,recipient);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
152 write(zephyr->totzc[ZEPHYR_FD_WRITE],zsubstr,strlen(zsubstr));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
153 g_free(zsubstr);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
154 return ZERR_NONE;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
155 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
156 else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
157 if (use_zeph02(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
158 ZSubscription_t sub;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
159 sub.zsub_class = class;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
160 sub.zsub_classinst = instance;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
161 sub.zsub_recipient = recipient;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
162 return ZSubscribeTo(&sub,1,0);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
163 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
164 /* This should not happen */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
165 return -1;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
166 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
167 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
168 return -1;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
169 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
170
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
171 char *local_zephyr_normalize(zephyr_account* zephyr,const char *);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
172 static const char *zephyr_normalize(const GaimAccount *, const char *);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
173 static void zephyr_chat_set_topic(GaimConnection * gc, int id, const char *topic);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
174 char* zephyr_tzc_deescape_str(const char *message);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
175
9912
f6a1054e2bdc [gaim-migrate @ 10804]
Luke Schierer <lschiere@pidgin.im>
parents: 9911
diff changeset
176 char *zephyr_strip_local_realm(zephyr_account* zephyr,const char* user){
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
177 /*
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
178 Takes in a username of the form username or username@realm
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
179 and returns:
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
180 username, if there is no realm, or the realm is the local realm
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
181 or:
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
182 username@realm if there is a realm and it is foreign
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
183 */
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
184 char *tmp = g_strdup(user);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
185 char *at = strchr(tmp,'@');
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
186 if (at && !g_ascii_strcasecmp(at+1,zephyr->realm)) {
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
187 /* 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
188 char* tmp2;
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
189 *at = '\0';
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
190 tmp2 = g_strdup(tmp);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
191 g_free(tmp);
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
192 return tmp2;
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
193 }
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
194 else {
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
195 /* 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
196 return tmp;
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
197 }
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
198 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
199
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
200 /* 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
201 * wouldn't do this. but it is so i will. */
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
202
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
203 /* just for debugging */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
204 static void handle_unknown(ZNotice_t notice)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
205 {
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
206 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
207 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
208 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
209 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
210 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
211 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
212 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
213 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
214 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
215 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
216 }
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
217
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
218
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
219 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
220 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
221 zephyr_triple *zt;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
222
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
223 zt = g_new0(zephyr_triple, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
224 zt->class = g_strdup(c);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
225 zt->instance = g_strdup(i);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
226 zt->recipient = g_strdup(r);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
227 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
228 zt->id = ++(zephyr->last_id);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
229 zt->open = FALSE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
230 return zt;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
231 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
232
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
233 static void free_triple(zephyr_triple * zt)
2086
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 g_free(zt->class);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
236 g_free(zt->instance);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
237 g_free(zt->recipient);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
238 g_free(zt->name);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
239 g_free(zt);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
240 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
241
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
242 /* 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
243 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
244 with triple zt2
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
245
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
246 zt1 is a subset of zt2
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
247 iff. the classnames are identical ignoring case
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
248 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
249 AND. the recipient names are identical
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
250 */
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
251
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
252 static gboolean triple_subset(zephyr_triple * zt1, zephyr_triple * zt2)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
253 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
254
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
255 if (!zt2)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
256 gaim_debug_error("zephyr","zt2 doesn't exist\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
257 if (!zt1)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
258 gaim_debug_error("zephyr","zt1 doesn't exist\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
259 if (!(zt1->class))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
260 gaim_debug_error("zephyr","zt1c doesn't exist\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
261 if (!(zt1->instance))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
262 gaim_debug_error("zephyr","zt1i doesn't exist\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
263 if (!(zt1->recipient))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
264 gaim_debug_error("zephyr","zt1r doesn't exist\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
265 if (!(zt2->class))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
266 gaim_debug_error("zephyr","zt2c doesn't exist\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
267 if (!(zt2->recipient))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
268 gaim_debug_error("zephyr","zt2r doesn't exist\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
269 if (!(zt2->instance))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
270 gaim_debug_error("zephyr","zt2i doesn't exist\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
271
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
272
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
273 if (g_ascii_strcasecmp(zt2->class, zt1->class)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
274 return FALSE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
275 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
276 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
277 return FALSE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
278 }
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
279 if (g_ascii_strcasecmp(zt2->recipient, zt1->recipient)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
280 return FALSE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
281 }
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
282 gaim_debug_info("zephyr","<%s,%s,%s> is in <%s,%s,%s>\n",zt1->class,zt1->instance,zt1->recipient,zt2->class,zt2->instance,zt2->recipient);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
283 return TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
284 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
285
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
286 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
287 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
288 zephyr_triple *curr_t;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
289 GSList *curr = zephyr->subscrips;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
290
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
291 while (curr) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
292 curr_t = curr->data;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
293 if (triple_subset(zt, curr_t))
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
294 return curr_t;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
295 curr = curr->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
296 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
297 return NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
298 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
299
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
300 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
301 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
302 zephyr_triple *zt;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
303 GSList *curr = zephyr->subscrips;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
304
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
305 while (curr) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
306 zt = curr->data;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
307 if (zt->id == id)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
308 return zt;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
309 curr = curr->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
310 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
311 return NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
312 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
313
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
314 /*
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
315 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
316 */
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
317
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
318 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
319 {
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
320 gchar *utf8;
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
321 GError *err = NULL;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
322 zephyr_account *zephyr = gc->proto_data;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
323 if (g_utf8_validate(string, len, NULL)) {
8568
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
324 return g_strdup(string);
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
325 } else {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
326 utf8 = g_convert(string, len, "UTF-8", zephyr->encoding, NULL, NULL, &err);
8568
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
327 if (err) {
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
328 gaim_debug(GAIM_DEBUG_ERROR, "zephyr", "recv conversion error: %s\n", err->message);
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
329 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
330 g_error_free(err);
8568
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
331 }
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
332
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
333 return utf8;
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
334 }
8560
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
335 }
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
336
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
337 /* utility macros that are useful for zephyr_to_html */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
338
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
339 #define IS_OPENER(c) ((c == '{') || (c == '[') || (c == '(') || (c == '<'))
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
340 #define IS_CLOSER(c) ((c == '}') || (c == ']') || (c == ')') || (c == '>'))
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
341
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
342 /* 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
343 And converts it to zephyr formatting.
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
344 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
345 It ignores <font back=...>
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
346 It does
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
347 <font size = "1 or 2" -> @small
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
348 3 or 4 @medium()
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
349 5,6, or 7 @large()
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
350 <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
351 */
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
352
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
353 static char *html_to_zephyr(const char *message)
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
354 {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
355 int len, cnt, retcount;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
356 char *ret;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
357
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
358 len = strlen(message);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
359 if (!len)
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
360 return g_strdup("");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
361
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
362 ret = g_new0(char, len * 3);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
363
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
364 bzero(ret, len * 3);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
365 retcount = 0;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
366 cnt = 0;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
367 gaim_debug_info("zephyr","html received %s\n",message);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
368 while (cnt <= len) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
369 if (message[cnt] == '<') {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
370 if (!g_ascii_strncasecmp(message + cnt + 1, "i>", 2)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
371 strncpy(ret + retcount, "@i(", 3);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
372 cnt += 3;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
373 retcount += 3;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
374 } else if (!g_ascii_strncasecmp(message + cnt + 1, "b>", 2)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
375 strncpy(ret + retcount, "@b(", 3);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
376 cnt += 3;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
377 retcount += 3;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
378 } else if (!g_ascii_strncasecmp(message + cnt + 1, "br>", 3)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
379 strncpy(ret + retcount, "\n", 1);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
380 cnt += 4;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
381 retcount += 1;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
382 } else if (!g_ascii_strncasecmp(message + cnt + 1, "a href=\"mailto:", 15)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
383 cnt += 16;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
384 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
385 ret[retcount] = message[cnt];
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
386 retcount++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
387 cnt++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
388 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
389 cnt += 2;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
390 /* ignore descriptive string */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
391 while (g_ascii_strncasecmp(message + cnt, "</a>", 4) != 0) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
392 cnt++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
393 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
394 cnt += 4;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
395 } else if (!g_ascii_strncasecmp(message + cnt + 1, "a href=\"", 8)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
396 cnt += 9;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
397 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
398 ret[retcount] = message[cnt];
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
399 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
400 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
401 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
402 cnt += 2;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
403 /* ignore descriptive string */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
404 while (g_ascii_strncasecmp(message + cnt, "</a>", 4) != 0) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
405 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
406 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
407 cnt += 4;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
408 } else if (!g_ascii_strncasecmp(message + cnt + 1, "font", 4)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
409 cnt += 5;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
410 while (!g_ascii_strncasecmp(message + cnt, " ", 1))
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
411 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
412 if (!g_ascii_strncasecmp(message + cnt, "color=\"", 7)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
413 cnt += 7;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
414 strncpy(ret + retcount, "@color(", 7);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
415 retcount += 7;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
416 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
417 ret[retcount] = message[cnt];
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
418 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
419 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
420 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
421 ret[retcount] = ')';
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
422 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
423 cnt += 2;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
424 } else if (!g_ascii_strncasecmp(message + cnt, "face=\"", 6)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
425 cnt += 6;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
426 strncpy(ret + retcount, "@font(", 6);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
427 retcount += 6;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
428 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
429 ret[retcount] = message[cnt];
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
430 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
431 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
432 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
433 ret[retcount] = ')';
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
434 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
435 cnt += 2;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
436 } else if (!g_ascii_strncasecmp(message + cnt, "size=\"", 6)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
437 cnt += 6;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
438 if ((message[cnt] == '1') || (message[cnt] == '2')) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
439 strncpy(ret + retcount, "@small(", 7);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
440 retcount += 7;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
441 } else if ((message[cnt] == '3')
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
442 || (message[cnt] == '4')) {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
443 strncpy(ret + retcount, "@medium(", 8);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
444 retcount += 8;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
445 } else if ((message[cnt] == '5')
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
446 || (message[cnt] == '6')
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
447 || (message[cnt] == '7')) {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
448 strncpy(ret + retcount, "@large(", 7);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
449 retcount += 7;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
450 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
451 cnt += 3;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
452 } else {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
453 /* Drop all unrecognized/misparsed font tags */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
454 while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
455 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
456 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
457 cnt += 2;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
458 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
459 } else if (!g_ascii_strncasecmp(message + cnt + 1, "/i>", 3)
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
460 || !g_ascii_strncasecmp(message + cnt + 1, "/b>", 3)) {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
461 cnt += 4;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
462 ret[retcount] = ')';
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
463 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
464 } else if (!g_ascii_strncasecmp(message + cnt + 1, "/font>", 6)) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
465 cnt += 7;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
466 strncpy(ret + retcount, "@font(fixed)", 12);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
467 retcount += 12;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
468 } else {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
469 /* Catch all for all unrecognized/misparsed <foo> tage */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
470 while (g_ascii_strncasecmp(message + cnt, ">", 1) != 0) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
471 ret[retcount] = message[cnt];
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
472 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
473 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
474 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
475 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
476 } else {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
477 /* Duh */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
478 ret[retcount] = message[cnt];
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
479 retcount++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
480 cnt++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
481 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
482 }
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
483 gaim_debug_info("zephyr","zephyr outputted %s\n",ret);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
484 return ret;
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
485 }
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
486
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
487 /* this parses zephyr formatting and converts it to html. For example, if
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
488 * you pass in "@{@color(blue)@i(hello)}" you should get out
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
489 * "<font color=blue><i>hello</i></font>". */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
490 static char *zephyr_to_html(char *message)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
491 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
492 int len, cnt;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
493 zframe *frames, *curr;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
494 char *ret;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
495
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
496 frames = g_new(zframe, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
497 frames->text = g_string_new("");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
498 frames->enclosing = NULL;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
499 frames->closing = "";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
500 frames->has_closer = FALSE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
501
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
502 len = strlen(message);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
503 cnt = 0;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
504 while (cnt <= len) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
505 if (message[cnt] == '@') {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
506 zframe *new_f;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
507 char *buf;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
508 int end;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
509
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
510 for (end = 1; (cnt + end) <= len && !IS_OPENER(message[cnt + end])
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
511 && !IS_CLOSER(message[cnt + end]); end++);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
512 buf = g_new0(char, end);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
513
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
514 if (end) {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
515 g_snprintf(buf, end, "%s", message + cnt + 1);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
516 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
517 if (!g_ascii_strcasecmp(buf, "italic") || !g_ascii_strcasecmp(buf, "i")) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
518 new_f = g_new(zframe, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
519 new_f->enclosing = frames;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
520 new_f->text = g_string_new("<i>");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
521 new_f->closing = "</i>";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
522 new_f->has_closer = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
523 frames = new_f;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
524 cnt += end + 1; /* cnt points to char after opener */
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
525 } else if (!g_ascii_strcasecmp(buf, "small")) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
526 new_f = g_new(zframe, 1);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
527 new_f->enclosing = frames;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
528 new_f->text = g_string_new("<font size=\"1\">");
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
529 new_f->closing = "</font>";
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
530 frames = new_f;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
531 cnt += end + 1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
532 } else if (!g_ascii_strcasecmp(buf, "medium")) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
533 new_f = g_new(zframe, 1);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
534 new_f->enclosing = frames;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
535 new_f->text = g_string_new("<font size=\"3\">");
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
536 new_f->closing = "</font>";
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
537 frames = new_f;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
538 cnt += end + 1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
539 } else if (!g_ascii_strcasecmp(buf, "large")) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
540 new_f = g_new(zframe, 1);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
541 new_f->enclosing = frames;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
542 new_f->text = g_string_new("<font size=\"7\">");
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
543 new_f->closing = "</font>";
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
544 frames = new_f;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
545 cnt += end + 1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
546 } else if (!g_ascii_strcasecmp(buf, "bold")
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
547 || !g_ascii_strcasecmp(buf, "b")) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
548 new_f = g_new(zframe, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
549 new_f->enclosing = frames;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
550 new_f->text = g_string_new("<b>");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
551 new_f->closing = "</b>";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
552 new_f->has_closer = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
553 frames = new_f;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
554 cnt += end + 1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
555 } else if (!g_ascii_strcasecmp(buf, "font")) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
556 cnt += end + 1;
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
557 new_f = g_new(zframe, 1);
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
558 new_f->enclosing = frames;
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
559 new_f->text = g_string_new("<font face=");
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
560 for (; (cnt <= len) && !IS_CLOSER(message[cnt]); cnt++) {
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
561 g_string_append_c(new_f->text, message[cnt]);
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
562 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
563 cnt++; /* point to char after closer */
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
564 g_string_append_c(new_f->text, '>');
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
565 new_f->closing = "</font>";
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
566 new_f->has_closer = FALSE;
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
567 frames = new_f;
8568
88988327a4e0 [gaim-migrate @ 9316]
Mark Doliner <mark@kingant.net>
parents: 8562
diff changeset
568 } else if (!g_ascii_strcasecmp(buf, "color")) {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
569 cnt += end + 1;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
570 new_f = g_new(zframe, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
571 new_f->enclosing = frames;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
572 new_f->text = g_string_new("<font color=");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
573 for (; (cnt <= len) && !IS_CLOSER(message[cnt]); cnt++) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
574 g_string_append_c(new_f->text, message[cnt]);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
575 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
576 cnt++; /* point to char after closer */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
577 g_string_append_c(new_f->text, '>');
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
578 new_f->closing = "</font>";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
579 new_f->has_closer = FALSE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
580 frames = new_f;
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
581 } else if (!g_ascii_strcasecmp(buf, "")) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
582 new_f = g_new(zframe, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
583 new_f->enclosing = frames;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
584 new_f->text = g_string_new("");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
585 new_f->closing = "";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
586 new_f->has_closer = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
587 frames = new_f;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
588 cnt += end + 1; /* cnt points to char after opener */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
589 } else {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
590 if ((cnt + end) > len) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
591 g_string_append_c(frames->text, '@');
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
592 cnt++;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
593 } else if (IS_CLOSER(message[cnt + end])) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
594 /* We have @chars..closer . This is
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
595 merely a sequence of chars that isn't a formatting tag
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
596 */
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
597 int tmp = cnt;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
598
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
599 while (tmp <= cnt + end) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
600 g_string_append_c(frames->text, message[tmp]);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
601 tmp++;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
602 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
603 cnt += end + 1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
604 } else {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
605 /* unrecognized thingie. act like it's not there, but we
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
606 * still need to take care of the corresponding closer,
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
607 * make a frame that does nothing. */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
608 new_f = g_new(zframe, 1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
609 new_f->enclosing = frames;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
610 new_f->text = g_string_new("");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
611 new_f->closing = "";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
612 new_f->has_closer = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
613 frames = new_f;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
614 cnt += end + 1; /* cnt points to char after opener */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
615 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
616 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
617 } else if (IS_CLOSER(message[cnt])) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
618 zframe *popped;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
619 gboolean last_had_closer;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
620
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
621 if (frames->enclosing) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
622 do {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
623 popped = frames;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
624 frames = frames->enclosing;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
625 g_string_append(frames->text, popped->text->str);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
626 g_string_append(frames->text, popped->closing);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
627 g_string_free(popped->text, TRUE);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
628 last_had_closer = popped->has_closer;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
629 g_free(popped);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
630 } while (frames && frames->enclosing && !last_had_closer);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
631 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
632 g_string_append_c(frames->text, message[cnt]);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
633 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
634 cnt++;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
635 } else if (message[cnt] == '\n') {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
636 g_string_append(frames->text, "<br>");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
637 cnt++;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
638 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
639 g_string_append_c(frames->text, message[cnt++]);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
640 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
641 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
642 /* go through all the stuff that they didn't close */
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
643 while (frames->enclosing) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
644 curr = frames;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
645 g_string_append(frames->enclosing->text, frames->text->str);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
646 g_string_append(frames->enclosing->text, frames->closing);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
647 g_string_free(frames->text, TRUE);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
648 frames = frames->enclosing;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
649 g_free(curr);
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 ret = frames->text->str;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
652 g_string_free(frames->text, FALSE);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
653 g_free(frames);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
654 return ret;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
655 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
656
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
657 static gboolean pending_zloc(zephyr_account *zephyr,char *who)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
658 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
659 GList *curr;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
660
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
661 for (curr = zephyr->pending_zloc_names; curr != NULL; curr = curr->next) {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
662 char* normalized_who = local_zephyr_normalize(zephyr,who);
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
663 if (!g_ascii_strcasecmp(normalized_who, (char *)curr->data)) {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
664 g_free((char *)curr->data);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
665 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
666 return TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
667 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
668 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
669 return FALSE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
670 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
671
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
672 /* 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
673
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
674 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
675 {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
676 if (g_ascii_strcasecmp(notice.z_class, "message")) {
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
677 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
678 gaim_notify_error(gc,"",chat_failed,NULL);
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
679 g_free(chat_failed);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
680 } else {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
681 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
682 }
8559
1c20aa5bd389 [gaim-migrate @ 9303]
Luke Schierer <lschiere@pidgin.im>
parents: 8451
diff changeset
683 }
1c20aa5bd389 [gaim-migrate @ 9303]
Luke Schierer <lschiere@pidgin.im>
parents: 8451
diff changeset
684
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
685 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
686 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
687 zephyr_account* zephyr = gc->proto_data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
688
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
689 if (!g_ascii_strcasecmp(notice.z_class, LOGIN_CLASS)) {
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
690 /* 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
691 } else if (!g_ascii_strcasecmp(notice.z_class, LOCATE_CLASS)) {
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
692 if (!g_ascii_strcasecmp(notice.z_opcode, LOCATE_LOCATE)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
693 int nlocs;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
694 char *user;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
695 GaimBuddy *b;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
696 /* XXX add real error reporting */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
697 if (ZParseLocations(&notice, NULL, &nlocs, &user) != ZERR_NONE)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
698 return;
8435
6bd8bc8f07bb [gaim-migrate @ 9165]
Luke Schierer <lschiere@pidgin.im>
parents: 8386
diff changeset
699
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
700 if ((b = gaim_find_buddy(gc->account, user)) == NULL) {
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
701 char* stripped_user = zephyr_strip_local_realm(zephyr,user);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
702 b = gaim_find_buddy(gc->account,stripped_user);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
703 g_free(stripped_user);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
704 }
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
705 if ((b && pending_zloc(zephyr,b->name)) || pending_zloc(zephyr,user)) {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
706 ZLocations_t locs;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
707 int one = 1;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
708 GString *str = g_string_new("");
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
709
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
710 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
711 if (b && b->alias)
5132
494b6b6a6ffa [gaim-migrate @ 5495]
Mark Doliner <mark@kingant.net>
parents: 4793
diff changeset
712 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
713 if (!nlocs) {
5132
494b6b6a6ffa [gaim-migrate @ 5495]
Mark Doliner <mark@kingant.net>
parents: 4793
diff changeset
714 g_string_append_printf(str, _("<br>Hidden or not logged-in"));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
715 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
716 for (; nlocs > 0; nlocs--) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
717 /* XXX add real error reporting */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
718 ZGetLocations(&locs, &one);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
719 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
720 }
9797
62eb9fe24692 [gaim-migrate @ 10665]
Luke Schierer <lschiere@pidgin.im>
parents: 9775
diff changeset
721 gaim_notify_userinfo(gc, b ? b->name : user, NULL, _("Buddy Information"), NULL,
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
722 str->str, NULL, NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
723 g_string_free(str, TRUE);
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
724 } else {
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
725 if (nlocs>0)
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
726 gaim_prpl_got_user_status(gc->account,b->name,"online",NULL);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
727 else
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
728 gaim_prpl_got_user_status(gc->account,b->name,"offline",NULL);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
729 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
730
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
731 g_free(user);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
732 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
733 } else {
8560
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
734 char *buf, *buf2, *buf3;
2804
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
735 char *send_inst;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
736 GaimConversation *gconv1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
737 GaimConvChat *gcc;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
738 char *ptr = notice.z_message + strlen(notice.z_message) + 1;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
739 int len;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
740 char *sendertmp = g_strdup_printf("%s", zephyr->username);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
741 int signature_length = strlen(notice.z_message);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
742 int message_has_no_body = 0;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7084
diff changeset
743 GaimConvImFlags flags = 0;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
744 gchar *tmpescape;
8560
832fd9b754d0 [gaim-migrate @ 9304]
Luke Schierer <lschiere@pidgin.im>
parents: 8559
diff changeset
745
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
746 /* 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
747 /* One field zephyrs would have caused gaim to crash */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
748 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
749 message_has_no_body = 1;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
750 len = 0;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
751 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
752 buf3 = g_strdup("");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
753
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
754 } else {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
755 len = notice.z_message_len - ( signature_length +1);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
756 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
757 buf = g_malloc(len + 1);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
758 g_snprintf(buf, len + 1, "%s", ptr);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
759 g_strchomp(buf);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
760 tmpescape = gaim_escape_html(buf);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
761 g_free(buf);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
762 buf2 = zephyr_to_html(tmpescape);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
763 buf3 = zephyr_recv_convert(gc,buf2, strlen(buf2));
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
764 g_free(buf2);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
765 g_free(tmpescape);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
766 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
767
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
768 if (!g_ascii_strcasecmp(notice.z_class, "MESSAGE") && !g_ascii_strcasecmp(notice.z_class_inst, "PERSONAL")
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
769 && !g_ascii_strcasecmp(notice.z_recipient,zephyr->username)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
770 gchar* stripped_sender;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
771 if (!g_ascii_strcasecmp(notice.z_message, "Automated reply:"))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
772 flags |= GAIM_CONV_IM_AUTO_RESP;
9912
f6a1054e2bdc [gaim-migrate @ 10804]
Luke Schierer <lschiere@pidgin.im>
parents: 9911
diff changeset
773 stripped_sender = zephyr_strip_local_realm(zephyr,notice.z_sender);
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
774
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
775 if (!g_ascii_strcasecmp(notice.z_opcode,"PING"))
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
776 serv_got_typing(gc,stripped_sender,ZEPHYR_TYPING_RECV_TIMEOUT, GAIM_TYPING);
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
777 else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
778 /* Based on the values of
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
779 account->permit_deny,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
780 account->permit, account>deny , and
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
781 the buddylist */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
782
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
783 GSList* l;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
784 gboolean in_deny;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
785
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
786 switch (gc->account->perm_deny) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
787 case GAIM_PRIVACY_ALLOW_ALL:
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
788 in_deny = 0; break;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
789 case GAIM_PRIVACY_DENY_ALL:
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
790 in_deny = 1; break;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
791 case GAIM_PRIVACY_ALLOW_USERS: /* See if stripped_sender is in gc->account->permit and allow appropriately */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
792 in_deny = 1;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
793 for(l=gc->account->permit;l!=NULL;l=l->next) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
794 if (!gaim_utf8_strcasecmp(stripped_sender, gaim_normalize(gc->account, (char *)l->data))) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
795 in_deny=0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
796 break;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
797 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
798 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
799 break;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
800 case GAIM_PRIVACY_DENY_USERS: /* See if stripped_sender is in gc->account->deny and deny if so */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
801 in_deny = 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
802 for(l=gc->account->deny;l!=NULL;l=l->next) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
803 if (!gaim_utf8_strcasecmp(stripped_sender, gaim_normalize(gc->account, (char *)l->data))) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
804 in_deny=1;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
805 break;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
806 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
807 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
808 break;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
809 case GAIM_PRIVACY_ALLOW_BUDDYLIST:
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
810 in_deny = 1;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
811 if (gaim_find_buddy(gc->account,stripped_sender)!=NULL) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
812 in_deny = 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
813 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
814 break;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
815 default:
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
816 in_deny=0; break;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
817 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
818
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
819 if (!in_deny) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
820 serv_got_im(gc, stripped_sender, buf3, flags, time(NULL));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
821 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
822 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
823
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
824 g_free(stripped_sender);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
825 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
826 zephyr_triple *zt1, *zt2;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
827 gchar *send_inst_utf8;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
828 zephyr_account *zephyr = gc->proto_data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
829 zt1 = new_triple(gc->proto_data,notice.z_class, notice.z_class_inst, notice.z_recipient);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
830 zt2 = find_sub_by_triple(gc->proto_data,zt1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
831 if (!zt2) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
832 /* This is a server supplied subscription */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
833 zephyr->subscrips = g_slist_append(zephyr->subscrips, new_triple(zephyr,zt1->class,zt1->instance,zt1->recipient));
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
834 zt2 = find_sub_by_triple(gc->proto_data,zt1);
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
835 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
836
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
837 if (!zt2->open) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
838 zt2->open = TRUE;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
839 serv_got_joined_chat(gc, zt2->id, zt2->name);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
840 zephyr_chat_set_topic(gc,zt2->id,notice.z_class_inst);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
841 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
842 g_free(sendertmp); /* fix memory leak? */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
843 /* If the person is in the default Realm, then strip the
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
844 Realm from the sender field */
9912
f6a1054e2bdc [gaim-migrate @ 10804]
Luke Schierer <lschiere@pidgin.im>
parents: 9911
diff changeset
845 sendertmp = zephyr_strip_local_realm(zephyr,notice.z_sender);
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
846 send_inst = g_strdup_printf("%s %s",sendertmp,notice.z_class_inst);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
847 send_inst_utf8 = zephyr_recv_convert(gc,send_inst, strlen(send_inst));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
848 if (!send_inst_utf8) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
849 gaim_debug(GAIM_DEBUG_ERROR, "zephyr","send_inst %s became null\n", send_inst);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
850 send_inst_utf8 = "malformed instance";
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
851 }
9912
f6a1054e2bdc [gaim-migrate @ 10804]
Luke Schierer <lschiere@pidgin.im>
parents: 9911
diff changeset
852
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
853 serv_got_chat_in(gc, zt2->id, send_inst_utf8, 0, buf3, time(NULL));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
854 g_free(send_inst);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
855 gconv1 = gaim_find_conversation_with_account(zt2->name, gc->account);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
856 gcc = gaim_conversation_get_chat_data(gconv1);
9912
f6a1054e2bdc [gaim-migrate @ 10804]
Luke Schierer <lschiere@pidgin.im>
parents: 9911
diff changeset
857
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
858 if (!gaim_conv_chat_find_user(gcc, sendertmp)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
859 /* force interpretation in network byte order */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
860 unsigned char *addrs = (unsigned char *)&(notice.z_sender_addr.s_addr);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
861 gchar* ipaddr = g_strdup_printf("%hhd.%hhd.%hhd.%hhd", (unsigned char)addrs[0],
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
862 (unsigned char)addrs[1], (unsigned char)addrs[2],
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
863 (unsigned char) addrs[3]);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
864
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
865 gaim_conv_chat_add_user(gcc, sendertmp, ipaddr, GAIM_CBFLAGS_NONE, TRUE);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
866 g_free(ipaddr); /* fix memory leak? */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
867
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
868 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
869 g_free(sendertmp);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
870 g_free(send_inst_utf8);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
871
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
872 free_triple(zt1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
873 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
874 g_free(buf3);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
875
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
876 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
877 }
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
878 int free_parse_tree(parse_tree* tree) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
879 if (!tree) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
880 return 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
881 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
882 else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
883 int i;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
884 if (tree->children) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
885 for(i=0;i<tree->num_children;i++){
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
886 if (tree->children[i]) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
887 free_parse_tree(tree->children[i]);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
888 g_free(tree->children[i]);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
889 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
890 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
891 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
892 if ((tree != &null_parse_tree) && (tree->contents != NULL))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
893 g_free(tree->contents);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
894
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
895 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
896 return 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
897 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
898
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
899 parse_tree *tree_child(parse_tree* tree,int index) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
900 if (index < tree->num_children) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
901 return tree->children[index];
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
902 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
903 return &null_parse_tree;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
904 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
905 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
906
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
907 parse_tree *find_node(parse_tree* ptree,gchar* key)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
908 {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
909 gchar* tc = tree_child(ptree,0)->contents;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
910
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
911 if (!ptree || ! key)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
912 return &null_parse_tree;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
913
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
914 if (ptree->num_children > 0 && tc && !strcasecmp(tc, key)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
915 return ptree;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
916 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
917 parse_tree *result = &null_parse_tree;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
918 int i;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
919 for(i = 0; i < ptree->num_children; i++) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
920 result = find_node(ptree->children[i],key);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
921 if(result != &null_parse_tree) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
922 break;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
923 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
924 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
925 return result;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
926 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
927 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
928
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
929 parse_tree *parse_buffer(gchar* source, gboolean do_parse) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
930
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
931 parse_tree *ptree = g_new0(parse_tree,1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
932 ptree->contents = NULL;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
933 ptree->num_children=0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
934 if (do_parse) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
935 unsigned int p = 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
936 while(p < strlen(source)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
937 unsigned int end;
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
938 gchar *newstr;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
939
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
940 /* Eat white space: */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
941 if(g_ascii_isspace(source[p]) || source[p] == '\001') {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
942 p++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
943 continue;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
944 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
945
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
946 /* Skip comments */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
947 if(source[p] == ';') {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
948 while(source[p] != '\n' && p < strlen(source)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
949 p++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
950 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
951 continue;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
952 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
953
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
954 if(source[p] == '(') {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
955 int nesting = 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
956 gboolean in_quote = FALSE;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
957 gboolean escape_next = FALSE;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
958 p++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
959 end = p;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
960 while(!(source[end] == ')' && nesting == 0 && !in_quote) && end < strlen(source)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
961 if(!escape_next) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
962 if(source[end] == '\\') {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
963 escape_next = TRUE;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
964 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
965 if(!in_quote) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
966 if(source[end] == '(') {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
967 nesting++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
968 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
969 if(source[end] == ')') {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
970 nesting--;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
971 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
972 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
973 if(source[end] == '"') {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
974 in_quote = !in_quote;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
975 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
976 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
977 escape_next = FALSE;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
978 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
979 end++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
980 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
981 do_parse = TRUE;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
982
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
983 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
984 gchar end_char;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
985 if(source[p] == '"') {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
986 end_char = '"';
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
987 p++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
988 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
989 end_char = ' ';
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
990 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
991 do_parse = FALSE;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
992
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
993 end = p;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
994 while(source[end] != end_char && end < strlen(source)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
995 if(source[end] == '\\')
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
996 end++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
997 end++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
998 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
999 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1000 newstr = g_new0(gchar, end+1-p);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1001 strncpy(newstr,source+p,end-p);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1002 if (ptree->num_children < MAXCHILDREN) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1003 /* In case we surpass maxchildren, ignore this */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1004 ptree->children[ptree->num_children++] = parse_buffer( newstr, do_parse);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1005 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1006 gaim_debug_error("zephyr","too many children in tzc output. skipping\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1007 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1008 g_free(newstr);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1009 p = end + 1;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1010 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1011 return ptree;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1012 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1013 /* XXX does this have to be strdup'd */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1014 ptree->contents = g_strdup(source);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1015 return ptree;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1016 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1017 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1018
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1019 parse_tree *read_from_tzc(zephyr_account* zephyr){
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1020 struct timeval tv;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1021 fd_set rfds;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1022 int bufsize = 2048;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1023 char *buf = (char *)calloc(bufsize, 1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1024 char *bufcur = buf;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1025 int selected = 0;
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1026 parse_tree *incoming_msg;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1027
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1028 FD_ZERO(&rfds);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1029 FD_SET(zephyr->fromtzc[ZEPHYR_FD_READ], &rfds);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1030 tv.tv_sec = 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1031 tv.tv_usec = 0;
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1032 incoming_msg=NULL;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1033
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1034 while (select(zephyr->fromtzc[ZEPHYR_FD_READ] + 1, &rfds, NULL, NULL, &tv)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1035 selected = 1;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1036 read(zephyr->fromtzc[ZEPHYR_FD_READ], bufcur, 1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1037 bufcur++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1038 if ((bufcur - buf) > (bufsize - 1)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1039 if ((buf = realloc(buf, bufsize * 2)) == NULL) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1040 gaim_debug_error("zephyr","Ran out of memory");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1041 exit(-1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1042 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1043 bufcur = buf + bufsize;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1044 bufsize *= 2;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1045 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1046 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1047 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1048 *bufcur = '\0';
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1049
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1050 if (selected) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1051 incoming_msg = parse_buffer(buf,TRUE);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1052 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1053 free(buf);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1054 return incoming_msg;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1055 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1056
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1057 static gint check_notify_tzc(gpointer data)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1058 {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1059 GaimConnection *gc = (GaimConnection *)data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1060 zephyr_account* zephyr = gc->proto_data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1061 parse_tree *newparsetree = read_from_tzc(zephyr);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1062 struct sockaddr_in from;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1063 if (newparsetree != NULL) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1064 gchar *spewtype;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1065 if ( (spewtype = tree_child(find_node(newparsetree,"tzcspew"),2)->contents) ) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1066 if (!g_ascii_strncasecmp(spewtype,"message",7)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1067 ZNotice_t notice;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1068 parse_tree *msgnode = tree_child(find_node(newparsetree,"message"),2);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1069 parse_tree *bodynode = tree_child(msgnode,1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1070 /* char *zsig = g_strdup(" "); */ /* gaim doesn't care about zsigs */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1071 char *msg = zephyr_tzc_deescape_str(bodynode->contents);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1072 size_t bufsize = strlen(msg) + 3;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1073 char *buf = g_new0(char,bufsize);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1074 g_snprintf(buf,1+strlen(msg)+2," %c%s",'\0',msg);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1075 bzero((char *)&notice, sizeof(notice));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1076 notice.z_kind = ACKED;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1077 notice.z_port = 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1078 notice.z_opcode = tree_child(find_node(newparsetree,"opcode"),2)->contents;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1079 notice.z_class = zephyr_tzc_deescape_str(tree_child(find_node(newparsetree,"class"),2)->contents);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1080 notice.z_class_inst = tree_child(find_node(newparsetree,"instance"),2)->contents;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1081 notice.z_recipient = local_zephyr_normalize(zephyr,tree_child(find_node(newparsetree,"recipient"),2)->contents);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1082 notice.z_sender = local_zephyr_normalize(zephyr,tree_child(find_node(newparsetree,"sender"),2)->contents);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1083 notice.z_default_format = "Class $class, Instance $instance:\n" "To: @bold($recipient) at $time $date\n" "From: @bold($1) <$sender>\n\n$2";
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1084 notice.z_message_len = strlen(msg) + 3;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1085 notice.z_message = buf;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1086 handle_message(gc,notice,from);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1087 g_free(msg);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1088 /* g_free(zsig); */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1089 g_free(buf);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1090 /* free_parse_tree(msgnode);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1091 free_parse_tree(bodynode);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1092 g_free(msg);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1093 g_free(zsig);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1094 g_free(buf);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1095 */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1096 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1097 else if (!g_ascii_strncasecmp(spewtype,"zlocation",9)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1098 /* check_loc or zephyr_zloc respectively */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1099 /* XXX fix */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1100 char *user;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1101 GaimBuddy *b;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1102 int nlocs = 0;
9912
f6a1054e2bdc [gaim-migrate @ 10804]
Luke Schierer <lschiere@pidgin.im>
parents: 9911
diff changeset
1103 parse_tree *locations;
f6a1054e2bdc [gaim-migrate @ 10804]
Luke Schierer <lschiere@pidgin.im>
parents: 9911
diff changeset
1104 gchar *locval;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1105 user = tree_child(find_node(newparsetree,"user"),2)->contents;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1106
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1107 if ((b = gaim_find_buddy(gc->account, user)) == NULL) {
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1108 gchar *stripped_user = zephyr_strip_local_realm(zephyr,user);
9912
f6a1054e2bdc [gaim-migrate @ 10804]
Luke Schierer <lschiere@pidgin.im>
parents: 9911
diff changeset
1109 b = gaim_find_buddy(gc->account, stripped_user);
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1110 g_free(stripped_user);
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1111 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1112 locations = find_node(newparsetree,"locations");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1113 locval = tree_child(tree_child(tree_child(tree_child(locations,2),0),0),2)->contents;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1114
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1115 if (!locval || !g_ascii_strcasecmp(locval," ") || (strlen(locval) == 0)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1116 nlocs = 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1117 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1118 nlocs = 1;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1119 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1120
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1121 if ((b && pending_zloc(zephyr,b->name)) || pending_zloc(zephyr,user) || pending_zloc(zephyr,local_zephyr_normalize(zephyr,user))){
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1122 GString *str = g_string_new("");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1123
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1124 g_string_append_printf(str, _("<b>User:</b> %s<br>"), b ? b->name : user);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1125 if (b && b->alias)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1126 g_string_append_printf(str, _("<b>Alias:</b> %s<br>"), b->alias);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1127
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1128 if (!nlocs) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1129 g_string_append_printf(str, _("<br>Hidden or not logged-in"));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1130 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1131 g_string_append_printf(str, _("<br>At %s since %s"),
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1132 tree_child(tree_child(tree_child(tree_child(locations,2),0),0),2)->contents,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1133 tree_child(tree_child(tree_child(tree_child(locations,2),0),2),2)->contents);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1134 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1135
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1136 gaim_notify_userinfo(gc, b ? b->name : user, NULL, _("Buddy Information"), NULL,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1137 str->str, NULL, NULL);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1138 g_string_free(str, TRUE);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1139 } else {
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1140 if (nlocs>0)
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1141 gaim_prpl_got_user_status(gc->account,b->name,"online",NULL);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1142 else
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1143 gaim_prpl_got_user_status(gc->account,b->name,"offline",NULL);
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1144 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1145 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1146 else if (!g_ascii_strncasecmp(spewtype,"subscribed",10)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1147 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1148 else if (!g_ascii_strncasecmp(spewtype,"start",5)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1149 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1150 else if (!g_ascii_strncasecmp(spewtype,"error",5)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1151 /* XXX handle */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1152 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1153 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1154 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1155 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1156 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1157
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1158 free_parse_tree(newparsetree);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1159 return TRUE;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1160 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1161
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1162 static gint check_notify_zeph02(gpointer data)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1163 {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1164 /* XXX add real error reporting */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1165 GaimConnection *gc = (GaimConnection*) data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1166 while (ZPending()) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1167 ZNotice_t notice;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1168 struct sockaddr_in from;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1169 /* XXX add real error reporting */
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1170
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1171 z_call_r(ZReceiveNotice(&notice, &from));
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1172
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1173 switch (notice.z_kind) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1174 case UNSAFE:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1175 case UNACKED:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1176 case ACKED:
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1177 handle_message(gc,notice, from);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1178 break;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1179 case SERVACK:
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1180 if (!(g_ascii_strcasecmp(notice.z_message, ZSRVACK_NOTSENT))) {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1181 message_failed(gc,notice, from);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1182 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1183 break;
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1184 case CLIENTACK:
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1185 gaim_debug_error("zephyr", "Client ack received\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1186 default:
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1187 /* we'll just ignore things for now */
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
1188 handle_unknown(notice);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1189 gaim_debug_error("zephyr", "Unhandled notice.\n");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1190 break;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1191 }
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1192 /* XXX add real error reporting */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1193 ZFreeNotice(&notice);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1194 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1195
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1196 return TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1197 }
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 static gint check_loc(gpointer data)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1200 {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1201 GaimBlistNode *gnode, *cnode, *bnode;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1202 ZAsyncLocateData_t ald;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1203 GaimConnection *gc = (GaimConnection *)data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1204 zephyr_account *zephyr = gc->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1205
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1206 if (use_zeph02(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1207 ald.user = NULL;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1208 memset(&(ald.uid), 0, sizeof(ZUnique_Id_t));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1209 ald.version = NULL;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1210 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1211
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1212 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1213 if (!GAIM_BLIST_NODE_IS_GROUP(gnode))
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
1214 continue;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1215 for (cnode = gnode->child; cnode; cnode = cnode->next) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1216 if (!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
1217 continue;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1218 for (bnode = cnode->child; bnode; bnode = bnode->next) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1219 GaimBuddy *b = (GaimBuddy *) bnode;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1220
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1221 if (!GAIM_BLIST_NODE_IS_BUDDY(bnode))
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1222 continue;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1223 if (b->account->gc == gc) {
7261
1930e3d00ecd [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7126
diff changeset
1224 const char *chk;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1225
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1226 chk = local_zephyr_normalize(zephyr,b->name);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1227 gaim_debug_info("zephyr","chk: %s b->name %s\n",chk,b->name);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1228 /* XXX add real error reporting */
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1229 /* doesn't matter if this fails or not; we'll just move on to the next one */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1230 if (use_zeph02(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1231 #ifdef WIN32
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1232 int numlocs;
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1233 int one=1;
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1234 ZLocateUser(chk,&numlocs,ZAUTH);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1235 if (numlocs) {
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1236 int i;
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1237 for(i=0;i<numlocs;i++) {
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1238 ZGetLocations(&locations,&one);
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1239 if (nlocs>0)
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1240 gaim_prpl_got_user_status(gc->account,b->name,"online",NULL);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1241 else
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1242 gaim_prpl_got_user_status(gc->account,b->name,"offline",NULL);
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1243 }
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1244 }
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1245 #else
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1246 ZRequestLocations(chk, &ald, UNACKED, ZAUTH);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1247 g_free(ald.user);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1248 g_free(ald.version);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1249 #endif /* WIN32 */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1250 } else
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1251 if (use_tzc(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1252 gchar *zlocstr = g_strdup_printf("((tzcfodder . zlocate) \"%s\")\n",chk);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1253 write(zephyr->totzc[ZEPHYR_FD_WRITE],zlocstr,strlen(zlocstr));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1254 g_free(zlocstr);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1255 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1256 }
4349
0c68d402f59f [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4227
diff changeset
1257 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1258 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1259 }
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1260
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1261 return TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1262 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1263
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1264 static char *get_exposure_level()
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1265 {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1266 /* XXX add real error reporting */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1267 char *exposure = ZGetVariable("exposure");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1268
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1269 if (!exposure)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1270 return EXPOSE_REALMVIS;
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1271 if (!g_ascii_strcasecmp(exposure, EXPOSE_NONE))
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1272 return EXPOSE_NONE;
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1273 if (!g_ascii_strcasecmp(exposure, EXPOSE_OPSTAFF))
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1274 return EXPOSE_OPSTAFF;
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1275 if (!g_ascii_strcasecmp(exposure, EXPOSE_REALMANN))
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1276 return EXPOSE_REALMANN;
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1277 if (!g_ascii_strcasecmp(exposure, EXPOSE_NETVIS))
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1278 return EXPOSE_NETVIS;
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1279 if (!g_ascii_strcasecmp(exposure, EXPOSE_NETANN))
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1280 return EXPOSE_NETANN;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1281 return EXPOSE_REALMVIS;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1282 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1283
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1284 static void strip_comments(char *str)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1285 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1286 char *tmp = strchr(str, '#');
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1287
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1288 if (tmp)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1289 *tmp = '\0';
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1290 g_strchug(str);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1291 g_strchomp(str);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1292 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1293
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1294 static void zephyr_inithosts(zephyr_account *zephyr)
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1295 {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1296 /* XXX This code may not be Win32 clean */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1297 struct hostent *hent;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1298
9802
acf175d9f79b [gaim-migrate @ 10670]
Mark Doliner <mark@kingant.net>
parents: 9797
diff changeset
1299 if (gethostname(zephyr->ourhost, sizeof(zephyr->ourhost)) == -1) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1300 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");
9802
acf175d9f79b [gaim-migrate @ 10670]
Mark Doliner <mark@kingant.net>
parents: 9797
diff changeset
1301 g_strlcpy(zephyr->ourhost, "unknown", sizeof(zephyr->ourhost));
9803
4d9d4940454b [gaim-migrate @ 10671]
Mark Doliner <mark@kingant.net>
parents: 9802
diff changeset
1302 g_strlcpy(zephyr->ourhostcanon, "unknown", sizeof(zephyr->ourhostcanon));
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1303 return;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1304 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1305
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1306 if (!(hent = gethostbyname(zephyr->ourhost))) {
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1307 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);
9803
4d9d4940454b [gaim-migrate @ 10671]
Mark Doliner <mark@kingant.net>
parents: 9802
diff changeset
1308 g_strlcpy(zephyr->ourhostcanon, zephyr->ourhost, sizeof(zephyr->ourhostcanon));
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1309 return;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1310 }
9802
acf175d9f79b [gaim-migrate @ 10670]
Mark Doliner <mark@kingant.net>
parents: 9797
diff changeset
1311
acf175d9f79b [gaim-migrate @ 10670]
Mark Doliner <mark@kingant.net>
parents: 9797
diff changeset
1312 g_strlcpy(zephyr->ourhostcanon, hent->h_name, sizeof(zephyr->ourhostcanon));
acf175d9f79b [gaim-migrate @ 10670]
Mark Doliner <mark@kingant.net>
parents: 9797
diff changeset
1313
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1314 return;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1315 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1316
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1317 static void process_zsubs(zephyr_account *zephyr)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1318 {
9802
acf175d9f79b [gaim-migrate @ 10670]
Mark Doliner <mark@kingant.net>
parents: 9797
diff changeset
1319 /* Loads zephyr chats "(subscriptions) from ~/.zephyr.subs, and
acf175d9f79b [gaim-migrate @ 10670]
Mark Doliner <mark@kingant.net>
parents: 9797
diff changeset
1320 registers (subscribes to) them on the server */
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1321
9802
acf175d9f79b [gaim-migrate @ 10670]
Mark Doliner <mark@kingant.net>
parents: 9797
diff changeset
1322 /* XXX deal with unsubscriptions */
acf175d9f79b [gaim-migrate @ 10670]
Mark Doliner <mark@kingant.net>
parents: 9797
diff changeset
1323 /* XXX deal with punts */
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1324
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1325 FILE *f;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1326 gchar *fname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1327 gchar buff[BUFSIZ];
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1328
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
1329 fname = g_strdup_printf("%s/.zephyr.subs", gaim_home_dir());
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1330 f = fopen(fname, "r");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1331 if (f) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1332 char **triple;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1333 char *recip;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1334 char *z_class;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1335 char *z_instance;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1336 char *z_galaxy = NULL;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1337
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1338 while (fgets(buff, BUFSIZ, f)) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1339 strip_comments(buff);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1340 if (buff[0]) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1341 triple = g_strsplit(buff, ",", 3);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1342 if (triple[0] && triple[1]) {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1343 char *tmp = g_strdup_printf("%s", zephyr->username);
2804
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1344 char *atptr;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1345
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1346 z_class = triple[0];
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1347 z_instance = triple[1];
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1348 if (triple[2] == NULL) {
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
1349 recip = g_malloc0(1);
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1350 } else if (!g_ascii_strcasecmp(triple[2], "%me%")) {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1351 recip = g_strdup_printf("%s", zephyr->username);
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1352 } else if (!g_ascii_strcasecmp(triple[2], "*")) {
2804
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1353 /* wildcard
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1354 * form of class,instance,* */
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1355 recip = g_malloc0(1);
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1356 } else if (!g_ascii_strcasecmp(triple[2], tmp)) {
2804
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1357 /* form of class,instance,aatharuv@ATHENA.MIT.EDU */
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1358 recip = g_strdup(triple[2]);
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1359 } else if ((atptr = strchr(triple[2], '@')) != NULL) {
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1360 /* form of class,instance,*@ANDREW.CMU.EDU
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1361 * class,instance,@ANDREW.CMU.EDU
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1362 * If realm is local realm, blank recipient, else
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1363 * @REALM-NAME
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1364 */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1365 char *realmat = g_strdup_printf("@%s",zephyr->realm);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1366
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1367 if (!g_ascii_strcasecmp(atptr, realmat))
2804
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1368 recip = g_malloc0(1);
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1369 else
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1370 recip = g_strdup(atptr);
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1371 g_free(realmat);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1372 } else {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1373 recip = g_strdup(triple[2]);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1374 }
2804
1648c703ddc2 [gaim-migrate @ 2817]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2791
diff changeset
1375 g_free(tmp);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1376
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1377 if (!g_ascii_strcasecmp(triple[0],"%host%")) {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1378 z_class = g_strdup(zephyr->ourhost);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1379 } else if (!g_ascii_strcasecmp(triple[0],"%canon%")) {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1380 z_class = g_strdup(zephyr->ourhostcanon);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1381 } else {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1382 z_class = g_strdup(triple[0]);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1383 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1384
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1385 if (!g_ascii_strcasecmp(triple[1],"%host%")) {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1386 z_instance = g_strdup(zephyr->ourhost);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1387 } else if (!g_ascii_strcasecmp(triple[1],"%canon%")) {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1388 z_instance = g_strdup(zephyr->ourhostcanon);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1389 } else {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1390 z_instance = g_strdup(triple[1]);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1391 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1392
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1393 /* 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
1394 Not important right now though */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1395
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1396 if (zephyr_subscribe_to(zephyr,z_class, z_instance, recip,z_galaxy) != ZERR_NONE) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1397
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1398 gaim_debug(GAIM_DEBUG_ERROR, "zephyr", "Couldn't subscribe to %s, %s, %s\n", z_class,z_instance,recip);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1399 }
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1400
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1401 zephyr->subscrips = g_slist_append(zephyr->subscrips, new_triple(zephyr,z_class,z_instance,recip));
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1402 /* g_hash_table_destroy(sub_hash_table); */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1403 g_free(z_instance);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1404 g_free(z_class);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1405 g_free(recip);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1406 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1407 g_strfreev(triple);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1408 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1409 }
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 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1412
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1413 static void process_anyone(GaimConnection *gc)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1414 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1415 FILE *fd;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1416 gchar buff[BUFSIZ], *filename;
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1417 GaimGroup *g;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1418 GaimBuddy *b;
4775
92ae181271e9 [gaim-migrate @ 5095]
Mark Doliner <mark@kingant.net>
parents: 4770
diff changeset
1419
92ae181271e9 [gaim-migrate @ 5095]
Mark Doliner <mark@kingant.net>
parents: 4770
diff changeset
1420 if (!(g = gaim_find_group(_("Anyone")))) {
92ae181271e9 [gaim-migrate @ 5095]
Mark Doliner <mark@kingant.net>
parents: 4770
diff changeset
1421 g = gaim_group_new(_("Anyone"));
92ae181271e9 [gaim-migrate @ 5095]
Mark Doliner <mark@kingant.net>
parents: 4770
diff changeset
1422 gaim_blist_add_group(g, NULL);
92ae181271e9 [gaim-migrate @ 5095]
Mark Doliner <mark@kingant.net>
parents: 4770
diff changeset
1423 }
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1424
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
1425 filename = g_strconcat(gaim_home_dir(), "/.anyone", NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1426 if ((fd = fopen(filename, "r")) != NULL) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1427 while (fgets(buff, BUFSIZ, fd)) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1428 strip_comments(buff);
4687
283fb289c510 [gaim-migrate @ 4998]
Sean Egan <seanegan@gmail.com>
parents: 4682
diff changeset
1429 if (buff[0]) {
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1430 if (!(b = gaim_find_buddy(gc->account, buff))) {
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1431 char *stripped_user = zephyr_strip_local_realm(gc->proto_data,buff);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1432 gaim_debug_info("zephyr","stripped_user %s\n",stripped_user);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1433 if (!(b = gaim_find_buddy(gc->account,stripped_user))){
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1434 b = gaim_buddy_new(gc->account, stripped_user, NULL);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1435 gaim_blist_add_buddy(b, NULL, g, NULL);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1436 }
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1437 g_free(stripped_user);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1438 }
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1439 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1440 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1441 fclose(fd);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1442 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1443 g_free(filename);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1444 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1445
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1446 static char* normalize_zephyr_exposure(const char* exposure) {
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1447 char *exp2 = g_strstrip(g_ascii_strup(exposure,-1));
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1448
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1449 if (!exp2)
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1450 return EXPOSE_REALMVIS;
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1451 if (!g_ascii_strcasecmp(exp2, EXPOSE_NONE))
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1452 return EXPOSE_NONE;
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1453 if (!g_ascii_strcasecmp(exp2, EXPOSE_OPSTAFF))
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1454 return EXPOSE_OPSTAFF;
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1455 if (!g_ascii_strcasecmp(exp2, EXPOSE_REALMANN))
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1456 return EXPOSE_REALMANN;
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1457 if (!g_ascii_strcasecmp(exp2, EXPOSE_NETVIS))
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1458 return EXPOSE_NETVIS;
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1459 if (!g_ascii_strcasecmp(exp2, EXPOSE_NETANN))
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1460 return EXPOSE_NETANN;
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1461 return EXPOSE_REALMVIS;
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1462 }
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1463
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1464 static void zephyr_login(GaimAccount * account)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1465 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1466 GaimConnection *gc;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1467 zephyr_account *zephyr;
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1468 gboolean read_anyone;
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1469 gboolean read_zsubs;
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1470 gchar *exposure;
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1471
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1472 gc = gaim_account_get_connection(account);
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1473 read_anyone = gaim_account_get_bool(gc->account,"read_anyone",TRUE);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1474 read_zsubs = gaim_account_get_bool(gc->account,"read_zsubs",TRUE);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1475 exposure = (gchar *)gaim_account_get_string(gc->account, "exposure_level", EXPOSE_REALMVIS);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1476
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1477 gc->flags |= GAIM_CONNECTION_HTML | GAIM_CONNECTION_NO_BGCOLOR | GAIM_CONNECTION_NO_URLDESC;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1478 gc->proto_data = zephyr=g_new0(zephyr_account,1);
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1479
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1480 zephyr->account = account;
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1481
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1482 /* Make sure that the exposure (visibility) is set to a sane value */
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1483 zephyr->exposure=g_strdup(normalize_zephyr_exposure(exposure));
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1484
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1485 if (gaim_account_get_bool(gc->account,"use_tzc",0)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1486 zephyr->connection_type = GAIM_ZEPHYR_TZC;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1487 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1488 zephyr->connection_type = GAIM_ZEPHYR_KRB4;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1489 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1490
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1491 zephyr->encoding = (char *)gaim_account_get_string(gc->account, "encoding", ZEPHYR_FALLBACK_CHARSET);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1492 gaim_connection_update_progress(gc, _("Connecting"), 0, 8);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1493
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1494 /* XXX z_call_s should actually try to report the com_err determined error */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1495 if (use_tzc(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1496 pid_t pid;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1497 /* gaim_connection_error(gc,"tzc not supported yet"); */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1498 if ((pipe(zephyr->totzc) != 0) || (pipe(zephyr->fromtzc) != 0)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1499 gaim_debug_error("zephyr", "pipe creation failed. killing\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1500 exit(-1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1501 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1502
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1503 pid = fork();
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1504
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1505 if (pid == -1) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1506 gaim_debug_error("zephyr", "forking failed\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1507 exit(-1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1508 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1509 if (pid == 0) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1510 unsigned int i=0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1511 gboolean found_ps = FALSE;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1512 gchar ** tzc_cmd_array = g_strsplit(gaim_account_get_string(gc->account,"tzc_command","/usr/bin/tzc -e %s")," ",0);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1513 if (close(1) == -1) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1514 gaim_debug_error("zephyr", "stdout couldn't be closed. dying\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1515 exit(-1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1516 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1517 if (dup2(zephyr->fromtzc[1], 1) == -1) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1518 gaim_debug_error("zephyr", "dup2 of stdout failed \n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1519 exit(-1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1520 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1521 if (close(zephyr->fromtzc[1]) == -1) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1522 gaim_debug_error("zephyr", "closing of piped stdout failed\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1523 exit(-1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1524 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1525 if (close(0) == -1) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1526 gaim_debug_error("zephyr", "stdin couldn't be closed. dying\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1527 exit(-1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1528 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1529 if (dup2(zephyr->totzc[0], 0) == -1) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1530 gaim_debug_error("zephyr", "dup2 of stdin failed \n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1531 exit(-1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1532 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1533 if (close(zephyr->totzc[0]) == -1) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1534 gaim_debug_error("zephyr", "closing of piped stdin failed\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1535 exit(-1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1536 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1537 /* tzc_command should really be of the form
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1538 path/to/tzc -e %s
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1539 or
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1540 ssh username@hostname pathtotzc -e %s
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1541 -- this should not require a password, and ideally should be kerberized ssh --
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1542 or
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1543 fsh username@hostname pathtotzc -e %s
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1544 */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1545 while(tzc_cmd_array[i] != NULL){
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1546 if (!g_strncasecmp(tzc_cmd_array[i],"%s",2)) {
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1547 /* fprintf(stderr,"replacing %%s with %s\n",zephyr->exposure); */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1548 tzc_cmd_array[i] = g_strdup(zephyr->exposure);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1549 found_ps = TRUE;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1550
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1551 } else {
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1552 /* fprintf(stderr,"keeping %s\n",tzc_cmd_array[i]); */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1553 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1554 i++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1555 }
8645
47f647dd2ac3 [gaim-migrate @ 9397]
Mark Doliner <mark@kingant.net>
parents: 8644
diff changeset
1556
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1557 if (!found_ps) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1558 gaim_connection_error(gc,"Tzc command needs %s to set the exposure\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1559 return;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1560 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1561
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1562 execvp(tzc_cmd_array[0], tzc_cmd_array);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1563 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1564 else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1565 fd_set rfds;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1566 int bufsize = 2048;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1567 char *buf = (char *)calloc(bufsize, 1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1568 char *bufcur = buf;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1569 struct timeval tv;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1570 char *ptr;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1571 int parenlevel=0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1572 char* tempstr;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1573 int tempstridx;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1574
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1575 zephyr->tzc_pid = pid;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1576 /* wait till we have data to read from ssh */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1577 FD_ZERO(&rfds);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1578 FD_SET(zephyr->fromtzc[ZEPHYR_FD_READ], &rfds);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1579
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1580 tv.tv_sec = 10;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1581 tv.tv_usec = 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1582
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1583 gaim_debug_info("zephyr", "about to read from tzc\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1584
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1585 select(zephyr->fromtzc[ZEPHYR_FD_READ] + 1, &rfds, NULL, NULL, NULL);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1586
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1587 FD_ZERO(&rfds);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1588 FD_SET(zephyr->fromtzc[ZEPHYR_FD_READ], &rfds);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1589 while (select(zephyr->fromtzc[ZEPHYR_FD_READ] + 1, &rfds, NULL, NULL, &tv)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1590 read(zephyr->fromtzc[ZEPHYR_FD_READ], bufcur, 1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1591 bufcur++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1592 if ((bufcur - buf) > (bufsize - 1)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1593 if ((buf = realloc(buf, bufsize * 2)) == NULL) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1594 exit(-1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1595 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1596 bufcur = buf + bufsize;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1597 bufsize *= 2;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1598 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1599 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1600 FD_ZERO(&rfds);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1601 FD_SET(zephyr->fromtzc[ZEPHYR_FD_READ], &rfds);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1602 tv.tv_sec = 10;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1603 tv.tv_usec = 0;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1604
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1605 }
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1606 /* fprintf(stderr, "read from tzc\n"); */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1607 *bufcur = '\0';
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1608 ptr = buf;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1609
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1610 /* ignore all tzcoutput till we've received the first (*/
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1611 while (ptr < bufcur && (*ptr !='(')) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1612 ptr++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1613 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1614 if (ptr >=bufcur) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1615 gaim_connection_error(gc,"invalid output by tzc (or bad parsing code)");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1616 return;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1617 }
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
1618
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1619 while(ptr < bufcur) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1620 if (*ptr == '(') {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1621 parenlevel++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1622 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1623 else if (*ptr == ')') {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1624 parenlevel--;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1625 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1626 gaim_debug_info("zephyr","tzc parenlevel is %d\n",parenlevel);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1627 switch (parenlevel) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1628 case 0:
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1629 break;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1630 case 1:
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1631 /* Search for next beginning (, or for the ending */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1632 ptr++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1633 while((*ptr != '(') && (*ptr != ')') && (ptr <bufcur))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1634 ptr++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1635 if (ptr >= bufcur)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1636 gaim_debug_error("zephyr","tzc parsing error\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1637 break;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1638 case 2:
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1639 /* You are probably at
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1640 (foo . bar ) or (foo . "bar") or (foo . chars) or (foo . numbers) or (foo . () )
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1641 Parse all the data between the first and last f, and move past )
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1642 */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1643 tempstr = g_malloc0(20000);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1644 tempstridx=0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1645 while(parenlevel >1) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1646 ptr++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1647 if (*ptr == '(')
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1648 parenlevel++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1649 if (*ptr == ')')
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1650 parenlevel--;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1651 if (parenlevel > 1) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1652 tempstr[tempstridx++]=*ptr;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1653 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1654 ptr++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1655 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1656 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1657 gaim_debug_info("zephyr","tempstr parsed\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1658 /* tempstr should now be a tempstridx length string containing all characters
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1659 from that after the first ( to the one before the last paren ). */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1660 /* We should have the following possible lisp strings but we don't care
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1661 (tzcspew . start) (version . "something") (pid . number)*/
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1662 /* We care about 'zephyrid . "username@REALM.NAME"' and 'exposure . "SOMETHING"' */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1663 tempstridx=0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1664 if (!g_ascii_strncasecmp(tempstr,"zephyrid",8)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1665 gchar* username = g_malloc0(100);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1666 int username_idx=0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1667 char *realm;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1668 gaim_debug_info("zephyr","zephyrid found\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1669 tempstridx+=8;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1670 while(tempstr[tempstridx] !='"' && tempstridx < 20000)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1671 tempstridx++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1672 tempstridx++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1673 while(tempstr[tempstridx] !='"' && tempstridx < 20000)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1674 username[username_idx++]=tempstr[tempstridx++];
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1675
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1676 zephyr->username = g_strdup_printf("%s",username);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1677 if ((realm = strchr(username,'@')))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1678 zephyr->realm = g_strdup_printf("%s",realm+1);
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1679 else {
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1680 realm = (gchar *)gaim_account_get_string(gc->account,"realm","");
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1681 if (!g_strcasecmp(realm,"")) {
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1682 realm = "local-realm";
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1683 }
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1684 zephyr->realm = g_strdup(realm);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1685 g_strlcpy(__Zephyr_realm, (const char*)zephyr->realm, REALM_SZ-1);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1686 }
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1687 /* else {
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1688 zephyr->realm = g_strdup("local-realm");
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1689 }*/
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1690
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1691 g_free(username);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1692 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1693 gaim_debug_info("zephyr", "something that's not zephyr id found %s\n",tempstr);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1694 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1695
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1696 /* We don't care about anything else yet */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1697 g_free(tempstr);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1698 break;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1699 default:
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1700 gaim_debug_info("zephyr","parenlevel is not 1 or 2\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1701 /* This shouldn't be happening */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1702 break;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1703 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1704 if (parenlevel==0)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1705 break;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1706 } /* while (ptr < bufcur) { */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1707 gaim_debug_info("zephyr", "tzc startup done\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1708 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1709 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1710 else if ( use_zeph02(zephyr)) {
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1711 gchar* realm;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1712 z_call_s(ZInitialize(), "Couldn't initialize zephyr");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1713 z_call_s(ZOpenPort(&(zephyr->port)), "Couldn't open port");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1714 z_call_s(ZSetLocation((char *)zephyr->exposure), "Couldn't set location");
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1715
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1716 realm = (gchar *)gaim_account_get_string(gc->account,"realm","");
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1717 if (!g_strcasecmp(realm,"")) {
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1718 realm = ZGetRealm();
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1719 }
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1720 zephyr->realm = g_strdup(realm);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1721 g_strlcpy(__Zephyr_realm, (const char*)zephyr->realm, REALM_SZ-1);
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1722 zephyr->username = g_strdup(ZGetSender());
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1723
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1724 /* zephyr->realm = g_strdup(ZGetRealm()); */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1725 gaim_debug_info("zephyr","realm: %s\n",zephyr->realm);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1726 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1727 else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1728 gaim_connection_error(gc,"Only ZEPH0.2 supported currently");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1729 return;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1730 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1731 gaim_debug_info("zephyr","does it get here\n");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1732 gaim_debug_info("zephyr"," realm: %s username:%s\n", zephyr->realm, zephyr->username);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1733
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1734 /* For now */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1735 zephyr->galaxy = NULL;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1736 zephyr->krbtkfile = NULL;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1737 zephyr_inithosts(zephyr);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1738
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1739 if (zephyr_subscribe_to(zephyr,"MESSAGE","PERSONAL",zephyr->username,NULL) != ZERR_NONE) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1740 /* XXX don't translate this yet. It could be written better */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1741 /* XXX error messages could be handled with more detail */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1742 gaim_notify_error(account->gc, NULL,
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1743 "Unable to subscribe to messages", "Unable to subscribe to initial messages");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1744 return;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1745 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1746
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1747 gaim_connection_set_state(gc, GAIM_CONNECTED);
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1748
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1749 if (read_anyone)
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1750 process_anyone(gc);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1751 if (read_zsubs)
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1752 process_zsubs(zephyr);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
1753
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1754 serv_finish_login(gc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1755
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1756 if (use_zeph02(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1757 zephyr->nottimer = gaim_timeout_add(100, check_notify_zeph02, gc);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1758 } else if (use_tzc(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1759 zephyr->nottimer = gaim_timeout_add(100, check_notify_tzc, gc);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1760 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1761 zephyr->loctimer = gaim_timeout_add(20000, check_loc, gc);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1762
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1763 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1764
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1765 static void write_zsubs(zephyr_account *zephyr)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1766 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1767 /* Exports subscription (chat) list back to
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1768 * .zephyr.subs
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1769 * XXX deal with %host%, %canon%, unsubscriptions, and negative subscriptions (punts?)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1770 */
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1771
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1772 GSList *s = zephyr->subscrips;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1773 zephyr_triple *zt;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1774 FILE *fd;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1775 char *fname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1776
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1777 char **triple;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1778
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
1779 fname = g_strdup_printf("%s/.zephyr.subs", gaim_home_dir());
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1780 fd = fopen(fname, "w");
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1781
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1782 if (!fd) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1783 g_free(fname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1784 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1785 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1786
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1787 while (s) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1788 char *zclass, *zinst, *zrecip;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1789 zt = s->data;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1790 triple = g_strsplit(zt->name, ",", 3);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1791
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1792 /* deal with classes */
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1793 if (!g_ascii_strcasecmp(triple[0],zephyr->ourhost)) {
9775
4c1a1be8ce33 [gaim-migrate @ 10643]
Mark Doliner <mark@kingant.net>
parents: 9754
diff changeset
1794 zclass = g_strdup("%host%");
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1795 } else if (!g_ascii_strcasecmp(triple[0],zephyr->ourhostcanon)) {
9775
4c1a1be8ce33 [gaim-migrate @ 10643]
Mark Doliner <mark@kingant.net>
parents: 9754
diff changeset
1796 zclass = g_strdup("%canon%");
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1797 } else {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1798 zclass = g_strdup(triple[0]);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1799 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1800
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1801 /* deal with instances */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1802
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1803 if (!g_ascii_strcasecmp(triple[1],zephyr->ourhost)) {
9775
4c1a1be8ce33 [gaim-migrate @ 10643]
Mark Doliner <mark@kingant.net>
parents: 9754
diff changeset
1804 zinst = g_strdup("%host%");
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1805 } else if (!g_ascii_strcasecmp(triple[1],zephyr->ourhostcanon)) {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1806 zinst = g_strdup("%canon%");;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1807 } else {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1808 zinst = g_strdup(triple[1]);
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1809 }
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1810
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1811 /* deal with recipients */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1812 if (triple[2] == NULL) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1813 zrecip = g_strdup("*");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1814 } else if (!g_ascii_strcasecmp(triple[2],"")){
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1815 zrecip = g_strdup("*");
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1816 } else if (!g_ascii_strcasecmp(triple[2], zephyr->username)) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1817 zrecip = g_strdup("%me%");
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
1818 } else {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1819 zrecip = g_strdup(triple[2]);
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
1820 }
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1821
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1822 fprintf(fd, "%s,%s,%s\n",zclass,zinst,zrecip);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1823
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1824 g_free(zclass);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1825 g_free(zinst);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1826 g_free(zrecip);
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
1827 g_free(triple);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1828 s = s->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1829 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1830 g_free(fname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1831 fclose(fd);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1832 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1833
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1834 static void write_anyone(GaimConnection *gc)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1835 {
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1836 GaimBlistNode *gnode, *cnode, *bnode;
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1837 GaimBuddy *b;
9912
f6a1054e2bdc [gaim-migrate @ 10804]
Luke Schierer <lschiere@pidgin.im>
parents: 9911
diff changeset
1838 char *fname;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1839 FILE *fd;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1840 zephyr_account* zephyr = gc->proto_data;
3630
9682c0e022c6 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3572
diff changeset
1841 fname = g_strdup_printf("%s/.anyone", gaim_home_dir());
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1842 fd = fopen(fname, "w");
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1843 if (!fd) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1844 g_free(fname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1845 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1846 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1847
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1848 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1849 if (!GAIM_BLIST_NODE_IS_GROUP(gnode))
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
1850 continue;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1851 for (cnode = gnode->child; cnode; cnode = cnode->next) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1852 if (!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
1e28e7d802a1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4775
diff changeset
1853 continue;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1854 for (bnode = cnode->child; bnode; bnode = bnode->next) {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1855 if (!GAIM_BLIST_NODE_IS_BUDDY(bnode))
6695
0c5637b5462e [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6679
diff changeset
1856 continue;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1857 b = (GaimBuddy *) bnode;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1858 if (b->account == gc->account) {
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1859 gchar *stripped_user = zephyr_strip_local_realm(zephyr,b->name);
9912
f6a1054e2bdc [gaim-migrate @ 10804]
Luke Schierer <lschiere@pidgin.im>
parents: 9911
diff changeset
1860 fprintf(fd, "%s\n", stripped_user);
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1861 g_free(stripped_user);
3277
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
1862 }
ec20536eaeb0 [gaim-migrate @ 3295]
Sean Egan <seanegan@gmail.com>
parents: 3158
diff changeset
1863 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1864 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1865 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1866
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1867 fclose(fd);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1868 g_free(fname);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1869 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1870
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1871 static void zephyr_close(GaimConnection * gc)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1872 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1873 GList *l;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1874 GSList *s;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1875 zephyr_account *zephyr = gc->proto_data;
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1876 pid_t tzc_pid = zephyr->tzc_pid;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1877
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1878 l = zephyr->pending_zloc_names;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1879 while (l) {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1880 g_free((char *)l->data);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1881 l = l->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1882 }
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1883 g_list_free(zephyr->pending_zloc_names);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1884
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1885 if (gaim_account_get_bool(gc->account, "write_anyone", FALSE))
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1886 write_anyone(gc);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1887
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1888 if (gaim_account_get_bool(gc->account, "write_zsubs", FALSE))
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1889 write_zsubs(gc->proto_data);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1890
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1891 s = zephyr->subscrips;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1892 while (s) {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1893 free_triple((zephyr_triple *) s->data);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1894 s = s->next;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1895 }
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1896 g_slist_free(zephyr->subscrips);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1897
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1898 if (zephyr->nottimer)
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1899 gaim_timeout_remove(zephyr->nottimer);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1900 zephyr->nottimer = 0;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1901 if (zephyr->loctimer)
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1902 gaim_timeout_remove(zephyr->loctimer);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1903 zephyr->loctimer = 0;
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1904 gc = NULL;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1905 if (use_zeph02(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1906 z_call(ZCancelSubscriptions(0));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1907 z_call(ZUnsetLocation());
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1908 z_call(ZClosePort());
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1909 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1910 /* assume tzc */
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1911 if (kill(tzc_pid,SIGTERM) == -1) {
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1912 int err=errno;
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1913 if (err==EINVAL) {
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1914 gaim_debug_error("zephyr","An invalid signal was specified when killing tzc\n");
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1915 }
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1916 else if (err==ESRCH) {
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1917 gaim_debug_error("zephyr","Tzc's pid didn't exist while killing tzc\n");
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1918 }
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1919 else if (err==EPERM) {
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1920 gaim_debug_error("zephyr","gaim didn't have permission to kill tzc\n");
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1921 }
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1922 else {
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1923 gaim_debug_error("zephyr","miscellaneous error while attempting to close tzc\n");
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1924 }
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
1925 }
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1926 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1927 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1928
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1929 static int zephyr_send_message(zephyr_account *zephyr,char* zclass, char* instance, char* recipient, const char *im,
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1930 const char *sig, char *opcode) ;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1931
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1932 const char * zephyr_get_signature()
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1933 {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1934 /* XXX add zephyr error reporting */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
1935 const char * sig =ZGetVariable("zwrite-signature");
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1936 if (!sig) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1937 sig = g_get_real_name();
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1938 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1939 return sig;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1940 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1941
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1942 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
1943 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1944 zephyr_triple *zt;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1945 const char *sig;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1946 GaimConversation *gconv1;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1947 GaimConvChat *gcc;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1948 char *inst;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1949 char *recipient;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1950 zephyr_account *zephyr = gc->proto_data;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1951
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1952 zt = find_sub_by_id(gc->proto_data,id);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1953 if (!zt)
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1954 /* this should never happen. */
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
1955 return -EINVAL;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1956
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1957 sig = zephyr_get_signature();
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1958
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
1959 gconv1 = gaim_find_conversation_with_account(zt->name, gc->account);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1960 gcc = gaim_conversation_get_chat_data(gconv1);
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
1961
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1962 if (!(inst = (char *)gaim_conv_chat_get_topic(gcc)))
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1963 inst = g_strdup("PERSONAL");
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1964
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
1965 if (!g_ascii_strcasecmp(zt->recipient, "*"))
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1966 recipient = local_zephyr_normalize(zephyr,"");
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1967 else
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1968 recipient = local_zephyr_normalize(zephyr,zt->recipient);
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
1969
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1970 zephyr_send_message(zephyr,zt->class,inst,recipient,im,sig,"");
2167
edf8c5a70e5b [gaim-migrate @ 2177]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2162
diff changeset
1971 return 0;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1972 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1973
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1974
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
1975 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
1976 {
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1977 const char *sig;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1978 zephyr_account *zephyr = gc->proto_data;
7118
bf630f7dfdcd [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7084
diff changeset
1979 if (flags & GAIM_CONV_IM_AUTO_RESP)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1980 sig = "Automated reply:";
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1981 else {
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1982 sig = zephyr_get_signature();
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1983 }
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1984 zephyr_send_message(zephyr,"MESSAGE","PERSONAL",local_zephyr_normalize(zephyr,who),im,sig,"");
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1985
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1986 return 1;
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
1987 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1988
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1989 /* Munge the outgoing zephyr so that any quotes or backslashes are
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1990 escaped and do not confuse tzc: */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1991
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1992 char* zephyr_tzc_escape_msg(const char *message)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1993 {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1994 int pos = 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1995 int pos2 = 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1996 char *newmsg;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1997
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1998 if (message && (strlen(message) > 0)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
1999 newmsg = g_new0(char,1+strlen(message)*2);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2000 while(pos < strlen(message)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2001 if (message[pos]=='\\') {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2002 newmsg[pos2]='\\';
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2003 newmsg[pos2+1]='\\';
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2004 pos2+=2;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2005 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2006 else if (message[pos]=='"') {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2007 newmsg[pos2]='\\';
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2008 newmsg[pos2+1]='"';
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2009 pos2+=2;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2010 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2011 else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2012 newmsg[pos2] = message[pos];
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2013 pos2++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2014 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2015 pos++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2016 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2017 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2018 newmsg = g_strdup("");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2019 }
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2020 /* fprintf(stderr,"newmsg %s message %s\n",newmsg,message); */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2021 return newmsg;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2022 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2023
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2024 char* zephyr_tzc_deescape_str(const char *message)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2025 {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2026 int pos = 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2027 int pos2 = 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2028 char *newmsg;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2029
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2030 if (message && (strlen(message) > 0)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2031 newmsg = g_new0(char,strlen(message)+1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2032 while(pos < strlen(message)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2033 if (message[pos]=='\\') {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2034 pos++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2035 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2036 newmsg[pos2] = message[pos];
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2037 pos++;pos2++;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2038 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2039 newmsg[pos2]='\0';
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2040 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2041 newmsg = g_strdup("");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2042 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2043
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2044 return newmsg;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2045 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2046
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2047 static int zephyr_send_message(zephyr_account *zephyr,char* zclass, char* instance, char* recipient, const char *im,
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2048 const char *sig, char *opcode)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2049 {
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
2050
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2051 /* (From the tzc source)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2052 * emacs sends something of the form:
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2053 * ((class . "MESSAGE")
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2054 * (auth . t)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2055 * (recipients ("PERSONAL" . "bovik") ("test" . ""))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2056 * (sender . "bovik")
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2057 * (message . ("Harry Bovik" "my zgram"))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2058 * )
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2059 */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2060 char *html_buf;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2061 char *html_buf2;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2062 html_buf = html_to_zephyr(im);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2063 html_buf2 = gaim_unescape_html(html_buf);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2064
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2065 if(use_tzc(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2066 char* zsendstr;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2067 /* CMU cclub tzc doesn't grok opcodes for now */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2068 char* tzc_sig = zephyr_tzc_escape_msg(sig);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2069 char *tzc_body = zephyr_tzc_escape_msg(html_buf2);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2070 zsendstr = g_strdup_printf("((tzcfodder . send) (class . \"%s\") (auth . t) (recipients (\"%s\" . \"%s\")) (message . (\"%s\" \"%s\")) ) \n",
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2071 zclass, instance, recipient, tzc_sig, tzc_body);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2072 /* fprintf(stderr,"zsendstr = %s\n",zsendstr); */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2073 write(zephyr->totzc[ZEPHYR_FD_WRITE],zsendstr,strlen(zsendstr));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2074 g_free(zsendstr);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2075 } else if (use_zeph02(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2076 ZNotice_t notice;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2077 char *buf = g_strdup_printf("%s%c%s", sig, '\0', html_buf2);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2078 bzero((char *)&notice, sizeof(notice));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2079
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2080 notice.z_kind = ACKED;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2081 notice.z_port = 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2082 notice.z_opcode = "";
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2083 notice.z_class = zclass;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2084 notice.z_class_inst = instance;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2085 notice.z_recipient = recipient;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2086 notice.z_sender = 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2087 notice.z_default_format = "Class $class, Instance $instance:\n" "To: @bold($recipient) at $time $date\n" "From: @bold($1) <$sender>\n\n$2";
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2088 notice.z_message_len = strlen(html_buf2) + strlen(sig) + 2;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2089 notice.z_message = buf;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2090 notice.z_opcode = g_strdup(opcode);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2091 gaim_debug_info("zephyr","About to send notice");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2092 if (! ZSendNotice(&notice, ZAUTH) == ZERR_NONE) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2093 /* XXX handle errors here */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2094 return 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2095 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2096 gaim_debug_info("zephyr","notice sent");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2097 g_free(buf);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2098 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2099
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2100 g_free(html_buf2);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2101 g_free(html_buf);
8451
6b7b5b10cd8a [gaim-migrate @ 9181]
Luke Schierer <lschiere@pidgin.im>
parents: 8449
diff changeset
2102
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2103 return 1;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2104 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2105
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2106 static const char *zephyr_normalize(const GaimAccount * account, const char *orig)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2107 {
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
2108 /* returns the string you gave it. Maybe this function shouldn't be here */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2109 char * buf = g_malloc0(80);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2110 /* gaim_debug_error("zephyr","entering zephyr_normalize\n"); */
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2111
7126
eda3de6dacbb [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
2112 if (!g_ascii_strcasecmp(orig, "")) {
eda3de6dacbb [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
2113 buf[0] = '\0';
eda3de6dacbb [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
2114 return buf;
8354
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
2115 } else {
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2116 g_snprintf(buf, 80, "%s", orig);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2117 }
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2118 /* gaim_debug_error("zephyr","leaving zephyr_normalize\n"); */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2119
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2120 return buf;
8354
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
2121 }
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
2122
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
2123
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2124 char *local_zephyr_normalize(zephyr_account *zephyr,const char *orig)
8354
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
2125 {
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
2126 /*
9912
f6a1054e2bdc [gaim-migrate @ 10804]
Luke Schierer <lschiere@pidgin.im>
parents: 9911
diff changeset
2127 Basically the inverse of zephyr_strip_local_realm
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2128 */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2129 char* buf;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2130
8354
43dec50d8d51 [gaim-migrate @ 9078]
Luke Schierer <lschiere@pidgin.im>
parents: 8287
diff changeset
2131 if (!g_ascii_strcasecmp(orig, "")) {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2132 return g_strdup("");
7126
eda3de6dacbb [gaim-migrate @ 7693]
Luke Schierer <lschiere@pidgin.im>
parents: 7118
diff changeset
2133 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2134
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2135 if (strchr(orig,'@')) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2136 buf = g_strdup_printf("%s",orig);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2137 } else {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2138 buf = g_strdup_printf("%s@%s",orig,zephyr->realm);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2139 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2140 return buf;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2141 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2142
9030
7ab20f829190 [gaim-migrate @ 9806]
Mark Doliner <mark@kingant.net>
parents: 9015
diff changeset
2143 static void zephyr_zloc(GaimConnection *gc, const char *who)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2144 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2145 ZAsyncLocateData_t ald;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2146 zephyr_account *zephyr = gc->proto_data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2147 gchar* normalized_who = local_zephyr_normalize(zephyr,who);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2148
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2149 if (use_zeph02(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2150 if (ZRequestLocations(normalized_who, &ald, UNACKED, ZAUTH) == ZERR_NONE) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2151 zephyr->pending_zloc_names = g_list_append(zephyr->pending_zloc_names,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2152 g_strdup(normalized_who));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2153 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2154 /* XXX deal with errors somehow */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2155 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2156 } else if (use_tzc(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2157 char* zlocstr = g_strdup_printf("((tzcfodder . zlocate) \"%s\")\n",normalized_who);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2158 zephyr->pending_zloc_names = g_list_append(zephyr->pending_zloc_names, g_strdup(normalized_who));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2159 write(zephyr->totzc[ZEPHYR_FD_WRITE],zlocstr,strlen(zlocstr));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2160 g_free(zlocstr);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2161 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2162 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2163
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2164 static void zephyr_set_status(GaimAccount *account, GaimStatus *status) {
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2165 zephyr_account *zephyr = gaim_account_get_connection(account)->proto_data;
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2166 const char *status_id = gaim_status_get_id(status);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2167
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2168 if (zephyr->away) {
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2169 g_free(zephyr->away);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2170 zephyr->away=NULL;
4111
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 3867
diff changeset
2171 }
ee884f1d7ae3 [gaim-migrate @ 4326]
Christian Hammond <chipx86@chipx86.com>
parents: 3867
diff changeset
2172
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2173 if (!strcmp(status_id,"away")) {
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2174 zephyr->away = g_strdup(gaim_status_get_attr_string(status,"message"));
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2175 }
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2176 else if (!strcmp(status_id,"online")) {
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2177 if (use_zeph02(zephyr)) {
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2178 ZSetLocation(zephyr->exposure);
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2179 }
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2180 else {
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2181 char *zexpstr = g_strdup_printf("((tzcfodder . set-location) (hostname . \"%s\") (exposure . \"%s\"))\n",zephyr->ourhost,zephyr->exposure);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2182 write(zephyr->totzc[ZEPHYR_FD_WRITE],zexpstr,strlen(zexpstr));
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2183 g_free(zexpstr);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2184 }
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2185 }
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2186 else if (!strcmp(status_id,"hidden")) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2187 /* XXX handle errors */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2188 if (use_zeph02(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2189 ZSetLocation(EXPOSE_OPSTAFF);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2190 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2191 char *zexpstr = g_strdup_printf("((tzcfodder . set-location) (hostname . \"%s\") (exposure . \"%s\"))\n",zephyr->ourhost,EXPOSE_OPSTAFF);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2192 write(zephyr->totzc[ZEPHYR_FD_WRITE],zexpstr,strlen(zexpstr));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2193 g_free(zexpstr);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2194 }
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2195 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2196 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2197
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2198 static GList *zephyr_status_types(GaimAccount *account)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2199 {
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2200 GaimStatusType *type;
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2201 GList *types = NULL;
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2202
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2203 /* zephyr has several exposures
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2204 NONE (where you are hidden, and zephyrs to you are in practice silently dropped -- yes this is wrong)
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2205 OPSTAFF "hidden"
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2206 REALM-VISIBLE visible to people in local realm
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2207 REALM-ANNOUNCED REALM-VISIBLE+ plus your logins/logouts are announced to <login,username,*>
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2208 NET-VISIBLE REALM-ANNOUNCED, plus visible to people in foreign realm
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2209 NET-ANNOUNCED NET-VISIBLE, plus logins/logouts are announced to <login,username,*>
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2210
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2211 Online will set the user to the exposure they have in their options (defaulting to REALM-VISIBLE),
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2212 Hidden, will set the user's exposure to OPSTAFF
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2213
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2214 Away won't change their exposure but will set an auto away message (for IMs only)
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2215 */
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2216
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2217 type = gaim_status_type_new(GAIM_STATUS_ONLINE, "online", _("Online"), FALSE);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2218 types = g_list_append(types,type);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2219
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2220 type = gaim_status_type_new(GAIM_STATUS_HIDDEN, "hidden", _("Hidden"), FALSE);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2221 types = g_list_append(types,type);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2222
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2223 type = gaim_status_type_new_with_attrs(
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2224 GAIM_STATUS_AWAY, "away", _("Away"), TRUE, TRUE, FALSE,
10009
c124bef68132 [gaim-migrate @ 10926]
Mark Doliner <mark@kingant.net>
parents: 9986
diff changeset
2225 "message", _("Message"), gaim_value_new(GAIM_TYPE_STRING), NULL);
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2226 types = g_list_append(types, type);
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2227
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2228 return types;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2229 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2230
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2231 static GList *zephyr_chat_info(GaimConnection * gc)
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2232 {
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2170
diff changeset
2233 GList *m = NULL;
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2170
diff changeset
2234 struct proto_chat_entry *pce;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2235
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2170
diff changeset
2236 pce = g_new0(struct proto_chat_entry, 1);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2237
7841
0555e59dfba9 [gaim-migrate @ 8494]
Mark Doliner <mark@kingant.net>
parents: 7475
diff changeset
2238 pce->label = _("_Class:");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
2239 pce->identifier = "class";
3158
ea6f8d8d74e5 [gaim-migrate @ 3174]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
2240 m = g_list_append(m, pce);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2241
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2170
diff changeset
2242 pce = g_new0(struct proto_chat_entry, 1);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2243
7841
0555e59dfba9 [gaim-migrate @ 8494]
Mark Doliner <mark@kingant.net>
parents: 7475
diff changeset
2244 pce->label = _("_Instance:");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
2245 pce->identifier = "instance";
3158
ea6f8d8d74e5 [gaim-migrate @ 3174]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
2246 m = g_list_append(m, pce);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2247
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2170
diff changeset
2248 pce = g_new0(struct proto_chat_entry, 1);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2249
7841
0555e59dfba9 [gaim-migrate @ 8494]
Mark Doliner <mark@kingant.net>
parents: 7475
diff changeset
2250 pce->label = _("_Recipient:");
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
2251 pce->identifier = "recipient";
3158
ea6f8d8d74e5 [gaim-migrate @ 3174]
Sean Egan <seanegan@gmail.com>
parents: 3033
diff changeset
2252 m = g_list_append(m, pce);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2253
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2170
diff changeset
2254 return m;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2255 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2256
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2257 /* 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
2258
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2259 static void zephyr_subscribe_failed(GaimConnection *gc,char * z_class, char *z_instance, char * z_recipient, char* z_galaxy)
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2260 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2261 gchar* subscribe_failed = g_strdup_printf(_("Attempt to subscribe to %s,%s,%s failed"), z_class, z_instance,z_recipient);
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
2262 gaim_notify_error(gc,"", subscribe_failed, NULL);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2263 g_free(subscribe_failed);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2264 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2265
9921
b76915608068 [gaim-migrate @ 10813]
Luke Schierer <lschiere@pidgin.im>
parents: 9917
diff changeset
2266 static char *zephyr_get_chat_name(GHashTable *data) {
9922
b03884f4eda6 [gaim-migrate @ 10814]
Luke Schierer <lschiere@pidgin.im>
parents: 9921
diff changeset
2267 gchar* zclass = g_hash_table_lookup(data,"class");
b03884f4eda6 [gaim-migrate @ 10814]
Luke Schierer <lschiere@pidgin.im>
parents: 9921
diff changeset
2268 gchar* inst = g_hash_table_lookup(data,"instance");
b03884f4eda6 [gaim-migrate @ 10814]
Luke Schierer <lschiere@pidgin.im>
parents: 9921
diff changeset
2269 gchar* recipient = g_hash_table_lookup(data, "recipient");
b03884f4eda6 [gaim-migrate @ 10814]
Luke Schierer <lschiere@pidgin.im>
parents: 9921
diff changeset
2270 if (!zclass) /* This should never happen */
b03884f4eda6 [gaim-migrate @ 10814]
Luke Schierer <lschiere@pidgin.im>
parents: 9921
diff changeset
2271 zclass = "";
b03884f4eda6 [gaim-migrate @ 10814]
Luke Schierer <lschiere@pidgin.im>
parents: 9921
diff changeset
2272 if (!inst)
b03884f4eda6 [gaim-migrate @ 10814]
Luke Schierer <lschiere@pidgin.im>
parents: 9921
diff changeset
2273 inst = "*";
b03884f4eda6 [gaim-migrate @ 10814]
Luke Schierer <lschiere@pidgin.im>
parents: 9921
diff changeset
2274 if (!recipient)
b03884f4eda6 [gaim-migrate @ 10814]
Luke Schierer <lschiere@pidgin.im>
parents: 9921
diff changeset
2275 recipient = "";
b03884f4eda6 [gaim-migrate @ 10814]
Luke Schierer <lschiere@pidgin.im>
parents: 9921
diff changeset
2276 return g_strdup_printf("%s,%s,%s",zclass,inst,recipient);
9917
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9912
diff changeset
2277 }
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9912
diff changeset
2278
9922
b03884f4eda6 [gaim-migrate @ 10814]
Luke Schierer <lschiere@pidgin.im>
parents: 9921
diff changeset
2279
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2280 static void zephyr_join_chat(GaimConnection * gc, GHashTable * data)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2281 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2282 /* ZSubscription_t sub; */
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2283 zephyr_triple *zt1, *zt2;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2284 const char *classname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2285 const char *instname;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2286 const char *recip;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2287 zephyr_account *zephyr=gc->proto_data;
5234
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
2288 classname = g_hash_table_lookup(data, "class");
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
2289 instname = g_hash_table_lookup(data, "instance");
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
2290 recip = g_hash_table_lookup(data, "recipient");
890b29f00b68 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5205
diff changeset
2291
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2292
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
2293 if (!classname)
2205
cff4fbe01c7b [gaim-migrate @ 2215]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2170
diff changeset
2294 return;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2295
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2296 if (!g_ascii_strcasecmp(classname,"%host%"))
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2297 classname = g_strdup(zephyr->ourhost);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2298 if (!g_ascii_strcasecmp(classname,"%canon%"))
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2299 classname = g_strdup(zephyr->ourhostcanon);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2300
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
2301 if (!instname || !strlen(instname))
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
2302 instname = "*";
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2303
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2304 if (!g_ascii_strcasecmp(instname,"%host%"))
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2305 instname = g_strdup(zephyr->ourhost);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2306 if (!g_ascii_strcasecmp(instname,"%canon%"))
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2307 instname = g_strdup(zephyr->ourhostcanon);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2308
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
2309 if (!recip || (*recip == '*'))
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
2310 recip = "";
4793
677d3cb193a1 [gaim-migrate @ 5113]
Nathan Walp <nwalp@pidgin.im>
parents: 4785
diff changeset
2311 if (!g_ascii_strcasecmp(recip, "%me%"))
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2312 recip = zephyr->username;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2313
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
2314 zt1 = new_triple(gc->proto_data,classname, instname, recip);
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
2315 zt2 = find_sub_by_triple(gc->proto_data,zt1);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2316 if (zt2) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2317 free_triple(zt1);
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
2318 if (!zt2->open) {
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
2319 if (!g_ascii_strcasecmp(instname,"*"))
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
2320 instname = "PERSONAL";
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2321 serv_got_joined_chat(gc, zt2->id, zt2->name);
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2322 zephyr_chat_set_topic(gc,zt2->id,instname);
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
2323 zt2->open = TRUE;
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
2324 }
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2325 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2326 }
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2327
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2328 /* sub.zsub_class = zt1->class;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2329 sub.zsub_classinst = zt1->instance;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2330 sub.zsub_recipient = zt1->recipient; */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2331
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2332 if (zephyr_subscribe_to(zephyr,zt1->class,zt1->instance,zt1->recipient,NULL) != ZERR_NONE) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2333 /* XXX output better subscription information */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2334 zephyr_subscribe_failed(gc,zt1->class,zt1->instance,zt1->recipient,NULL);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2335 free_triple(zt1);
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2336 return;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2337 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2338
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
2339 zephyr->subscrips = g_slist_append(zephyr->subscrips, zt1);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2340 zt1->open = TRUE;
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2341 serv_got_joined_chat(gc, zt1->id, zt1->name);
9328
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
2342 if (!g_ascii_strcasecmp(instname,"*"))
33e6b2b92cfe [gaim-migrate @ 10136]
Luke Schierer <lschiere@pidgin.im>
parents: 9308
diff changeset
2343 instname = "PERSONAL";
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2344 zephyr_chat_set_topic(gc,zt1->id,instname);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2345 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2346
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2347 static void zephyr_chat_leave(GaimConnection * gc, int id)
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2348 {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2349 zephyr_triple *zt;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2350 zephyr_account *zephyr = gc->proto_data;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
2351 zt = find_sub_by_id(zephyr,id);
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2352
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2353 if (zt) {
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2354 zt->open = FALSE;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
2355 zt->id = ++(zephyr->last_id);
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2356 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2357 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2358
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2359 static GaimChat *zephyr_find_blist_chat(GaimAccount *account, const char *name)
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2360 {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2361 GaimBlistNode *gnode, *cnode;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2362
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2363 /* XXX needs to be %host%,%canon%, and %me% clean */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2364 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2365 for(cnode = gnode->child; cnode; cnode = cnode->next) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2366 GaimChat *chat = (GaimChat*)cnode;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2367 char *zclass, *inst, *recip;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2368 char** triple;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2369 if(!GAIM_BLIST_NODE_IS_CHAT(cnode))
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2370 continue;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2371 if(chat->account !=account)
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2372 continue;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2373 if(!(zclass = g_hash_table_lookup(chat->components, "class")))
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2374 continue;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2375 if(!(inst = g_hash_table_lookup(chat->components, "instance")))
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2376 inst = g_strdup("");
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2377 if(!(recip = g_hash_table_lookup(chat->components, "recipient")))
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2378 recip = g_strdup("");
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2379 /* gaim_debug_info("zephyr","in zephyr_find_blist_chat name: %s\n",name?name:""); */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2380 triple = g_strsplit(name,",",3);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2381 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
2382 return chat;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2383
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2384 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2385 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2386 return NULL;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2387 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2388 static const char *zephyr_list_icon(GaimAccount * a, GaimBuddy * b)
5202
ccb0ab32ba01 [gaim-migrate @ 5568]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2389 {
ccb0ab32ba01 [gaim-migrate @ 5568]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2390 return "zephyr";
ccb0ab32ba01 [gaim-migrate @ 5568]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2391 }
ccb0ab32ba01 [gaim-migrate @ 5568]
Mark Doliner <mark@kingant.net>
parents: 5136
diff changeset
2392
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2393 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
2394 gchar *recipient;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2395 zephyr_account *zephyr = gc->proto_data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2396 if (use_tzc(zephyr))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2397 return 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2398
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2399 if (!typing)
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2400 return 0;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2401 /* 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
2402 if (!who) {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2403 gaim_debug_info("zephyr", "who is null\n");
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2404 recipient = local_zephyr_normalize(zephyr,"");
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2405 } else {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2406 /* Don't ping broadcast (chat) recipients */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2407 /* The strrchr case finds a realm-stripped broadcast subscription
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2408 e.g. comma is the last character in the string */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2409 if ((strrchr(who, ',') && ((strrchr(who, ',') == (who+strlen(who)-1)) || ((char *)(strrchr(who, ',')[1] == '@')))))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2410 return 0;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2411
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2412 recipient = local_zephyr_normalize(zephyr,who);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2413 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2414
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2415 gaim_debug_info("zephyr","about to send typing notification to %s\n",recipient);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2416 zephyr_send_message(zephyr,"MESSAGE","PERSONAL",recipient,"","","PING");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2417 gaim_debug_info("zephyr","sent typing notification\n");
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2418 return ZEPHYR_TYPING_SEND_TIMEOUT;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2419 }
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
2420
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2421
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2422
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2423 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
2424 {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2425 zephyr_triple *zt;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2426 GaimConversation *gconv;
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2427 GaimConvChat *gcc;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2428 gchar *topic_utf8;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2429 zephyr_account* zephyr = gc->proto_data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2430 char *sender = (char *)zephyr->username;
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
2431
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
2432 zt = find_sub_by_id(gc->proto_data,id);
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2433 /* find_sub_by_id can return NULL */
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2434 if (!zt)
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2435 return;
9610
a6362795bf2c [gaim-migrate @ 10453]
Luke Schierer <lschiere@pidgin.im>
parents: 9597
diff changeset
2436 gconv = gaim_find_conversation_with_account(zt->name, gc->account);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2437 gcc = gaim_conversation_get_chat_data(gconv);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2438
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2439 topic_utf8 = zephyr_recv_convert(gc,(gchar *)topic,strlen(topic));
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2440 gaim_conv_chat_set_topic(gcc,sender,topic_utf8);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2441 g_free(topic_utf8);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2442 return;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2443 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2444
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2445 /* commands */
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2446
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2447 static GaimCmdRet zephyr_gaim_cmd_msg(GaimConversation *conv,
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2448 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2449 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2450 char *recipient;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2451 zephyr_account *zephyr = gaim_conversation_get_gc(conv)->proto_data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2452 if (!g_ascii_strcasecmp(args[0],"*"))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2453 return GAIM_CMD_RET_FAILED; /* "*" is not a valid argument */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2454 else
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2455 recipient = local_zephyr_normalize(zephyr,args[0]);
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2456
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2457 if (strlen(recipient) < 1)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2458 return GAIM_CMD_RET_FAILED; /* a null recipient is a chat message, not an IM */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2459
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2460 if (zephyr_send_message(zephyr,"MESSAGE","PERSONAL",recipient,args[1],zephyr_get_signature(),""))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2461 return GAIM_CMD_RET_OK;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2462 else
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2463 return GAIM_CMD_RET_FAILED;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2464 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2465
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2466 static GaimCmdRet zephyr_gaim_cmd_zlocate(GaimConversation *conv,
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2467 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2468 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2469 zephyr_zloc(gaim_conversation_get_gc(conv),args[0]);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2470 return GAIM_CMD_RET_OK;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2471 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2472
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2473 static GaimCmdRet zephyr_gaim_cmd_instance(GaimConversation *conv,
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2474 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2475 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2476 /* Currently it sets the instance with leading spaces and
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2477 * all. This might not be the best thing to do, though having
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2478 * one word isn't ideal either. */
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2479
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2480 GaimConvChat *gcc = gaim_conversation_get_chat_data(conv);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2481 int id = gcc->id;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2482 const char* instance = args[0];
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2483 zephyr_chat_set_topic(gaim_conversation_get_gc(conv),id,instance);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2484 return GAIM_CMD_RET_OK;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2485 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2486
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2487 static GaimCmdRet zephyr_gaim_cmd_joinchat_cir(GaimConversation *conv,
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2488 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2489 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2490 /* Join a new zephyr chat */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2491 GHashTable *triple = g_hash_table_new(NULL,NULL);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2492 g_hash_table_insert(triple,"class",args[0]);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2493 g_hash_table_insert(triple,"instance",args[1]);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2494 g_hash_table_insert(triple,"recipient",args[2]);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2495 zephyr_join_chat(gaim_conversation_get_gc(conv),triple);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2496 return GAIM_CMD_RET_OK;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2497 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2498
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2499 static GaimCmdRet zephyr_gaim_cmd_zi(GaimConversation *conv,
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2500 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2501 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2502 /* args = instance, message */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2503 zephyr_account *zephyr = gaim_conversation_get_gc(conv)->proto_data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2504 if ( zephyr_send_message(zephyr,"message",args[0],"",args[1],zephyr_get_signature(),""))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2505 return GAIM_CMD_RET_OK;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2506 else
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2507 return GAIM_CMD_RET_FAILED;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2508 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2509
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2510 static GaimCmdRet zephyr_gaim_cmd_zci(GaimConversation *conv,
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2511 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2512 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2513 /* args = class, instance, message */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2514 zephyr_account *zephyr = gaim_conversation_get_gc(conv)->proto_data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2515 if ( zephyr_send_message(zephyr,args[0],args[1],"",args[2],zephyr_get_signature(),""))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2516 return GAIM_CMD_RET_OK;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2517 else
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2518 return GAIM_CMD_RET_FAILED;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2519 }
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2520
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2521 static GaimCmdRet zephyr_gaim_cmd_zcir(GaimConversation *conv,
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2522 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2523 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2524 /* args = class, instance, recipient, message */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2525 zephyr_account *zephyr = gaim_conversation_get_gc(conv)->proto_data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2526 if ( zephyr_send_message(zephyr,args[0],args[1],args[2],args[3],zephyr_get_signature(),""))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2527 return GAIM_CMD_RET_OK;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2528 else
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2529 return GAIM_CMD_RET_FAILED;
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
2530 }
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
2531
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2532 static GaimCmdRet zephyr_gaim_cmd_zir(GaimConversation *conv,
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2533 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2534 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2535 /* args = instance, recipient, message */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2536 zephyr_account *zephyr = gaim_conversation_get_gc(conv)->proto_data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2537 if ( zephyr_send_message(zephyr,"message",args[0],args[1],args[2],zephyr_get_signature(),""))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2538 return GAIM_CMD_RET_OK;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2539 else
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2540 return GAIM_CMD_RET_FAILED;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2541 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2542
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2543 static GaimCmdRet zephyr_gaim_cmd_zc(GaimConversation *conv,
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2544 const char *cmd, char **args, char **error, void *data)
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2545 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2546 /* args = class, message */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2547 zephyr_account *zephyr = gaim_conversation_get_gc(conv)->proto_data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2548 if ( zephyr_send_message(zephyr,args[0],"PERSONAL","",args[1],zephyr_get_signature(),""))
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2549 return GAIM_CMD_RET_OK;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2550 else
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2551 return GAIM_CMD_RET_FAILED;
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2552 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2553
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
2554 static void zephyr_register_slash_commands()
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2555 {
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2556
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2557 gaim_cmd_register("msg","ws", GAIM_CMD_P_PRPL,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2558 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2559 "prpl-zephyr",
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2560 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
2561
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2562 gaim_cmd_register("zlocate","w", GAIM_CMD_P_PRPL,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2563 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2564 "prpl-zephyr",
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2565 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
2566
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2567 gaim_cmd_register("zl","w", GAIM_CMD_P_PRPL,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2568 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2569 "prpl-zephyr",
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2570 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
2571
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2572 gaim_cmd_register("instance","s", GAIM_CMD_P_PRPL,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2573 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2574 "prpl-zephyr",
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2575 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
2576
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2577 gaim_cmd_register("inst","s", GAIM_CMD_P_PRPL,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2578 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2579 "prpl-zephyr",
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2580 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
2581
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2582 gaim_cmd_register("topic","s", GAIM_CMD_P_PRPL,
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2583 GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2584 "prpl-zephyr",
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2585 zephyr_gaim_cmd_instance, _("topic &lt;instance&gt;: Set the instance to be used on this class"), NULL);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2586
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2587 gaim_cmd_register("sub", "www", GAIM_CMD_P_PRPL,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2588 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2589 "prpl-zephyr",
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2590 zephyr_gaim_cmd_joinchat_cir,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2591 _("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
2592
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2593 gaim_cmd_register("zi","ws", GAIM_CMD_P_PRPL,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2594 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2595 "prpl-zephyr",
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2596 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
2597
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2598 gaim_cmd_register("zci","wws",GAIM_CMD_P_PRPL,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2599 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2600 "prpl-zephyr",
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2601 zephyr_gaim_cmd_zci,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2602 _("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
2603
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2604 gaim_cmd_register("zcir","wwws",GAIM_CMD_P_PRPL,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2605 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2606 "prpl-zephyr",
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2607 zephyr_gaim_cmd_zcir,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2608 _("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
2609
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2610 gaim_cmd_register("zir","wws",GAIM_CMD_P_PRPL,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2611 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2612 "prpl-zephyr",
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2613 zephyr_gaim_cmd_zir,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2614 _("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
2615
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2616 gaim_cmd_register("zc","ws", GAIM_CMD_P_PRPL,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2617 GAIM_CMD_FLAG_IM | GAIM_CMD_FLAG_CHAT | GAIM_CMD_FLAG_PRPL_ONLY,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2618 "prpl-zephyr",
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2619 zephyr_gaim_cmd_zc, _("zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"), NULL);
9597
d6f398e80b32 [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9584
diff changeset
2620
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2621 }
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2622
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2623
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2624 static void
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2625 zephyr_add_deny(GaimConnection *gc, const char *who)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2626 {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2627 gaim_privacy_deny_add(gc->account,who,1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2628 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2629
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2630 static void
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2631 zephyr_remove_deny(GaimConnection *gc, const char *who)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2632 {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2633 gaim_privacy_deny_remove(gc->account,who,1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2634 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2635
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2636 static void
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2637 zephyr_add_permit(GaimConnection *gc, const char *who)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2638 {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2639 gaim_privacy_permit_add(gc->account,who,1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2640 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2641
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2642 static void
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2643 zephyr_remove_permit(GaimConnection *gc, const char *who)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2644 {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2645 gaim_privacy_permit_remove(gc->account,who,1);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2646 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2647
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2648 static void
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2649 zephyr_set_permit_deny(GaimConnection *gc)
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2650 {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2651 /* This doesn't have to do anything, since really, we can just check account->perm_deny when deciding whether to di */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2652 return;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2653 }
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2654 static int zephyr_resubscribe(GaimConnection *gc)
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2655 {
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2656 /* Resubscribe to the in-memory list of subscriptions and also
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2657 unsubscriptions*/
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2658 zephyr_account *zephyr = gc->proto_data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2659 GSList *s = zephyr->subscrips;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2660 zephyr_triple *zt;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2661 while (s) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2662 zt = s->data;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2663 /* XXX We really should care if this fails */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2664 zephyr_subscribe_to(zephyr,zt->class,zt->instance,zt->recipient,NULL);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2665 s = s->next;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2666 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2667 /* XXX handle unsubscriptions */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2668 return 1;
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2669 }
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2670
9434
c5cf752acc4a [gaim-migrate @ 10254]
Luke Schierer <lschiere@pidgin.im>
parents: 9427
diff changeset
2671
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2672 static void zephyr_action_resubscribe(GaimPluginAction *action)
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2673 {
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2674
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2675 GaimConnection *gc = (GaimConnection *) action->context;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2676 zephyr_resubscribe(gc);
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2677 }
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2678
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2679
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2680 static void zephyr_action_get_subs_from_server(GaimPluginAction *action)
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2681 {
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2682 GaimConnection *gc = (GaimConnection *) action->context;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2683 zephyr_account *zephyr = gc->proto_data;
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2684 gchar *title;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2685 int retval, nsubs, one,i;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2686 ZSubscription_t subs;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2687 if (use_zeph02(zephyr)) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2688 GString* subout = g_string_new("Subscription list<br>");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2689
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2690 title = g_strdup_printf("Server subscriptions for %s", zephyr->username);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2691
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2692 if (zephyr->port == 0) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2693 gaim_debug(GAIM_DEBUG_ERROR,"zephyr", "error while retrieving port");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2694 return;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2695 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2696 if ((retval = ZRetrieveSubscriptions(zephyr->port,&nsubs)) != ZERR_NONE) {
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2697 /* XXX better error handling */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2698 gaim_debug(GAIM_DEBUG_ERROR,"zephyr", "error while retrieving subscriptions from server");
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2699 return;
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2700 }
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2701 for(i=0;i<nsubs;i++) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2702 one = 1;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2703 if ((retval = ZGetSubscriptions(&subs,&one)) != ZERR_NONE) {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2704 /* XXX better error handling */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2705 gaim_debug(GAIM_DEBUG_ERROR,"zephyr", "error while retrieving individual subscription");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2706 return;
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2707 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2708 g_string_append_printf(subout, "Class %s Instance %s Recipient %s<br>",
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2709 subs.zsub_class, subs.zsub_classinst,
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2710 subs.zsub_recipient);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2711 }
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2712 gaim_notify_formatted(gc, title, title, NULL, subout->str, NULL, NULL);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2713 } else {
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2714 /* XXX fix */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2715 gaim_notify_error(gc,"","tzc doesn't support this action",NULL);
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2716 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2717 }
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2718
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2719
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2720 static GList *zephyr_actions(GaimPlugin *plugin, gpointer context)
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2721 {
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2722 GList *list = NULL;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2723 GaimPluginAction *act = NULL;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2724
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2725 act = gaim_plugin_action_new(_("Resubscribe"), zephyr_action_resubscribe);
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2726 list = g_list_append(list, act);
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2727
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2728 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
2729 list = g_list_append(list,act);
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2730
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2731 return list;
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2732 }
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2733
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
2734 static GaimPlugin *my_protocol = NULL;
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2735
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2736 static GaimPluginProtocolInfo prpl_info = {
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2737 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_NO_PASSWORD,
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2738 NULL, /* ??? user_splits */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2739 NULL, /* ??? protocol_options */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2740 NO_BUDDY_ICONS,
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2741 zephyr_list_icon,
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2742 NULL, /* ??? list_emblems */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2743 NULL, /* ??? status_text */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2744 NULL, /* ??? tooltip_text */
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2745 zephyr_status_types, /* status_types */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2746 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
2747 zephyr_chat_info, /* chat_info */
9754
4a8bf81b82ae [gaim-migrate @ 10621]
Luke Schierer <lschiere@pidgin.im>
parents: 9741
diff changeset
2748 NULL, /* chat_info_defaults */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2749 zephyr_login, /* login */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2750 zephyr_close, /* close */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2751 zephyr_send_im, /* send_im */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2752 NULL, /* XXX set info (Location?) */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2753 zephyr_send_typing, /* send_typing */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2754 zephyr_zloc, /* get_info */
9986
cf27dea1d0a5 [gaim-migrate @ 10898]
Luke Schierer <lschiere@pidgin.im>
parents: 9943
diff changeset
2755 zephyr_set_status, /* set_status */
9478
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2756 NULL, /* ??? set idle */
0efa260e384f [gaim-migrate @ 10303]
Luke Schierer <lschiere@pidgin.im>
parents: 9475
diff changeset
2757 NULL, /* change password */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2758 NULL, /* add_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2759 NULL, /* add_buddies */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2760 NULL, /* remove_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2761 NULL, /* remove_buddies */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2762 zephyr_add_permit, /* add_permit */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2763 zephyr_add_deny, /* add_deny */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2764 zephyr_remove_permit, /* remove_permit */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2765 zephyr_remove_deny, /* remove_deny */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2766 zephyr_set_permit_deny, /* set_permit_deny */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2767 NULL, /* warn -- not supported in zephyr */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2768 zephyr_join_chat, /* join_chat */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2769 NULL, /* reject_chat -- No chat invites*/
9917
e74eb0d11f86 [gaim-migrate @ 10809]
Luke Schierer <lschiere@pidgin.im>
parents: 9912
diff changeset
2770 zephyr_get_chat_name, /* get_chat_name */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2771 NULL, /* chat_invite -- No chat invites*/
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2772 zephyr_chat_leave, /* chat_leave */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2773 NULL, /* chat_whisper -- No "whispering"*/
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2774 zephyr_chat_send, /* chat_send */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2775 NULL, /* keepalive -- Not necessary*/
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2776 NULL, /* register_user -- Not supported*/
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2777 NULL, /* XXX get_cb_info */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2778 NULL, /* get_cb_away */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2779 NULL, /* alias_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2780 NULL, /* group_buddy */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2781 NULL, /* rename_group */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2782 NULL, /* buddy_free */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2783 NULL, /* convo_closed */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2784 zephyr_normalize, /* normalize */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2785 NULL, /* XXX set_buddy_icon */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2786 NULL, /* remove_group */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2787 NULL, /* XXX get_cb_real_name */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2788 zephyr_chat_set_topic, /* set_chat_topic */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2789 zephyr_find_blist_chat, /* find_blist_chat */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2790 NULL, /* roomlist_get_list */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2791 NULL, /* roomlist_cancel */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2792 NULL, /* roomlist_expand_category */
9475
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2793 NULL, /* can_receive_file */
7a65fdba750f [gaim-migrate @ 10300]
Luke Schierer <lschiere@pidgin.im>
parents: 9473
diff changeset
2794 NULL /* send_file */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
2795 };
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2796
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2797 static GaimPluginInfo info = {
9943
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9927
diff changeset
2798 GAIM_PLUGIN_MAGIC,
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9927
diff changeset
2799 GAIM_MAJOR_VERSION,
f8e395a054e2 [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9927
diff changeset
2800 GAIM_MINOR_VERSION,
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2801 GAIM_PLUGIN_PROTOCOL, /**< type */
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2802 NULL, /**< ui_requirement */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2803 0, /**< flags */
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2804 NULL, /**< dependencies */
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2805 GAIM_PRIORITY_DEFAULT, /**< priority */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
2806
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2807 "prpl-zephyr", /**< id */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2808 "Zephyr", /**< name */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2809 VERSION, /**< version */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2810 /** summary */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
2811 N_("Zephyr Protocol Plugin"),
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2812 /** description */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
2813 N_("Zephyr Protocol Plugin"),
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2814 NULL, /**< author */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2815 GAIM_WEBSITE, /**< homepage */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
2816
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2817 NULL, /**< load */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2818 NULL, /**< unload */
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2819 NULL, /**< destroy */
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
2820
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2821 NULL, /**< ui_info */
8993
294ae6548d4e [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8954
diff changeset
2822 &prpl_info, /**< extra_info */
294ae6548d4e [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8954
diff changeset
2823 NULL,
9427
66b3f54527e6 [gaim-migrate @ 10245]
Luke Schierer <lschiere@pidgin.im>
parents: 9426
diff changeset
2824 zephyr_actions
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
2825 };
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
2826
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2827 static void init_plugin(GaimPlugin * plugin)
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
2828 {
8212
ad164c1ca79d [gaim-migrate @ 8935]
Luke Schierer <lschiere@pidgin.im>
parents: 8170
diff changeset
2829 GaimAccountOption *option;
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2830 char *tmp = get_exposure_level();
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2831
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2832 option = gaim_account_option_bool_new("Use tzc", "use_tzc", FALSE);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2833 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2834
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2835 option = gaim_account_option_string_new("tzc command", "tzc_command", "/usr/bin/tzc -e %s");
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2836 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2837
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2838 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
2839 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
2840
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2841 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
2842 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
2843
10038
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2844 option = gaim_account_option_bool_new(_("Import from .anyone"), "read_anyone", TRUE);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2845 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2846
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2847 option = gaim_account_option_bool_new(_("Import from .zephyr.subs"), "read_zsubs", TRUE);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2848 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2849
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2850 option = gaim_account_option_string_new(_("Realm"), "realm", "");
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2851 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2852
eb8ccdd6f5f2 [gaim-migrate @ 10997]
Luke Schierer <lschiere@pidgin.im>
parents: 10009
diff changeset
2853 option = gaim_account_option_string_new(_("Exposure"), "exposure_level", tmp?tmp: EXPOSE_REALMVIS);
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2854 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
2855
8644
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2856 option = gaim_account_option_string_new(_("Encoding"), "encoding", ZEPHYR_FALLBACK_CHARSET);
bdc92fcf1277 [gaim-migrate @ 9396]
Mark Doliner <mark@kingant.net>
parents: 8641
diff changeset
2857 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
2858
5205
fefad67de2c7 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5202
diff changeset
2859 my_protocol = plugin;
9896
a806e5150eca [gaim-migrate @ 10785]
Luke Schierer <lschiere@pidgin.im>
parents: 9846
diff changeset
2860 zephyr_register_slash_commands();
2086
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2861 }
424a40f12a6c [gaim-migrate @ 2096]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2862
5920
7d385de2f9cd [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
2863 GAIM_INIT_PLUGIN(zephyr, init_plugin, info);