annotate src/protocols/zephyr/zephyr.c @ 9943:f8e395a054e2

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