Mercurial > pidgin
annotate plugins/zephyr/zephyr.c @ 1999:591ebfe8ec00
[gaim-migrate @ 2009]
can be in two rooms of the same name
committer: Tailor Script <tailor@pidgin.im>
| author | Eric Warmenhoven <eric@warmenhoven.org> |
|---|---|
| date | Tue, 12 Jun 2001 07:57:27 +0000 |
| parents | 8de58cd2892f |
| children |
| rev | line source |
|---|---|
| 1700 | 1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ |
| 2 /* | |
| 3 * gaim | |
| 4 * | |
| 5 * Copyright (C) 1998-2001, Mark Spencer <markster@marko.net> | |
| 6 * Some code borrowed from GtkZephyr, by | |
| 7 * Jag/Sean Dilda <agrajag@linuxpower.org>/<smdilda@unity.ncsu.edu> | |
| 8 * http://gtkzephyr.linuxpower.org/ | |
| 9 * | |
| 10 * This program is free software; you can redistribute it and/or modify | |
| 11 * it under the terms of the GNU General Public License as published by | |
| 12 * the Free Software Foundation; either version 2 of the License, or | |
| 13 * (at your option) any later version. | |
| 14 * | |
| 15 * This program is distributed in the hope that it will be useful, | |
| 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 18 * GNU General Public License for more details. | |
| 19 * | |
| 20 * You should have received a copy of the GNU General Public License | |
| 21 * along with this program; if not, write to the Free Software | |
| 22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 23 * | |
| 24 */ | |
| 25 | |
| 26 #ifdef HAVE_CONFIG_H | |
| 27 #include "config.h" | |
| 28 #endif | |
| 29 | |
| 30 #include <gtk/gtk.h> | |
| 31 #include <string.h> | |
|
1940
8de58cd2892f
[gaim-migrate @ 1950]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1812
diff
changeset
|
32 #include <stdlib.h> |
| 1700 | 33 #include "gaim.h" |
| 34 #include "prpl.h" | |
| 35 #include "zephyr/zephyr.h" | |
| 36 | |
|
1940
8de58cd2892f
[gaim-migrate @ 1950]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1812
diff
changeset
|
37 extern Code_t ZGetLocations(ZLocations_t *, int *); |
|
8de58cd2892f
[gaim-migrate @ 1950]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1812
diff
changeset
|
38 extern Code_t ZSetLocation(char *); |
|
8de58cd2892f
[gaim-migrate @ 1950]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1812
diff
changeset
|
39 extern Code_t ZUnsetLocation(); |
|
8de58cd2892f
[gaim-migrate @ 1950]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1812
diff
changeset
|
40 |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
41 typedef struct _zframe zframe; |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
42 typedef struct _zephyr_triple zephyr_triple; |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
43 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
44 /* struct I need for zephyr_to_html */ |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
45 struct _zframe { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
46 /* true for everything but @color, since inside the parens of that one is |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
47 * the color. */ |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
48 gboolean has_closer; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
49 /* </i>, </font>, </b>, etc. */ |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
50 char *closing; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
51 /* text including the opening html thingie. */ |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
52 GString *text; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
53 struct _zframe *enclosing; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
54 }; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
55 |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
56 struct _zephyr_triple { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
57 char *class; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
58 char *instance; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
59 char *recipient; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
60 char *name; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
61 gboolean open; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
62 int id; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
63 }; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
64 |
| 1700 | 65 char *name() |
| 66 { | |
| 67 return "Zephyr"; | |
| 68 } | |
| 69 | |
| 70 char *description() | |
| 71 { | |
| 72 return "Allows gaim to use the Zephyr protocol"; | |
| 73 } | |
| 74 | |
| 75 static char *zephyr_name() | |
| 76 { | |
| 77 return "Zephyr"; | |
| 78 } | |
| 79 | |
| 80 #define z_call(func) if (func != ZERR_NONE)\ | |
| 81 return; | |
| 82 #define z_call_r(func) if (func != ZERR_NONE)\ | |
| 83 return TRUE; | |
| 84 #define z_call_s(func, err) if (func != ZERR_NONE) {\ | |
| 85 hide_login_progress(zgc, err);\ | |
| 86 signoff(zgc);\ | |
| 87 return;\ | |
| 88 } | |
| 89 | |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
90 static char *zephyr_normalize(const char *); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
91 |
| 1700 | 92 /* this is so bad, and if Zephyr weren't so fucked up to begin with I |
| 93 * wouldn't do this. but it is so i will. */ | |
| 94 static guint32 nottimer = 0; | |
| 95 static guint32 loctimer = 0; | |
| 96 struct gaim_connection *zgc = NULL; | |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
97 static GList *pending_zloc_names = NULL; |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
98 static GSList *subscrips = NULL; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
99 static int last_id = 0; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
100 static GtkWidget *class_entry; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
101 static GtkWidget *inst_entry; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
102 static GtkWidget *recip_entry; |
| 1700 | 103 |
| 104 /* just for debugging | |
| 105 static void handle_unknown(ZNotice_t notice) | |
| 106 { | |
| 107 g_print("z_packet: %s\n", notice.z_packet); | |
| 108 g_print("z_version: %s\n", notice.z_version); | |
| 109 g_print("z_kind: %d\n", notice.z_kind); | |
| 110 g_print("z_class: %s\n", notice.z_class); | |
| 111 g_print("z_class_inst: %s\n", notice.z_class_inst); | |
| 112 g_print("z_opcode: %s\n", notice.z_opcode); | |
| 113 g_print("z_sender: %s\n", notice.z_sender); | |
| 114 g_print("z_recipient: %s\n", notice.z_recipient); | |
| 115 g_print("z_message: %s\n", notice.z_message); | |
| 116 g_print("z_message_len: %d\n", notice.z_message_len); | |
| 117 g_print("\n"); | |
| 118 } | |
| 119 */ | |
| 120 | |
|
1940
8de58cd2892f
[gaim-migrate @ 1950]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1812
diff
changeset
|
121 static zephyr_triple *new_triple(const char *c, const char *i, const char *r) |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
122 { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
123 zephyr_triple *zt; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
124 zt = g_new0(zephyr_triple, 1); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
125 zt->class = g_strdup(c); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
126 zt->instance = g_strdup(i); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
127 zt->recipient = g_strdup(r); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
128 zt->name = g_strdup_printf("%s,%s,%s", c, i, r); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
129 zt->id = ++last_id; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
130 zt->open = FALSE; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
131 return zt; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
132 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
133 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
134 static void free_triple(zephyr_triple *zt) |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
135 { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
136 g_free(zt->class); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
137 g_free(zt->instance); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
138 g_free(zt->recipient); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
139 g_free(zt->name); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
140 g_free(zt); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
141 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
142 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
143 /* returns true if zt1 is a subset of zt2, i.e. zt2 has the same thing or |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
144 * wildcards in each field of zt1. */ |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
145 static gboolean triple_subset(zephyr_triple *zt1, zephyr_triple *zt2) |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
146 { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
147 if (g_strcasecmp(zt2->class, zt1->class) && |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
148 g_strcasecmp(zt2->class, "*")) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
149 return FALSE; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
150 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
151 if (g_strcasecmp(zt2->instance, zt1->instance) && |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
152 g_strcasecmp(zt2->instance, "*")) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
153 return FALSE; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
154 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
155 if (g_strcasecmp(zt2->recipient, zt1->recipient) && |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
156 g_strcasecmp(zt2->recipient, "*")) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
157 return FALSE; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
158 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
159 return TRUE; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
160 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
161 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
162 static zephyr_triple *find_sub_by_triple(zephyr_triple *zt) |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
163 { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
164 zephyr_triple *curr_t; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
165 GSList *curr = subscrips; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
166 while (curr) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
167 curr_t = curr->data; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
168 if (triple_subset(zt, curr_t)) |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
169 return curr_t; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
170 curr = curr->next; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
171 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
172 return NULL; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
173 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
174 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
175 static zephyr_triple *find_sub_by_id(int id) |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
176 { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
177 zephyr_triple *zt; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
178 GSList *curr = subscrips; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
179 while (curr) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
180 zt = curr->data; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
181 if (zt->id == id) |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
182 return zt; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
183 curr = curr->next; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
184 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
185 return NULL; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
186 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
187 |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
188 /* utility macros that are useful for zephyr_to_html */ |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
189 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
190 #define IS_OPENER(c) ((c == '{') || (c == '[') || (c == '(') || (c == '<')) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
191 #define IS_CLOSER(c) ((c == '}') || (c == ']') || (c == ')') || (c == '>')) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
192 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
193 /* this parses zephyr formatting and converts it to html. For example, if |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
194 * you pass in "@{@color(blue)@i(hello)}" you should get out |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
195 * "<font color=blue><i>hello</i></font>". */ |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
196 static char *zephyr_to_html(char *message) |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
197 { |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
198 int len, cnt; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
199 zframe *frames, *curr; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
200 char *ret; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
201 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
202 frames = g_new(zframe, 1); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
203 frames->text = g_string_new(""); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
204 frames->enclosing = NULL; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
205 frames->closing = ""; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
206 frames->has_closer = FALSE; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
207 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
208 len = strlen(message); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
209 cnt = 0; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
210 while (cnt <= len) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
211 if (message[cnt] == '@') { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
212 zframe *new_f; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
213 char *buf; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
214 int end; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
215 for (end=1; (cnt+end) <= len && |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
216 !IS_OPENER(message[cnt+end]); end++); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
217 buf = g_new0(char, end); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
218 if (end) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
219 g_snprintf(buf, end, "%s", message+cnt+1); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
220 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
221 if (!g_strcasecmp(buf, "italic") || |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
222 !g_strcasecmp(buf, "i")) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
223 new_f = g_new(zframe, 1); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
224 new_f->enclosing = frames; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
225 new_f->text = g_string_new("<i>"); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
226 new_f->closing = "</i>"; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
227 new_f->has_closer = TRUE; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
228 frames = new_f; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
229 cnt += end+1; /* cnt points to char after opener */ |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
230 } else if (!g_strcasecmp(buf, "bold") |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
231 || !g_strcasecmp(buf, "b")) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
232 new_f = g_new(zframe, 1); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
233 new_f->enclosing = frames; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
234 new_f->text = g_string_new("<b>"); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
235 new_f->closing = "</b>"; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
236 new_f->has_closer = TRUE; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
237 frames = new_f; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
238 cnt += end+1; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
239 } else if (!g_strcasecmp(buf, "color")) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
240 cnt += end+1; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
241 new_f = g_new(zframe, 1); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
242 new_f->enclosing = frames; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
243 new_f->text = g_string_new("<font color="); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
244 for (; (cnt <= len) && !IS_CLOSER(message[cnt]); cnt++) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
245 g_string_append_c(new_f->text, message[cnt]); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
246 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
247 cnt++; /* point to char after closer */ |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
248 g_string_append_c(new_f->text, '>'); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
249 new_f->closing = "</font>"; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
250 new_f->has_closer = FALSE; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
251 frames = new_f; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
252 } else if (!g_strcasecmp(buf, "")) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
253 new_f = g_new(zframe, 1); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
254 new_f->enclosing = frames; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
255 new_f->text = g_string_new(""); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
256 new_f->closing = ""; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
257 new_f->has_closer = TRUE; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
258 frames = new_f; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
259 cnt += end+1; /* cnt points to char after opener */ |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
260 } else { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
261 if ((cnt+end) > len) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
262 g_string_append_c(frames->text, '@'); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
263 cnt++; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
264 } else { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
265 /* unrecognized thingie. act like it's not there, but we |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
266 * still need to take care of the corresponding closer, |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
267 * make a frame that does nothing. */ |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
268 new_f = g_new(zframe, 1); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
269 new_f->enclosing = frames; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
270 new_f->text = g_string_new(""); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
271 new_f->closing = ""; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
272 new_f->has_closer = TRUE; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
273 frames = new_f; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
274 cnt += end+1; /* cnt points to char after opener */ |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
275 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
276 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
277 } else if (IS_CLOSER(message[cnt])) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
278 zframe *popped; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
279 gboolean last_had_closer; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
280 if (frames->enclosing) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
281 do { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
282 popped = frames; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
283 frames = frames->enclosing; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
284 g_string_append(frames->text, popped->text->str); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
285 g_string_append(frames->text, popped->closing); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
286 g_string_free(popped->text, TRUE); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
287 last_had_closer = popped->has_closer; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
288 g_free(popped); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
289 } while (frames && frames->enclosing && !last_had_closer); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
290 } else { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
291 g_string_append_c(frames->text, message[cnt]); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
292 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
293 cnt++; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
294 } else if (message[cnt] == '\n') { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
295 g_string_append(frames->text, "<br>"); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
296 cnt++; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
297 } else { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
298 g_string_append_c(frames->text, message[cnt++]); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
299 } |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
300 } |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
301 /* go through all the stuff that they didn't close */ |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
302 while (frames->enclosing) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
303 curr = frames; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
304 g_string_append(frames->enclosing->text, frames->text->str); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
305 g_string_append(frames->enclosing->text, frames->closing); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
306 g_string_free(frames->text, TRUE); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
307 frames = frames->enclosing; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
308 g_free(curr); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
309 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
310 ret = frames->text->str; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
311 g_string_free(frames->text, FALSE); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
312 g_free(frames); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
313 return ret; |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
314 } |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
315 |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
316 static gboolean pending_zloc(char *who) |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
317 { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
318 GList *curr; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
319 for (curr = pending_zloc_names; curr != NULL; curr = curr->next) { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
320 if (!g_strcasecmp(who, (char*)curr->data)) { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
321 g_free((char*)curr->data); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
322 pending_zloc_names = g_list_remove(pending_zloc_names, curr->data); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
323 return TRUE; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
324 } |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
325 } |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
326 return FALSE; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
327 } |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
328 |
| 1700 | 329 static void handle_message(ZNotice_t notice, struct sockaddr_in from) |
| 330 { | |
| 331 if (!g_strcasecmp(notice.z_class, LOGIN_CLASS)) { | |
| 332 /* well, we'll be updating in 2 seconds anyway, might as well ignore this. */ | |
| 333 } else if (!g_strcasecmp(notice.z_class, LOCATE_CLASS)) { | |
| 334 if (!g_strcasecmp(notice.z_opcode, LOCATE_LOCATE)) { | |
| 335 int nlocs; | |
| 336 char *user; | |
| 337 struct buddy *b; | |
| 338 | |
| 339 if (ZParseLocations(¬ice, NULL, &nlocs, &user) != ZERR_NONE) | |
| 340 return; | |
| 341 if ((b = find_buddy(zgc, user)) == NULL) { | |
| 342 char *e = strchr(user, '@'); | |
| 343 if (e) *e = '\0'; | |
| 344 b = find_buddy(zgc, user); | |
| 345 } | |
| 346 if (!b) { | |
| 347 free(user); | |
| 348 return; | |
| 349 } | |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
350 if (pending_zloc(b->name)) { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
351 ZLocations_t locs; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
352 int one = 1; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
353 GString *str = g_string_new(""); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
354 g_string_sprintfa(str, "<b>User:</b> %s<br>" |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
355 "<b>Alias:</b> %s<br>", |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
356 b->name, b->show); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
357 if (!nlocs) { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
358 g_string_sprintfa(str, "<br>Hidden or not logged-in"); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
359 } |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
360 for (; nlocs > 0; nlocs--) { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
361 ZGetLocations(&locs, &one); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
362 g_string_sprintfa(str, "<br>At %s since %s", locs.host, |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
363 locs.time); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
364 } |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
365 g_show_info_text(str->str); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
366 g_string_free(str, TRUE); |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
367 } else |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
368 serv_got_update(zgc, b->name, nlocs, 0, 0, 0, 0, 0); |
| 1700 | 369 |
| 370 free(user); | |
| 371 } | |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
372 } else { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
373 char *buf, *buf2; |
| 1700 | 374 char *ptr = notice.z_message + strlen(notice.z_message) + 1; |
| 375 int len = notice.z_message_len - (ptr - notice.z_message); | |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
376 int away; |
| 1700 | 377 if (len > 0) { |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
378 buf = g_malloc(len + 1); |
| 1700 | 379 g_snprintf(buf, len + 1, "%s", ptr); |
| 380 g_strchomp(buf); | |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
381 buf2 = zephyr_to_html(buf); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
382 g_free(buf); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
383 if (!g_strcasecmp(notice.z_class, "MESSAGE") && |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
384 !g_strcasecmp(notice.z_class_inst, "PERSONAL")) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
385 if (!g_strcasecmp(notice.z_message, "Automated reply:")) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
386 away = TRUE; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
387 else |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
388 away = FALSE; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
389 len = MAX(BUF_LONG, strlen(buf2)); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
390 buf = g_malloc(len + 1); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
391 g_snprintf(buf, len + 1, "%s", buf2); |
| 1764 | 392 serv_got_im(zgc, notice.z_sender, buf, 0, time((time_t)NULL)); |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
393 g_free(buf); |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
394 } else { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
395 zephyr_triple *zt1, *zt2; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
396 zt1 = new_triple(notice.z_class, notice.z_class_inst, |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
397 notice.z_recipient); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
398 zt2 = find_sub_by_triple(zt1); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
399 if (!zt2) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
400 /* we shouldn't be subscribed to this message. ignore. */ |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
401 } else { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
402 len = MAX(BUF_LONG, strlen(buf2)); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
403 buf = g_malloc(len + 1); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
404 g_snprintf(buf, len + 1, "%s", buf2); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
405 if (!zt2->open) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
406 zt2->open = TRUE; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
407 serv_got_joined_chat(zgc, zt2->id, zt2->name); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
408 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
409 serv_got_chat_in(zgc, zt2->id, notice.z_sender, FALSE, |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
410 buf, time((time_t)NULL)); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
411 g_free(buf); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
412 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
413 free_triple(zt1); |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
414 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
415 g_free(buf2); |
| 1700 | 416 } |
| 417 } | |
| 418 } | |
| 419 | |
| 420 static gint check_notify(gpointer data) | |
| 421 { | |
| 422 while (ZPending()) { | |
| 423 ZNotice_t notice; | |
| 424 struct sockaddr_in from; | |
| 425 z_call_r(ZReceiveNotice(¬ice, &from)); | |
| 426 | |
| 427 switch (notice.z_kind) { | |
| 428 case UNSAFE: | |
| 429 case UNACKED: | |
| 430 case ACKED: | |
| 431 handle_message(notice, from); | |
| 432 break; | |
| 433 default: | |
| 434 /* we'll just ignore things for now */ | |
| 435 debug_printf("ZEPHYR: Unhandled Notice\n"); | |
| 436 break; | |
| 437 } | |
| 438 | |
| 439 ZFreeNotice(¬ice); | |
| 440 } | |
| 441 | |
| 442 return TRUE; | |
| 443 } | |
| 444 | |
| 445 static gint check_loc(gpointer data) | |
| 446 { | |
| 447 GSList *gr, *m; | |
| 448 ZAsyncLocateData_t ald; | |
| 449 | |
| 450 ald.user = NULL; | |
| 451 memset(&(ald.uid), 0, sizeof(ZUnique_Id_t)); | |
| 452 ald.version = NULL; | |
| 453 | |
| 454 gr = zgc->groups; | |
| 455 while (gr) { | |
| 456 struct group *g = gr->data; | |
| 457 m = g->members; | |
| 458 while (m) { | |
| 459 struct buddy *b = m->data; | |
| 460 char *chk; | |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
461 chk = zephyr_normalize(b->name); |
| 1700 | 462 /* doesn't matter if this fails or not; we'll just move on to the next one */ |
| 463 ZRequestLocations(chk, &ald, UNACKED, ZAUTH); | |
|
1794
60b3fd819cce
[gaim-migrate @ 1804]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1764
diff
changeset
|
464 free(ald.user); |
|
60b3fd819cce
[gaim-migrate @ 1804]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1764
diff
changeset
|
465 free(ald.version); |
| 1700 | 466 m = m->next; |
| 467 } | |
| 468 gr = gr->next; | |
| 469 } | |
| 470 | |
| 471 return TRUE; | |
| 472 } | |
| 473 | |
| 474 static char *get_exposure_level() | |
| 475 { | |
| 476 char *exposure = ZGetVariable("exposure"); | |
| 477 | |
| 478 if (!exposure) | |
| 479 return EXPOSE_REALMVIS; | |
| 480 if (!g_strcasecmp(exposure, EXPOSE_NONE)) | |
| 481 return EXPOSE_NONE; | |
| 482 if (!g_strcasecmp(exposure, EXPOSE_OPSTAFF)) | |
| 483 return EXPOSE_OPSTAFF; | |
| 484 if (!g_strcasecmp(exposure, EXPOSE_REALMANN)) | |
| 485 return EXPOSE_REALMANN; | |
| 486 if (!g_strcasecmp(exposure, EXPOSE_NETVIS)) | |
| 487 return EXPOSE_NETVIS; | |
| 488 if (!g_strcasecmp(exposure, EXPOSE_NETANN)) | |
| 489 return EXPOSE_NETANN; | |
| 490 return EXPOSE_REALMVIS; | |
| 491 } | |
| 492 | |
| 493 static void strip_comments(char *str) | |
| 494 { | |
| 495 char *tmp = strchr(str, '#'); | |
| 496 if (tmp) | |
| 497 *tmp = '\0'; | |
| 498 g_strchug(str); | |
| 499 g_strchomp(str); | |
| 500 } | |
| 501 | |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
502 static void process_zsubs() |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
503 { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
504 FILE *f; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
505 gchar *fname; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
506 gchar buff[BUFSIZ]; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
507 |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
508 fname = g_strdup_printf("%s/.zephyr.subs", g_getenv("HOME")); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
509 f = fopen(fname, "r"); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
510 if (f) { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
511 char **triple; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
512 ZSubscription_t sub; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
513 char *recip; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
514 while (fgets(buff, BUFSIZ, f)) { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
515 strip_comments(buff); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
516 if (buff[0]) { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
517 triple = g_strsplit(buff, ",", 3); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
518 if (triple[0] && triple[1] && triple[2]) { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
519 sub.zsub_class = triple[0]; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
520 sub.zsub_classinst = triple[1]; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
521 if (!g_strcasecmp(triple[2], "%me%")) { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
522 recip = g_strdup_printf("%s@%s", g_getenv("USER"), |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
523 ZGetRealm()); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
524 } else if (!g_strcasecmp(triple[2], "*")) { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
525 /* wildcard */ |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
526 recip = g_strdup_printf("@%s", ZGetRealm()); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
527 } else { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
528 recip = g_strdup(triple[2]); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
529 } |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
530 sub.zsub_recipient = recip; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
531 if (ZSubscribeTo(&sub, 1, 0) != ZERR_NONE) { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
532 debug_printf("Zephyr: Couldn't subscribe to %s, %s, " |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
533 "%s\n", |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
534 sub.zsub_class, |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
535 sub.zsub_classinst, |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
536 sub.zsub_recipient); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
537 } |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
538 subscrips = g_slist_append(subscrips, |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
539 new_triple(triple[0], triple[1], recip)); |
|
1812
b012f6b9095b
[gaim-migrate @ 1822]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1808
diff
changeset
|
540 g_free(recip); |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
541 } |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
542 g_strfreev(triple); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
543 } |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
544 } |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
545 } |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
546 } |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
547 |
| 1700 | 548 static void process_anyone() |
| 549 { | |
| 550 FILE *fd; | |
| 551 gchar buff[BUFSIZ], *filename; | |
| 552 | |
| 553 filename = g_strconcat(g_get_home_dir(), "/.anyone", NULL); | |
| 554 if ((fd = fopen(filename, "r")) != NULL) { | |
| 555 while (fgets(buff, BUFSIZ, fd)) { | |
| 556 strip_comments(buff); | |
| 557 if (buff[0]) | |
| 558 add_buddy(zgc, "Anyone", buff, buff); | |
| 559 } | |
| 560 fclose(fd); | |
| 561 } | |
| 562 g_free(filename); | |
| 563 } | |
| 564 | |
| 565 static void zephyr_login(struct aim_user *user) | |
| 566 { | |
| 567 ZSubscription_t sub; | |
| 568 | |
| 569 if (zgc) { | |
| 570 do_error_dialog("Already logged in with Zephyr", "Zephyr"); | |
| 571 return; | |
| 572 } | |
| 573 | |
| 574 zgc = new_gaim_conn(user); | |
| 575 | |
| 576 z_call_s(ZInitialize(), "Couldn't initialize zephyr"); | |
| 577 z_call_s(ZOpenPort(NULL), "Couldn't open port"); | |
| 578 z_call_s(ZSetLocation(get_exposure_level()), "Couldn't set location"); | |
| 579 | |
| 580 sub.zsub_class = "MESSAGE"; | |
| 581 sub.zsub_classinst = "PERSONAL"; | |
| 582 sub.zsub_recipient = ZGetSender(); | |
| 583 | |
| 584 /* we don't care if this fails. i'm lying right now. */ | |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
585 if (ZSubscribeTo(&sub, 1, 0) != ZERR_NONE) { |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
586 debug_printf("Zephyr: Couldn't subscribe to messages!\n"); |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
587 } |
| 1700 | 588 |
| 589 account_online(zgc); | |
| 590 serv_finish_login(zgc); | |
| 591 | |
| 592 if (bud_list_cache_exists(zgc)) | |
| 593 do_import(NULL, zgc); | |
| 594 process_anyone(); | |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
595 process_zsubs(); |
| 1700 | 596 |
| 597 nottimer = gtk_timeout_add(100, check_notify, NULL); | |
| 598 loctimer = gtk_timeout_add(2000, check_loc, NULL); | |
| 599 } | |
| 600 | |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
601 static void write_zsubs() |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
602 { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
603 GSList *s = subscrips; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
604 zephyr_triple *zt; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
605 FILE *fd; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
606 char *fname; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
607 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
608 fname = g_strdup_printf("%s/.zephyr.subs", g_get_home_dir()); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
609 fd = fopen(fname, "w"); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
610 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
611 if (!fd) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
612 g_free(fname); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
613 return; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
614 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
615 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
616 while (s) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
617 zt = s->data; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
618 fprintf(fd, "%s\n", zt->name); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
619 s = s->next; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
620 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
621 g_free(fname); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
622 fclose(fd); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
623 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
624 |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
625 static void write_anyone() |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
626 { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
627 GSList *gr, *m; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
628 struct group *g; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
629 struct buddy *b; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
630 char *ptr, *fname; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
631 FILE *fd; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
632 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
633 fname = g_strdup_printf("%s/.anyone", g_get_home_dir()); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
634 fd = fopen(fname, "w"); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
635 if (!fd) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
636 g_free(fname); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
637 return; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
638 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
639 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
640 gr = zgc->groups; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
641 while (gr) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
642 g = gr->data; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
643 m = g->members; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
644 while (m) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
645 b = m->data; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
646 if ((ptr = strchr(b->name, '@')) != NULL) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
647 *ptr = '\0'; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
648 fprintf(fd, "%s\n", b->name); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
649 if (ptr) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
650 *ptr = '@'; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
651 m = m->next; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
652 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
653 gr = gr->next; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
654 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
655 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
656 fclose(fd); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
657 g_free(fname); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
658 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
659 |
| 1700 | 660 static void zephyr_close(struct gaim_connection *gc) |
| 661 { | |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
662 GList *l; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
663 GSList *s; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
664 l = pending_zloc_names; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
665 while (l) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
666 g_free((char*)l->data); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
667 l = l->next; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
668 } |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
669 g_list_free(pending_zloc_names); |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
670 |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
671 write_anyone(); |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
672 write_zsubs(); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
673 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
674 s = subscrips; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
675 while (s) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
676 free_triple((zephyr_triple*)s->data); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
677 s = s->next; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
678 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
679 g_slist_free(subscrips); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
680 |
| 1700 | 681 if (nottimer) |
| 682 gtk_timeout_remove(nottimer); | |
| 683 nottimer = 0; | |
| 684 if (loctimer) | |
| 685 gtk_timeout_remove(loctimer); | |
| 686 loctimer = 0; | |
| 687 zgc = NULL; | |
| 688 z_call(ZCancelSubscriptions(0)); | |
| 689 z_call(ZUnsetLocation()); | |
| 690 z_call(ZClosePort()); | |
| 691 } | |
| 692 | |
| 693 static void zephyr_add_buddy(struct gaim_connection *gc, char *buddy) { } | |
| 694 static void zephyr_remove_buddy(struct gaim_connection *gc, char *buddy) { } | |
| 695 | |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
696 static void zephyr_chat_send(struct gaim_connection *gc, int id, char *im) |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
697 { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
698 ZNotice_t notice; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
699 zephyr_triple *zt; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
700 char *buf; |
|
1940
8de58cd2892f
[gaim-migrate @ 1950]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1812
diff
changeset
|
701 const char *sig; |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
702 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
703 zt = find_sub_by_id(id); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
704 if (!zt) |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
705 /* this should never happen. */ |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
706 return; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
707 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
708 sig = ZGetVariable("zwrite-signature"); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
709 if (!sig) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
710 sig = g_get_real_name(); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
711 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
712 buf = g_strdup_printf("%s%c%s", sig, '\0', im); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
713 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
714 bzero((char *)¬ice, sizeof(notice)); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
715 notice.z_kind = ACKED; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
716 notice.z_port = 0; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
717 notice.z_opcode = ""; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
718 notice.z_class = zt->class; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
719 notice.z_class_inst = zt->instance; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
720 if (!g_strcasecmp(zt->recipient, "*")) |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
721 notice.z_recipient = zephyr_normalize(""); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
722 else |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
723 notice.z_recipient = zephyr_normalize(zt->recipient); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
724 notice.z_sender = 0; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
725 notice.z_default_format = |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
726 "Class $class, Instance $instance:\n" |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
727 "To: @bold($recipient) at $time $date\n" |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
728 "From: @bold($1) <$sender>\n\n$2"; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
729 notice.z_message_len = strlen(im) + strlen(sig) + 4; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
730 notice.z_message = buf; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
731 ZSendNotice(¬ice, ZAUTH); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
732 g_free(buf); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
733 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
734 |
| 1700 | 735 static void zephyr_send_im(struct gaim_connection *gc, char *who, char *im, int away) { |
| 736 ZNotice_t notice; | |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
737 char *buf; |
|
1940
8de58cd2892f
[gaim-migrate @ 1950]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1812
diff
changeset
|
738 const char *sig; |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
739 |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
740 if (away) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
741 sig = "Automated reply:"; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
742 else { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
743 sig = ZGetVariable("zwrite-signature"); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
744 if (!sig) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
745 sig = g_get_real_name(); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
746 } |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
747 } |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
748 buf = g_strdup_printf("%s%c%s", sig, '\0', im); |
| 1700 | 749 |
| 750 bzero((char *)¬ice, sizeof(notice)); | |
| 751 notice.z_kind = ACKED; | |
| 752 notice.z_port = 0; | |
| 753 notice.z_opcode = ""; | |
| 754 notice.z_class = "MESSAGE"; | |
| 755 notice.z_class_inst = "PERSONAL"; | |
| 756 notice.z_sender = 0; | |
| 757 notice.z_recipient = who; | |
| 758 notice.z_default_format = | |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
759 "Class $class, Instance $instance:\n" |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
760 "To: @bold($recipient) at $time $date\n" |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
761 "From: @bold($1) <$sender>\n\n$2"; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
762 notice.z_message_len = strlen(im) + strlen(sig) + 4; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
763 notice.z_message = buf; |
| 1700 | 764 ZSendNotice(¬ice, ZAUTH); |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
765 g_free(buf); |
| 1700 | 766 } |
| 767 | |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
768 static char *zephyr_normalize(const char *orig) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
769 { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
770 static char buf[80]; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
771 if (strchr(orig, '@')) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
772 g_snprintf(buf, 80, "%s", orig); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
773 } else { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
774 g_snprintf(buf, 80, "%s@%s", orig, ZGetRealm()); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
775 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
776 return buf; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
777 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
778 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
779 static void zephyr_zloc(struct gaim_connection *gc, char *who) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
780 { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
781 ZAsyncLocateData_t ald; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
782 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
783 if (ZRequestLocations(zephyr_normalize(who), &ald, UNACKED, ZAUTH) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
784 != ZERR_NONE) { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
785 return; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
786 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
787 pending_zloc_names = g_list_append(pending_zloc_names, |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
788 g_strdup(zephyr_normalize(who))); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
789 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
790 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
791 static void info_callback(GtkObject *obj, char *who) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
792 { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
793 zephyr_zloc(gtk_object_get_user_data(obj), who); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
794 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
795 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
796 static void zephyr_buddy_menu(GtkWidget *menu, struct gaim_connection *gc, char *who) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
797 { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
798 GtkWidget *button; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
799 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
800 button = gtk_menu_item_new_with_label(_("ZLocate")); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
801 gtk_signal_connect(GTK_OBJECT(button), "activate", |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
802 GTK_SIGNAL_FUNC(info_callback), who); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
803 gtk_object_set_user_data(GTK_OBJECT(button), gc); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
804 gtk_menu_append(GTK_MENU(menu), button); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
805 gtk_widget_show(button); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
806 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
807 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
808 static void zephyr_set_away(struct gaim_connection *gc, char *state, char *msg) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
809 { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
810 if (gc->away) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
811 g_free(gc->away); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
812 gc->away = NULL; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
813 if (!g_strcasecmp(state, "Hidden")) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
814 ZSetLocation(EXPOSE_OPSTAFF); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
815 else if (!g_strcasecmp(state, "Online")) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
816 ZSetLocation(get_exposure_level()); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
817 else /* state is GAIM_AWAY_CUSTOM */ if (msg) |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
818 gc->away = g_strdup(msg); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
819 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
820 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
821 static GList *zephyr_away_states() |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
822 { |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
823 GList *m = NULL; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
824 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
825 m = g_list_append(m, "Online"); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
826 m = g_list_append(m, GAIM_AWAY_CUSTOM); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
827 m = g_list_append(m, "Hidden"); |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
828 |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
829 return m; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
830 } |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
831 |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
832 static void zephyr_draw_jc(struct gaim_connection *gc, GtkWidget *vbox) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
833 GtkWidget *label; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
834 GtkWidget *rowbox; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
835 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
836 rowbox = gtk_hbox_new(FALSE, 5); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
837 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
838 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
839 label = gtk_label_new(_("Class:")); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
840 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 5); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
841 gtk_widget_show(label); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
842 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
843 class_entry = gtk_entry_new(); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
844 gtk_box_pack_end(GTK_BOX(rowbox), class_entry, FALSE, FALSE, 5); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
845 gtk_widget_show(class_entry); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
846 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
847 gtk_widget_show(rowbox); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
848 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
849 rowbox = gtk_hbox_new(FALSE, 5); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
850 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
851 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
852 label = gtk_label_new(_("Instance:")); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
853 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 5); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
854 gtk_widget_show(label); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
855 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
856 inst_entry = gtk_entry_new(); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
857 gtk_box_pack_end(GTK_BOX(rowbox), inst_entry, FALSE, FALSE, 5); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
858 gtk_widget_show(inst_entry); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
859 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
860 gtk_widget_show(rowbox); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
861 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
862 rowbox = gtk_hbox_new(FALSE, 5); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
863 gtk_box_pack_start(GTK_BOX(vbox), rowbox, FALSE, FALSE, 0); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
864 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
865 label = gtk_label_new(_("Recipient:")); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
866 gtk_box_pack_start(GTK_BOX(rowbox), label, FALSE, FALSE, 5); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
867 gtk_widget_show(label); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
868 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
869 recip_entry = gtk_entry_new(); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
870 gtk_box_pack_end(GTK_BOX(rowbox), recip_entry, FALSE, FALSE, 5); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
871 gtk_widget_show(recip_entry); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
872 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
873 gtk_widget_show(rowbox); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
874 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
875 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
876 static void zephyr_join_chat(struct gaim_connection *gc, int id, char *nm) |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
877 { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
878 ZSubscription_t sub; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
879 zephyr_triple *zt1, *zt2; |
|
1940
8de58cd2892f
[gaim-migrate @ 1950]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1812
diff
changeset
|
880 const char *classname; |
|
8de58cd2892f
[gaim-migrate @ 1950]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1812
diff
changeset
|
881 const char *instname; |
|
8de58cd2892f
[gaim-migrate @ 1950]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1812
diff
changeset
|
882 const char *recip; |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
883 char **splitted; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
884 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
885 if (!nm) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
886 splitted = NULL; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
887 classname = gtk_entry_get_text(GTK_ENTRY(class_entry)); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
888 instname = gtk_entry_get_text(GTK_ENTRY(inst_entry)); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
889 recip = gtk_entry_get_text(GTK_ENTRY(recip_entry)); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
890 if (!g_strcasecmp(recip, "%me%")) |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
891 recip = g_getenv("USER"); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
892 } else { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
893 splitted = g_strsplit(nm, ",", 3); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
894 if (!splitted[0] || !splitted[1] || !splitted[2]) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
895 g_strfreev(splitted); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
896 return; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
897 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
898 classname = g_strstrip(splitted[0]); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
899 instname = g_strstrip(splitted[1]); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
900 recip = g_strstrip(splitted[2]); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
901 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
902 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
903 zt1 = new_triple(classname, instname, recip); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
904 if (splitted) |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
905 g_strfreev(splitted); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
906 zt2 = find_sub_by_triple(zt1); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
907 if (zt2) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
908 free_triple(zt1); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
909 if (!zt2->open) |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
910 serv_got_joined_chat(gc, zt2->id, zt2->name); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
911 return; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
912 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
913 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
914 sub.zsub_class = zt1->class; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
915 sub.zsub_classinst = zt1->instance; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
916 sub.zsub_recipient = zt1->recipient; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
917 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
918 if (ZSubscribeTo(&sub, 1, 0) != ZERR_NONE) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
919 free_triple(zt1); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
920 return; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
921 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
922 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
923 subscrips = g_slist_append(subscrips, zt1); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
924 zt1->open = TRUE; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
925 serv_got_joined_chat(gc, zt1->id, zt1->name); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
926 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
927 |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
928 static void zephyr_chat_leave(struct gaim_connection *gc, int id) |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
929 { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
930 zephyr_triple *zt; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
931 zt = find_sub_by_id(id); |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
932 if (zt) { |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
933 zt->open = FALSE; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
934 zt->id = ++last_id; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
935 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
936 } |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
937 |
| 1700 | 938 static struct prpl *my_protocol = NULL; |
| 939 | |
| 940 void zephyr_init(struct prpl *ret) | |
| 941 { | |
| 942 ret->protocol = PROTO_ZEPHYR; | |
| 943 ret->name = zephyr_name; | |
| 944 ret->login = zephyr_login; | |
| 945 ret->close = zephyr_close; | |
| 946 ret->add_buddy = zephyr_add_buddy; | |
| 947 ret->remove_buddy = zephyr_remove_buddy; | |
| 948 ret->send_im = zephyr_send_im; | |
|
1719
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
949 ret->get_info = zephyr_zloc; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
950 ret->normalize = zephyr_normalize; |
|
5800449e7ecc
[gaim-migrate @ 1729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1700
diff
changeset
|
951 ret->buddy_menu = zephyr_buddy_menu; |
|
1726
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
952 ret->away_states = zephyr_away_states; |
|
004725b3a851
[gaim-migrate @ 1736]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1719
diff
changeset
|
953 ret->set_away = zephyr_set_away; |
|
1808
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
954 ret->draw_join_chat = zephyr_draw_jc; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
955 ret->join_chat = zephyr_join_chat; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
956 ret->chat_send = zephyr_chat_send; |
|
6a89897c8658
[gaim-migrate @ 1818]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1794
diff
changeset
|
957 ret->chat_leave = zephyr_chat_leave; |
| 1700 | 958 |
| 959 my_protocol = ret; | |
| 960 } | |
| 961 | |
| 962 char *gaim_plugin_init(GModule *handle) | |
| 963 { | |
| 964 load_protocol(zephyr_init, sizeof(struct prpl)); | |
| 965 return NULL; | |
| 966 } | |
| 967 | |
| 968 void gaim_plugin_remove() | |
| 969 { | |
| 970 struct prpl *p = find_prpl(PROTO_ZEPHYR); | |
| 971 if (p == my_protocol) | |
| 972 unload_protocol(p); | |
| 973 } |
