annotate src/protocols/zephyr/zephyr.c @ 10897:04cb7363260d

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