annotate plugins/irc.c @ 1771:213607e89598

[gaim-migrate @ 1781] plug mem leak. don't show evil level if it decreased. mid's utf8 patch for jabber. my girlfriend got an accounting calculator today, you know, with the paper and the printing and things. it's kinda loud. she's really happy about having it. she had bought a different one yesterday but it didn't work so we returned it today. we also went to Albertson's and bought groceries. we bought 72 cans of soda for $15. That's 20 cents per soda. Not bad. we also bought a cow; i'm going to cook it tonight. ben&jerry's ice cream is good. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Mon, 30 Apr 2001 01:25:30 +0000
parents 1e0613d9526b
children 1b61db419774
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
987
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1 /*
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
2 * gaim - IRC Protocol Plugin
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
3 *
1672
7cb0cebd6d87 [gaim-migrate @ 1682]
Rob Flynn <gaim@robflynn.com>
parents: 1504
diff changeset
4 * Copyright (C) 2000-2001, Rob Flynn <rob@tgflinux.com>
987
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
5 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
6 *
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
10 * (at your option) any later version.
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
11 *
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
15 * GNU General Public License for more details.
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
16 *
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
20 *
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
21 */
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
22
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
23 #include "../config.h"
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
24
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
25
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
26 #include <netdb.h>
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
27 #include <gtk/gtk.h>
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
28 #include <unistd.h>
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
29 #include <errno.h>
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
30 #include <netinet/in.h>
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
31 #include <arpa/inet.h>
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
32 #include <fcntl.h>
987
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
33 #include <string.h>
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
34 #include <stdlib.h>
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
35 #include <stdio.h>
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
36 #include <time.h>
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
37 #include <sys/socket.h>
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
38 #include <sys/stat.h>
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
39 #include "multi.h"
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
40 #include "prpl.h"
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
41 #include "gaim.h"
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
42
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
43 #include "pixmaps/free_icon.xpm"
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
44
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
45 #define IRC_BUF_LEN 4096
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
46
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
47
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
48 static int chat_id = 0;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
49
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
50 struct irc_channel {
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
51 int id;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
52 gchar *name;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
53 };
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
54
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
55 struct irc_data {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
56 int fd;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
57 int inpa; /* used for non-block logins */
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
58
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
59 int timer;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
60
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
61 int totalblocks;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
62 int recblocks;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
63
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
64 GSList *templist;
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
65 GList *channels;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
66 };
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
67
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
68 static char *irc_name()
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
69 {
1008
1b99caffcd98 [gaim-migrate @ 1018]
Rob Flynn <gaim@robflynn.com>
parents: 987
diff changeset
70 return "IRC";
1b99caffcd98 [gaim-migrate @ 1018]
Rob Flynn <gaim@robflynn.com>
parents: 987
diff changeset
71 }
1b99caffcd98 [gaim-migrate @ 1018]
Rob Flynn <gaim@robflynn.com>
parents: 987
diff changeset
72
1675
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
73 static void irc_get_info(struct gaim_connection *gc, char *who);
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
74
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
75 char *name()
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
76 {
1008
1b99caffcd98 [gaim-migrate @ 1018]
Rob Flynn <gaim@robflynn.com>
parents: 987
diff changeset
77 return "IRC";
1b99caffcd98 [gaim-migrate @ 1018]
Rob Flynn <gaim@robflynn.com>
parents: 987
diff changeset
78 }
1b99caffcd98 [gaim-migrate @ 1018]
Rob Flynn <gaim@robflynn.com>
parents: 987
diff changeset
79
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
80 char *description()
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
81 {
1008
1b99caffcd98 [gaim-migrate @ 1018]
Rob Flynn <gaim@robflynn.com>
parents: 987
diff changeset
82 return "Allows gaim to use the IRC protocol";
1b99caffcd98 [gaim-migrate @ 1018]
Rob Flynn <gaim@robflynn.com>
parents: 987
diff changeset
83 }
1b99caffcd98 [gaim-migrate @ 1018]
Rob Flynn <gaim@robflynn.com>
parents: 987
diff changeset
84
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
85 static void irc_join_chat(struct gaim_connection *gc, int id, char *name)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
86 {
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
87 struct irc_data *idata = (struct irc_data *)gc->proto_data;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
88 gchar *buf = (gchar *) g_malloc(IRC_BUF_LEN + 1);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
89
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
90 g_snprintf(buf, IRC_BUF_LEN, "JOIN %s\n", name);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
91 write(idata->fd, buf, strlen(buf));
1742
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
92 write(idata->fd, buf, strlen(buf));
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
93
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
94 g_free(buf);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
95 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
96
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
97 static void irc_update_user(struct gaim_connection *gc, char *name, int status)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
98 {
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
99 struct irc_data *idata = (struct irc_data *)gc->proto_data;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
100 struct irc_channel *u;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
101 GSList *temp = idata->templist;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
102
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
103 /* Loop through our list */
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
104
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
105 while (temp) {
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
106 u = (struct irc_channel *)temp->data;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
107 if (g_strcasecmp(u->name, name) == 0) {
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
108 u->id = status;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
109 return;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
110 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
111
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
112 temp = g_slist_next(temp);
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
113 }
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
114 return;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
115 }
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
116
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
117 static void irc_request_buddy_update(struct gaim_connection *gc)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
118 {
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
119 struct irc_data *idata = (struct irc_data *)gc->proto_data;
1046
4593605da0e2 [gaim-migrate @ 1056]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1022
diff changeset
120 GSList *grp = gc->groups;
4593605da0e2 [gaim-migrate @ 1056]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1022
diff changeset
121 GSList *person;
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
122 struct group *g;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
123 struct buddy *b;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
124 struct irc_channel *u;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
125 gchar buf[IRC_BUF_LEN + 1];
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
126
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
127 if (idata->templist != NULL)
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
128 return;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
129
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
130 idata->recblocks = 0;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
131 idata->totalblocks = 1;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
132
1105
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
133 /* First, let's check to see if we have anyone on our buddylist */
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
134 if (!grp) {
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
135 return;
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
136 }
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
137
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
138 /* Send the first part of our request */
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
139 write(idata->fd, "ISON", 4);
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
140
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
141 /* Step through our list of groups */
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
142 while (grp) {
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
143
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
144 g = (struct group *)grp->data;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
145 person = g->members;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
146
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
147 while (person) {
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
148 b = (struct buddy *)person->data;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
149
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
150 /* We will store our buddy info here. I know, this is cheap
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
151 * but hey, its the exact same data structure. Why should we
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
152 * bother with making another one */
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
153
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
154 u = g_new0(struct irc_channel, 1);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
155 u->id = 0; /* Assume by default that they're offline */
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
156 u->name = strdup(b->name);
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
157
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
158 write(idata->fd, " ", 1);
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
159 write(idata->fd, u->name, strlen(u->name));
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
160 idata->templist = g_slist_append(idata->templist, u);
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
161
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
162 person = person->next;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
163 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
164
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
165 grp = g_slist_next(grp);
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
166 }
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
167 write(idata->fd, "\n", 1);
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
168 }
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
169
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
170
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
171 static void irc_send_im(struct gaim_connection *gc, char *who, char *message, int away)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
172 {
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
173
1742
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
174 struct irc_data *idata = (struct irc_data *)gc->proto_data;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
175 gchar *buf = (gchar *) g_malloc(IRC_BUF_LEN + 1);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
176
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
177 /* Before we actually send this, we should check to see if they're trying
1674
1127fa1b4c02 [gaim-migrate @ 1684]
Rob Flynn <gaim@robflynn.com>
parents: 1673
diff changeset
178 * To issue a command and handle it properly. */
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
179
1674
1127fa1b4c02 [gaim-migrate @ 1684]
Rob Flynn <gaim@robflynn.com>
parents: 1673
diff changeset
180 if (message[0] == '/')
1127fa1b4c02 [gaim-migrate @ 1684]
Rob Flynn <gaim@robflynn.com>
parents: 1673
diff changeset
181 {
1127fa1b4c02 [gaim-migrate @ 1684]
Rob Flynn <gaim@robflynn.com>
parents: 1673
diff changeset
182 /* I'll change the implementation of this a little later :-) */
1127fa1b4c02 [gaim-migrate @ 1684]
Rob Flynn <gaim@robflynn.com>
parents: 1673
diff changeset
183 if ((g_strncasecmp(message, "/me ", 4) == 0) && (strlen(message) > 4)) {
1127fa1b4c02 [gaim-migrate @ 1684]
Rob Flynn <gaim@robflynn.com>
parents: 1673
diff changeset
184 /* We have /me!! We have /me!! :-) */
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
185
1674
1127fa1b4c02 [gaim-migrate @ 1684]
Rob Flynn <gaim@robflynn.com>
parents: 1673
diff changeset
186 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
1127fa1b4c02 [gaim-migrate @ 1684]
Rob Flynn <gaim@robflynn.com>
parents: 1673
diff changeset
187 strcpy(temp, message + 4);
1127fa1b4c02 [gaim-migrate @ 1684]
Rob Flynn <gaim@robflynn.com>
parents: 1673
diff changeset
188 g_snprintf(buf, IRC_BUF_LEN, "PRIVMSG %s :%cACTION %s%c\n", who, '\001', temp, '\001');
1127fa1b4c02 [gaim-migrate @ 1684]
Rob Flynn <gaim@robflynn.com>
parents: 1673
diff changeset
189 g_free(temp);
1127fa1b4c02 [gaim-migrate @ 1684]
Rob Flynn <gaim@robflynn.com>
parents: 1673
diff changeset
190 }
1675
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
191 else if (!g_strncasecmp(message, "/whois ", 7) && (strlen(message) > 7)) {
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
192 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
193 strcpy(temp, message + 7);
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
194 irc_get_info(gc, temp);
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
195 g_free(temp);
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
196
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
197 return;
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
198 }
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
199
1674
1127fa1b4c02 [gaim-migrate @ 1684]
Rob Flynn <gaim@robflynn.com>
parents: 1673
diff changeset
200 }
1127fa1b4c02 [gaim-migrate @ 1684]
Rob Flynn <gaim@robflynn.com>
parents: 1673
diff changeset
201 else {
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
202 g_snprintf(buf, IRC_BUF_LEN, "PRIVMSG %s :%s\n", who, message);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
203 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
204
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
205 write(idata->fd, buf, strlen(buf));
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
206
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
207 g_free(buf);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
208 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
209
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
210 static int find_id_by_name(struct gaim_connection *gc, char *name)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
211 {
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
212 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
213 GList *templist;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
214 struct irc_channel *channel;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
215
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
216 templist = ((struct irc_data *)gc->proto_data)->channels;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
217
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
218 while (templist) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
219 channel = (struct irc_channel *)templist->data;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
220
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
221 g_snprintf(temp, IRC_BUF_LEN, "#%s", channel->name);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
222
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
223 if (g_strcasecmp(temp, name) == 0) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
224 g_free(temp);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
225 return channel->id;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
226 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
227
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
228 templist = templist->next;
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
229 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
230
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
231 g_free(temp);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
232
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
233 /* Return -1 if we have no ID */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
234 return -1;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
235 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
236
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
237 static struct irc_channel *find_channel_by_name(struct gaim_connection *gc, char *name)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
238 {
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
239 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
240 GList *templist;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
241 struct irc_channel *channel;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
242
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
243 templist = ((struct irc_data *)gc->proto_data)->channels;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
244
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
245 while (templist) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
246 channel = (struct irc_channel *)templist->data;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
247
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
248 g_snprintf(temp, IRC_BUF_LEN, "%s", channel->name);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
249
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
250 if (g_strcasecmp(temp, name) == 0) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
251 g_free(temp);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
252 return channel;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
253 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
254
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
255 templist = templist->next;
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
256 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
257
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
258 g_free(temp);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
259
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
260 /* If we found nothing, return nothing :-) */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
261 return NULL;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
262 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
263
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
264 static struct irc_channel *find_channel_by_id(struct gaim_connection *gc, int id)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
265 {
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
266 struct irc_data *idata = (struct irc_data *)gc->proto_data;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
267 struct irc_channel *channel;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
268
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
269 GList *temp;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
270
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
271 temp = idata->channels;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
272
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
273 while (temp) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
274 channel = (struct irc_channel *)temp->data;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
275
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
276 if (channel->id == id) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
277 /* We've found our man */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
278 return channel;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
279 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
280
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
281 temp = temp->next;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
282 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
283
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
284
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
285 /* If we didnt find one, return NULL */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
286 return NULL;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
287 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
288
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
289 static void irc_chat_send(struct gaim_connection *gc, int id, char *message)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
290 {
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
291
1742
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
292 struct irc_data *idata = (struct irc_data *)gc->proto_data;
1021
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
293 struct irc_channel *channel = NULL;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
294 gchar *buf = (gchar *) g_malloc(IRC_BUF_LEN + 1);
1742
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
295 char **kick;
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
296 gboolean is_command = FALSE;
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
297 /* First lets get our current channel */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
298 channel = find_channel_by_id(gc, id);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
299
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
300
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
301 if (!channel) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
302 /* If for some reason we've lost our channel, let's bolt */
1021
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
303 g_free(buf);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
304 return;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
305 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
306
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
307
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
308 /* Before we actually send this, we should check to see if they're trying
1675
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
309 * To issue a command and handle it properly. */
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
310
1675
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
311 if (message[0] == '/')
1742
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
312 {
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
313
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
314 if ((g_strncasecmp(message, "/me ", 4) == 0) && (strlen(message) > 4)) {
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
315 /* We have /me!! We have /me!! :-) */
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
316
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
317 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
318 strcpy(temp, message + 4);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
319
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
320 g_snprintf(buf, IRC_BUF_LEN, "PRIVMSG #%s :%cACTION %s%c\n", channel->name, '\001', temp,
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
321 '\001');
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
322 g_free(temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
323 }
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
324 else if ((g_strncasecmp(message, "/op ", 4) == 0) && (strlen(message) > 4)) {
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
325 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
326 strcpy(temp, message + 4);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
327
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
328 g_snprintf(buf, IRC_BUF_LEN, "MODE #%s +o %s\n", channel->name, temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
329
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
330 g_free(temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
331 is_command = TRUE;
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
332
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
333 }
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
334 else if ((g_strncasecmp(message, "/deop ", 6) == 0) && (strlen(message) > 6)) {
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
335 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
336 strcpy(temp, message + 6);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
337 g_snprintf(buf, IRC_BUF_LEN, "MODE #%s -o %s\n", channel->name, temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
338
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
339 g_free(temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
340 is_command = TRUE;
1675
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
341 }
1742
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
342
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
343 else if ((g_strncasecmp(message, "/voice ", 7) == 0) && (strlen(message) > 7)) {
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
344 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
345 strcpy(temp, message + 7);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
346
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
347 g_snprintf(buf, IRC_BUF_LEN, "MODE #%s +v %s\n", channel->name, temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
348
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
349 g_free(temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
350 is_command = TRUE;
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
351
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
352 }
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
353 else if ((g_strncasecmp(message, "/devoice ", 9) == 0) && (strlen(message) > 9)) {
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
354 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
355 strcpy(temp, message + 6);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
356 g_snprintf(buf, IRC_BUF_LEN, "MODE #%s -v %s\n", channel->name, temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
357
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
358 g_free(temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
359 is_command = TRUE;
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
360 }
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
361 else if ((g_strncasecmp(message, "/mode ", 6) == 0) && (strlen(message) > 6)) {
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
362 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
363 strcpy(temp, message + 6);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
364 g_snprintf(buf, IRC_BUF_LEN, "MODE #%s %s\n", channel->name, temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
365 g_free(temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
366 is_command = TRUE;
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
367 }
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
368
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
369 else if (!g_strncasecmp(message, "/whois ", 7) && (strlen(message) > 7)) {
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
370 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
371
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
372 strcpy(temp, message + 7);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
373 irc_get_info(gc, temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
374 g_free(temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
375
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
376
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
377 }
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
378
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
379 else if (!g_strncasecmp(message, "/raw ", 5) && (strlen(message) > 5)){
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
380 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
381 strcpy(temp, message + 5);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
382 g_snprintf(buf, IRC_BUF_LEN, "%s\r\n", temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
383 g_free(temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
384 is_command = TRUE;
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
385 }
1675
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
386
1742
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
387 else if (!g_strncasecmp(message, "/quote ", 7) && (strlen(message) >7)) {
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
388 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
389 strcpy(temp, message + 7);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
390 g_snprintf(buf, IRC_BUF_LEN, "%s\r\n", temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
391 g_free(temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
392 is_command = TRUE;
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
393 }
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
394
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
395 else if (!g_strncasecmp(message, "/kick ", 6) && (strlen(message) > 6)) {
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
396 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
397 strcpy(temp, message + 6);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
398 kick = g_strsplit(temp, " ", 2);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
399 g_snprintf(buf, IRC_BUF_LEN, "KICK #%s %s :%s\r\n", channel->name, kick[0], kick[1]);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
400 g_free(temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
401 is_command = TRUE;
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
402 }
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
403
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
404 /* FIXME: I'll go back in and grab this later. -- Rob */
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
405 /*
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
406 I THOUGHT THIS WOULD WORK, BUT I WAS WRONG. WOULD SOMEONE KINDLY FIX IT?
1675
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
407
1742
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
408
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
409 else if (!g_strncasecmp(message, "/help", 5)) {
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
410 gchar *temp = (gchar *) g_malloc(IRC_BUF_LEN + 1);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
411 strcpy(temp, message + 5);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
412 if (temp == "") {
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
413
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
414 serv_got_chat_in(gc, id, "gAIM", 0, "Available Commands:");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
415 serv_got_chat_in(gc, id, "gAIM", 0, " ");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
416 serv_got_chat_in(gc, id, "gAIM", 0, "<b>op voice kick </b>");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
417 serv_got_chat_in(gc, id, "gAIM", 0, "<b>deop devoice whois</b>");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
418 serv_got_chat_in(gc, id, "gAIM", 0, "<b>me raw quote</b>");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
419 serv_got_chat_in(gc, id, "gAIM", 0, "<b>mode</b>");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
420 }
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
421 else {
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
422 serv_got_chat_in(gc, id, "gAIM", 0, "Usage: ");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
423 if (temp == "op")
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
424 serv_got_chat_in(gc, id, "gAIM", 0, "<b>/op <nick></b> - Gives operator status to user.");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
425 else if (temp == "deop")
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
426 serv_got_chat_in(gc, id, "gAIM", 0, "<b>/deop <nick></b> - Removes operator status from user.");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
427 else if (temp == "me")
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
428 serv_got_chat_in(gc, id, "gAIM", 0, "<b>/me <action></b> - Sends an action to the channel.");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
429 else if (temp == "mode")
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
430 serv_got_chat_in(gc, id, "gAIM", 0, "<b>/mode {[+|-}|o|p|s|i|t|n|b|v} [<limit][<nick>][<ban mask]</b> - Changes channel and user modes.");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
431 else if (temp == "voice")
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
432 serv_got_chat_in(gc, id, "gAIM", 0, "<b>/voice <nick></b> - Gives voice status to user.");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
433 else if (temp == "devoice")
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
434 serv_got_chat_in(gc, id, "gAIM", 0, "<b>/devoice <nick></b> - Removes voice status from user.");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
435 else if (temp == "raw")
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
436 serv_got_chat_in(gc, id, "gAIM", 0, "<b>/raw <text></b> - Sends raw text to the server.");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
437 else if (temp == "kick")
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
438 serv_got_chat_in(gc, id, "gAIM", 0, "<b>/kick [<comment>]</b> - Kicks a user out of the channel.");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
439 else if (temp == "whois")
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
440 serv_got_chat_in(gc, id, "gAIM", 0, "<b>/whois <nick></b> - Gets information about user.");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
441 else if (temp == "quote")
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
442 serv_got_chat_in(gc, id, "gAIM", 0, "<b>/raw <text></b> - Sends raw text to the server.");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
443 else
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
444 serv_got_chat_in(gc, id, "gAIM", 0, "No such command.");
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
445 }
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
446
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
447 g_free(temp);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
448 is_command = TRUE;
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
449 }
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
450 */
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
451
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
452 }
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
453
1675
3232467ae220 [gaim-migrate @ 1685]
Rob Flynn <gaim@robflynn.com>
parents: 1674
diff changeset
454 else {
1742
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
455 g_snprintf(buf, IRC_BUF_LEN, "PRIVMSG #%s :%s\n", channel->name, message);
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
456
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
457 }
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
458
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
459
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
460 write(idata->fd, buf, strlen(buf));
1742
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
461
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
462 /* Since AIM expects us to receive the message we send, we gotta fake it */
1742
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
463 if (is_command==FALSE)
1764
1e0613d9526b [gaim-migrate @ 1774]
Rob Flynn <gaim@robflynn.com>
parents: 1742
diff changeset
464 serv_got_chat_in(gc, id, gc->username, 0, message, time((time_t)NULL));
1742
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
465
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
466 g_free(buf);
1742
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
467
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
468
1008
1b99caffcd98 [gaim-migrate @ 1018]
Rob Flynn <gaim@robflynn.com>
parents: 987
diff changeset
469 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
470 static struct conversation *find_conversation_by_id(struct gaim_connection *gc, int id)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
471 {
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
472 struct irc_data *idata = (struct irc_data *)gc->proto_data;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
473 GSList *bc = gc->buddy_chats;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
474 struct conversation *b = NULL;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
475
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
476 while (bc) {
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
477 b = (struct conversation *)bc->data;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
478 if (id == b->id) {
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
479 break;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
480 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
481 bc = bc->next;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
482 b = NULL;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
483 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
484
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
485 if (!b) {
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
486 return NULL;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
487 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
488
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
489 return b;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
490 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
491
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
492 static struct conversation *find_conversation_by_name(struct gaim_connection *gc, char *name)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
493 {
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
494 struct irc_data *idata = (struct irc_data *)gc->proto_data;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
495 GSList *bc = gc->buddy_chats;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
496 struct conversation *b = NULL;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
497
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
498 while (bc) {
1301
e973ef7a8a87 [gaim-migrate @ 1311]
Rob Flynn <gaim@robflynn.com>
parents: 1288
diff changeset
499 int x;
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
500 b = (struct conversation *)bc->data;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
501
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
502 if (g_strcasecmp(name, b->name) == 0) {
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
503 break;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
504 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
505 bc = bc->next;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
506 b = NULL;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
507 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
508
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
509 if (!b) {
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
510 return NULL;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
511 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
512
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
513 return b;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
514 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
515
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
516
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
517
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
518 static void irc_callback(gpointer data, gint source, GdkInputCondition condition)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
519 {
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
520 struct gaim_connection *gc = data;
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
521 int i = 0;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
522 gchar buf[4096];
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
523 gchar **buf2;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
524 struct irc_data *idata;
1742
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
525
34369ed4e212 [gaim-migrate @ 1752]
Rob Flynn <gaim@robflynn.com>
parents: 1678
diff changeset
526 idata = (struct irc_data *)gc->proto_data;
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
527
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
528
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
529 do {
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
530 if (read(idata->fd, buf + i, 1) < 0) {
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
531 hide_login_progress(gc, "Read error");
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
532 signoff(gc);
1105
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
533 return;
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
534 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
535 } while (buf[i++] != '\n');
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
536
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
537 buf[--i] = '\0';
1301
e973ef7a8a87 [gaim-migrate @ 1311]
Rob Flynn <gaim@robflynn.com>
parents: 1288
diff changeset
538 g_strchomp(buf);
1269
677e2c9e8baf [gaim-migrate @ 1279]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1266
diff changeset
539 g_print("%s\n", buf);
1105
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
540
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
541 /* Check for errors */
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
542
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
543 if (((strstr(buf, "ERROR :") && (!strstr(buf, "PRIVMSG ")) &&
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
544 (!strstr(buf, "NOTICE ")) && (strlen(buf) > 7)))) {
1105
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
545
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
546 gchar *u_errormsg;
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
547
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
548 /* Let's get our error message */
1269
677e2c9e8baf [gaim-migrate @ 1279]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1266
diff changeset
549 u_errormsg = g_strdup(buf + 7);
1105
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
550
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
551 /* We got our error message. Now, let's reaise an
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
552 * error dialog */
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
553
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
554 do_error_dialog(u_errormsg, "Gaim: IRC Error");
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
555
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
556 /* And our necessary garbage collection */
1269
677e2c9e8baf [gaim-migrate @ 1279]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1266
diff changeset
557 g_free(u_errormsg);
1105
c964df5b2a84 [gaim-migrate @ 1115]
Rob Flynn <gaim@robflynn.com>
parents: 1090
diff changeset
558 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
559
1673
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
560 /* This should be a whois response. I only care about the first (311) one. I might do
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
561 * the other's later. They're boring. */
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
562
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
563 if (((strstr(buf, " 311 ")) && (!strstr(buf, "PRIVMSG")) && (!strstr(buf, "NOTICE")))) {
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
564 char **res;
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
565
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
566 res = g_strsplit(buf, " ", 7);
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
567
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
568 if (!strcmp(res[1], "311"))
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
569 {
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
570 char buf[8192];
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
571
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
572 g_snprintf(buf, 4096, "<b>Nick:</b> %s<br>"
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
573 "<b>Host:</b> %s@%s<br>"
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
574 "<b>Name:</b> %s<br>", res[3], res[4], res[5], res[7]+1);
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
575
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
576 g_show_info_text(buf);
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
577 }
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
578
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
579 g_strfreev(res);
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
580 }
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
581
1676
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
582 /* Autoresponse to an away message */
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
583 if (((strstr(buf, " 301 ")) && (!strstr(buf, "PRIVMSG")) && (!strstr(buf, "NOTICE")))) {
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
584 char **res;
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
585
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
586 res = g_strsplit(buf, " ", 5);
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
587
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
588 if (!strcmp(res[1], "301"))
1764
1e0613d9526b [gaim-migrate @ 1774]
Rob Flynn <gaim@robflynn.com>
parents: 1742
diff changeset
589 serv_got_im(gc, res[3], res[4] + 1, 1, time((time_t)NULL));
1676
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
590
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
591 g_strfreev(res);
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
592 }
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
593
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
594 /* Parse the list of names that we receive when we first sign on to
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
595 * a channel */
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
596
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
597 if (((strstr(buf, " 353 ")) && (!strstr(buf, "PRIVMSG")) && (!strstr(buf, "NOTICE")))) {
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
598 gchar u_host[255];
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
599 gchar u_command[32];
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
600 gchar u_channel[128];
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
601 gchar u_names[IRC_BUF_LEN + 1];
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
602 struct conversation *convo = NULL;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
603 int j;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
604
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
605 for (j = 0, i = 0; buf[i] != ' '; j++, i++) {
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
606 u_host[j] = buf[i];
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
607 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
608
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
609 u_host[j] = '\0';
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
610 i++;
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
611
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
612 for (j = 0; buf[i] != ' '; j++, i++) {
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
613 u_command[j] = buf[i];
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
614 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
615
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
616 u_command[j] = '\0';
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
617 i++;
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
618
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
619 for (j = 0; buf[i] != '#'; j++, i++) {
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
620 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
621 i++;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
622
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
623 for (j = 0; buf[i] != ':'; j++, i++) {
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
624 u_channel[j] = buf[i];
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
625 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
626
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
627 u_channel[j - 1] = '\0';
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
628 i++;
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
629
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
630 while ((buf[i] == ' ') || (buf[i] == ':')) {
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
631 i++;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
632 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
633
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
634 strcpy(u_names, buf + i);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
635
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
636 buf2 = g_strsplit(u_names, " ", 0);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
637
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
638 /* Let's get our conversation window */
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
639 convo = find_conversation_by_name(gc, u_channel);
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
640
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
641 if (!convo) {
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
642 return;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
643 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
644
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
645 /* Now that we've parsed the hell out of this big
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
646 * mess, let's try to split up the names properly */
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
647
1269
677e2c9e8baf [gaim-migrate @ 1279]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1266
diff changeset
648 for (i = 0; buf2[i] != NULL; i++)
677e2c9e8baf [gaim-migrate @ 1279]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1266
diff changeset
649 add_chat_buddy(convo, buf2[i]);
1021
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
650
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
651 /* And free our pointers */
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
652 g_strfreev(buf2);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
653
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
654 return;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
655
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
656 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
657
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
658 /* Receive a list of users that are currently online */
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
659
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
660 if (((strstr(buf, " 303 ")) && (!strstr(buf, "PRIVMSG")) && (!strstr(buf, "NOTICE")))) {
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
661 gchar u_host[255];
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
662 gchar u_command[32];
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
663 gchar u_names[IRC_BUF_LEN + 1];
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
664 int j;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
665
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
666 for (j = 0, i = 0; buf[i] != ' '; j++, i++) {
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
667 u_host[j] = buf[i];
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
668 }
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
669
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
670 u_host[j] = '\0';
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
671 i++;
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
672
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
673 for (j = 0; buf[i] != ' '; j++, i++) {
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
674 u_command[j] = buf[i];
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
675 }
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
676
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
677 u_command[j] = '\0';
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
678 i++;
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
679
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
680 for (j = 0; buf[i] != ':'; j++, i++) {
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
681 /* My Nick */
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
682 }
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
683 i++;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
684
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
685 strcpy(u_names, buf + i);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
686
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
687 buf2 = g_strsplit(u_names, " ", 0);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
688
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
689 /* Now that we've parsed the hell out of this big
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
690 * mess, let's try to split up the names properly */
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
691
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
692 for (i = 0; buf2[i] != NULL; i++) {
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
693 /* If we have a name here then our buddy is online. We should
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
694 * update our temporary gslist accordingly. When we achieve our maximum
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
695 * list of names then we should force an update */
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
696
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
697 irc_update_user(gc, buf2[i], 1);
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
698 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
699
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
700 /* Increase our received blocks counter */
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
701 idata->recblocks++;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
702
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
703 /* If we have our total number of blocks */
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
704 if (idata->recblocks == idata->totalblocks) {
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
705 GSList *temp;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
706 struct irc_channel *u;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
707
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
708 /* Let's grab our list of people and bring them all on or off line */
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
709 temp = idata->templist;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
710
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
711 /* Loop */
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
712 while (temp) {
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
713
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
714 u = temp->data;
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
715
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
716 /* Tell Gaim to bring the person on or off line */
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
717 serv_got_update(gc, u->name, u->id, 0, 0, 0, 0, 0);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
718
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
719 /* Grab the next entry */
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
720 temp = g_slist_next(temp);
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
721 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
722
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
723 /* And now, let's delete all of our entries */
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
724 temp = idata->templist;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
725 while (temp) {
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
726 u = temp->data;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
727 g_free(u->name);
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
728 temp = g_slist_remove(temp, u);
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
729 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
730
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
731 /* Reset our list */
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
732 idata->totalblocks = 0;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
733 idata->recblocks = 0;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
734
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
735 idata->templist = NULL;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
736
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
737 return;
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
738 }
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
739
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
740 /* And free our pointers */
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
741 g_strfreev(buf2);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
742
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
743 return;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
744
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
745 }
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
746
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
747
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
748 if ((strstr(buf, " JOIN ")) && (buf[0] == ':') && (!strstr(buf, " NOTICE "))) {
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
749
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
750 gchar u_channel[128];
1012
7e8dcc609b30 [gaim-migrate @ 1022]
Rob Flynn <gaim@robflynn.com>
parents: 1011
diff changeset
751 gchar u_nick[128];
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
752
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
753 struct irc_channel *channel;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
754 int id;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
755 int j;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
756
1012
7e8dcc609b30 [gaim-migrate @ 1022]
Rob Flynn <gaim@robflynn.com>
parents: 1011
diff changeset
757 for (j = 0, i = 1; buf[i] != '!'; j++, i++) {
7e8dcc609b30 [gaim-migrate @ 1022]
Rob Flynn <gaim@robflynn.com>
parents: 1011
diff changeset
758 u_nick[j] = buf[i];
7e8dcc609b30 [gaim-migrate @ 1022]
Rob Flynn <gaim@robflynn.com>
parents: 1011
diff changeset
759 }
7e8dcc609b30 [gaim-migrate @ 1022]
Rob Flynn <gaim@robflynn.com>
parents: 1011
diff changeset
760
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
761 u_nick[j] = '\0';
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
762 i++;
1012
7e8dcc609b30 [gaim-migrate @ 1022]
Rob Flynn <gaim@robflynn.com>
parents: 1011
diff changeset
763
7e8dcc609b30 [gaim-migrate @ 1022]
Rob Flynn <gaim@robflynn.com>
parents: 1011
diff changeset
764 for (j = 0; buf[i] != '#'; j++, i++) {
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
765 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
766
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
767 i++;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
768
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
769 strcpy(u_channel, buf + i);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
770
1301
e973ef7a8a87 [gaim-migrate @ 1311]
Rob Flynn <gaim@robflynn.com>
parents: 1288
diff changeset
771 g_strchomp(u_channel);
e973ef7a8a87 [gaim-migrate @ 1311]
Rob Flynn <gaim@robflynn.com>
parents: 1288
diff changeset
772
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
773 /* Looks like we're going to join the channel for real
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
774 * now. Let's create a valid channel structure and add
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
775 * it to our list. Let's make sure that
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
776 * we are not already in a channel first */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
777
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
778 channel = find_channel_by_name(gc, u_channel);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
779
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
780 if (!channel) {
1301
e973ef7a8a87 [gaim-migrate @ 1311]
Rob Flynn <gaim@robflynn.com>
parents: 1288
diff changeset
781
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
782 chat_id++;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
783
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
784 channel = g_new0(struct irc_channel, 1);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
785
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
786 channel->id = chat_id;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
787 channel->name = strdup(u_channel);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
788
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
789 idata->channels = g_list_append(idata->channels, channel);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
790
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
791 serv_got_joined_chat(gc, chat_id, u_channel);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
792 } else {
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
793 struct conversation *convo = NULL;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
794
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
795 /* Someone else joined. Find their conversation
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
796 * window */
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
797 convo = find_conversation_by_id(gc, channel->id);
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
798
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
799 /* And add their name to it */
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
800 add_chat_buddy(convo, u_nick);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
801
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
802 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
803
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
804 return;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
805 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
806
1504
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
807 if ((strstr(buf, " NICK ")) && (buf[0] == ':') && (!strstr(buf, " NOTICE "))) {
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
808
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
809 gchar old[128];
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
810 gchar new[128];
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
811
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
812 GList *templist;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
813
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
814 struct irc_channel *channel;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
815 int id;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
816 int j;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
817
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
818 for (j = 0, i = 1; buf[i] != '!'; j++, i++) {
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
819 old[j] = buf[i];
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
820 }
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
821
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
822 old[j] = '\0';
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
823 i++;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
824
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
825 for (j = 0; buf[i] != ':'; j++, i++) {
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
826 }
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
827
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
828 i++;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
829 strcpy(new, buf + i);
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
830
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
831 g_strchomp(new);
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
832
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
833 templist = ((struct irc_data *)gc->proto_data)->channels;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
834
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
835 while (templist) {
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
836 struct conversation *convo = NULL;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
837 channel = templist->data;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
838
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
839 convo = find_conversation_by_id(gc, channel->id);
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
840
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
841 rename_chat_buddy(convo, old, new);
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
842
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
843 templist = templist->next;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
844 }
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
845 }
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
846
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
847 if ((strstr(buf, "QUIT ")) && (buf[0] == ':') && (!strstr(buf, " NOTICE "))) {
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
848
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
849 gchar u_nick[128];
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
850
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
851 GList *templist;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
852
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
853 struct irc_channel *channel;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
854 int j;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
855
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
856 for (j = 0, i = 1; buf[i] != '!'; j++, i++) {
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
857 u_nick[j] = buf[i];
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
858 }
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
859
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
860 u_nick[j] = '\0';
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
861
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
862 templist = ((struct irc_data *)gc->proto_data)->channels;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
863
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
864 while (templist) {
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
865 struct conversation *convo = NULL;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
866 channel = templist->data;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
867
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
868 convo = find_conversation_by_id(gc, channel->id);
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
869
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
870 remove_chat_buddy(convo, u_nick);
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
871
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
872 templist = templist->next;
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
873 }
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
874 }
cac3efeb4d9c [gaim-migrate @ 1514]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1499
diff changeset
875
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
876 if ((strstr(buf, " PART ")) && (buf[0] == ':') && (!strstr(buf, " NOTICE "))) {
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
877
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
878 gchar u_channel[128];
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
879 gchar u_nick[128];
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
880
1021
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
881 struct irc_channel *channel;
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
882 int id;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
883 int j;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
884 GList *test = NULL;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
885
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
886 for (j = 0, i = 1; buf[i] != '!'; j++, i++) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
887 u_nick[j] = buf[i];
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
888 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
889 u_nick[j] = '\0';
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
890
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
891 i++;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
892
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
893 for (j = 0; buf[i] != '#'; j++, i++) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
894 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
895
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
896 i++;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
897
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
898 strcpy(u_channel, buf + i);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
899
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
900
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
901 /* Now, lets check to see if it was US that was leaving.
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
902 * If so, do the correct thing by closing up all of our
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
903 * old channel stuff. Otherwise,
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
904 * we should just print that someone left */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
905
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
906 channel = find_channel_by_name(gc, u_channel);
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
907
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
908 if (!channel) {
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
909 return;
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
910 }
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
911
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
912 if (g_strcasecmp(u_nick, gc->username) == 0) {
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
913
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
914 /* Looks like we're going to leave the channel for
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
915 * real now. Let's create a valid channel structure
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
916 * and add it to our list */
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
917
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
918 serv_got_chat_left(gc, channel->id);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
919
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
920 idata->channels = g_list_remove(idata->channels, channel);
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
921 } else {
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
922 struct conversation *convo = NULL;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
923
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
924 /* Find their conversation window */
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
925 convo = find_conversation_by_id(gc, channel->id);
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
926
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
927 if (!convo) {
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
928 /* Some how the window doesn't exist.
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
929 * Let's get out of here */
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
930 return;
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
931 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
932
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
933 /* And remove their name */
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
934 remove_chat_buddy(convo, u_nick);
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
935
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
936 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
937
1014
bc4f6a535bd9 [gaim-migrate @ 1024]
Rob Flynn <gaim@robflynn.com>
parents: 1012
diff changeset
938 /* Go Home! */
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
939 return;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
940 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
941
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
942 if ((strstr(buf, " NOTICE ")) && (buf[0] == ':')) {
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
943 gchar u_nick[128];
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
944 gchar u_host[255];
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
945 gchar u_command[32];
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
946 gchar u_channel[128];
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
947 gchar u_message[IRC_BUF_LEN];
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
948 int j;
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
949 int msgcode = 0;
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
950
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
951 for (j = 0, i = 1; buf[i] != '!'; j++, i++) {
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
952 u_nick[j] = buf[i];
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
953 }
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
954
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
955 u_nick[j] = '\0';
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
956 i++;
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
957
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
958 for (j = 0; buf[i] != ' '; j++, i++) {
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
959 u_host[j] = buf[i];
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
960 }
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
961
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
962 u_host[j] = '\0';
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
963 i++;
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
964
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
965 for (j = 0; buf[i] != ' '; j++, i++) {
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
966 u_command[j] = buf[i];
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
967 }
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
968
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
969 u_command[j] = '\0';
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
970 i++;
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
971
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
972 for (j = 0; buf[i] != ':'; j++, i++) {
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
973 u_channel[j] = buf[i];
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
974 }
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
975
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
976 u_channel[j - 1] = '\0';
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
977 i++;
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
978
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
979
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
980 /* Now that everything is parsed, the rest of this baby must be our message */
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
981 strncpy(u_message, buf + i, IRC_BUF_LEN);
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
982
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
983 /* Now, lets check the message to see if there's anything special in it */
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
984 if (u_message[0] == '\001') {
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
985 if ((g_strncasecmp(u_message, "\001PING ", 6) == 0) && (strlen(u_message) > 6)) {
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
986 /* Someone's triyng to ping us. Let's respond */
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
987 gchar u_arg[24];
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
988 gchar u_buf[200];
1393
3b5c7f8bb2b5 [gaim-migrate @ 1403]
Rob Flynn <gaim@robflynn.com>
parents: 1304
diff changeset
989 unsigned long tend= time((time_t *)NULL);
3b5c7f8bb2b5 [gaim-migrate @ 1403]
Rob Flynn <gaim@robflynn.com>
parents: 1304
diff changeset
990 unsigned long tstart;
3b5c7f8bb2b5 [gaim-migrate @ 1403]
Rob Flynn <gaim@robflynn.com>
parents: 1304
diff changeset
991
3b5c7f8bb2b5 [gaim-migrate @ 1403]
Rob Flynn <gaim@robflynn.com>
parents: 1304
diff changeset
992 printf("LA: %s\n", buf);
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
993
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
994 strcpy(u_arg, u_message + 6);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
995 u_arg[strlen(u_arg) - 1] = '\0';
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
996
1393
3b5c7f8bb2b5 [gaim-migrate @ 1403]
Rob Flynn <gaim@robflynn.com>
parents: 1304
diff changeset
997 tstart = atol(u_arg);
3b5c7f8bb2b5 [gaim-migrate @ 1403]
Rob Flynn <gaim@robflynn.com>
parents: 1304
diff changeset
998
3b5c7f8bb2b5 [gaim-migrate @ 1403]
Rob Flynn <gaim@robflynn.com>
parents: 1304
diff changeset
999 g_snprintf(u_buf, sizeof(u_buf), "Ping Reply From %s: [%ld seconds]", u_nick, tend-tstart);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1000
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1001 do_error_dialog(u_buf, "Gaim IRC - Ping Reply");
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1002
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1003 return;
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1004 }
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1005 }
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1006
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1007 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1008
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1009
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1010 if ((strstr(buf, " PRIVMSG ")) && (buf[0] == ':')) {
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1011 gchar u_nick[128];
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1012 gchar u_host[255];
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1013 gchar u_command[32];
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1014 gchar u_channel[128];
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1015 gchar u_message[IRC_BUF_LEN];
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1016 int j;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1017 int msgcode = 0;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1018
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1019 for (j = 0, i = 1; buf[i] != '!'; j++, i++) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1020 u_nick[j] = buf[i];
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1021 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1022
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1023 u_nick[j] = '\0';
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1024 i++;
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1025
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1026 for (j = 0; buf[i] != ' '; j++, i++) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1027 u_host[j] = buf[i];
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1028 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1029
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1030 u_host[j] = '\0';
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1031 i++;
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1032
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1033 for (j = 0; buf[i] != ' '; j++, i++) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1034 u_command[j] = buf[i];
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1035 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1036
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1037 u_command[j] = '\0';
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1038 i++;
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1039
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1040 for (j = 0; buf[i] != ':'; j++, i++) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1041 u_channel[j] = buf[i];
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1042 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1043
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1044 u_channel[j - 1] = '\0';
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1045 i++;
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1046
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1047
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1048 /* Now that everything is parsed, the rest of this baby must be our message */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1049 strncpy(u_message, buf + i, IRC_BUF_LEN);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1050
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1051 /* Now, lets check the message to see if there's anything special in it */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1052 if (u_message[0] == '\001') {
1017
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1053 if (g_strncasecmp(u_message, "\001VERSION", 8) == 0) {
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1054 /* Looks like we have a version request. Let
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1055 * us handle it thusly */
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1056
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1057 g_snprintf(buf, IRC_BUF_LEN,
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1058 "NOTICE %s :%cVERSION GAIM %s:The Pimpin Penguin AIM Clone:www.marko.net/gaim%c\n",
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1059 u_nick, '\001', VERSION, '\001');
1017
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1060
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1061 write(idata->fd, buf, strlen(buf));
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1062
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1063 /* And get the heck out of dodge */
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1064 return;
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1065 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1066
1017
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1067 if ((g_strncasecmp(u_message, "\001PING ", 6) == 0) && (strlen(u_message) > 6)) {
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1068 /* Someone's triyng to ping us. Let's respond */
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1069 gchar u_arg[24];
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1070
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1071 strcpy(u_arg, u_message + 6);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1072 u_arg[strlen(u_arg) - 1] = '\0';
1017
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1073
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1074 g_snprintf(buf, IRC_BUF_LEN, "NOTICE %s :%cPING %s%c\n", u_nick, '\001',
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1075 u_arg, '\001');
1017
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1076
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1077 write(idata->fd, buf, strlen(buf));
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1078
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1079 /* And get the heck out of dodge */
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1080 return;
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1081 }
bbd0d51b7d14 [gaim-migrate @ 1027]
Rob Flynn <gaim@robflynn.com>
parents: 1014
diff changeset
1082
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1083 if (g_strncasecmp(u_message, "\001ACTION ", 8) == 0) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1084 /* Looks like we have an action. Let's parse it a little */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1085 strcpy(buf, u_message);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1086
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1087 strcpy(u_message, "/me ");
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1088 for (j = 4, i = 8; buf[i] != '\001'; i++, j++) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1089 u_message[j] = buf[i];
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1090 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1091 u_message[j] = '\0';
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1092 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1093 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1094
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1095
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1096 /* Let's check to see if we have a channel on our hands */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1097 if (u_channel[0] == '#') {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1098 /* Yup. We have a channel */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1099 int id;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1100
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1101 id = find_id_by_name(gc, u_channel);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1102 if (id != -1) {
1764
1e0613d9526b [gaim-migrate @ 1774]
Rob Flynn <gaim@robflynn.com>
parents: 1742
diff changeset
1103 serv_got_chat_in(gc, id, u_nick, 0, u_message, time((time_t)NULL));
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1104 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1105 } else {
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1106 /* Nope. Let's treat it as a private message */
1764
1e0613d9526b [gaim-migrate @ 1774]
Rob Flynn <gaim@robflynn.com>
parents: 1742
diff changeset
1107 serv_got_im(gc, u_nick, u_message, 0, time((time_t)NULL));
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1108 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1109
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1110 return;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1111 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1112
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1113 /* Let's parse PING requests so that we wont get booted for inactivity */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1114
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1115 if (strncmp(buf, "PING :", 6) == 0) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1116 buf2 = g_strsplit(buf, ":", 1);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1117
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1118 /* Let's build a new response */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1119 g_snprintf(buf, IRC_BUF_LEN, "PONG :%s\n", buf2[1]);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1120 write(idata->fd, buf, strlen(buf));
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1121
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1122 /* And clean up after ourselves */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1123 g_strfreev(buf2);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1124
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1125 return;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1126 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1127
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1128 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1129
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1130 static void irc_close(struct gaim_connection *gc)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1131 {
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1132 struct irc_data *idata = (struct irc_data *)gc->proto_data;
1021
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
1133 GList *chats = idata->channels;
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
1134 struct irc_channel *cc;
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
1135
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1136 gchar *buf = (gchar *) g_malloc(IRC_BUF_LEN);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1137
1021
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
1138 g_snprintf(buf, IRC_BUF_LEN, "QUIT :Download GAIM [www.marko.net/gaim]\n");
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1139 write(idata->fd, buf, strlen(buf));
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1140
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1141 g_free(buf);
1021
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
1142
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1143 if (idata->timer)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1144 gtk_timeout_remove(idata->timer);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1145
1021
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
1146 while (chats) {
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
1147 cc = (struct irc_channel *)chats->data;
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
1148 g_free(cc->name);
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
1149 chats = g_list_remove(chats, cc);
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
1150 g_free(cc);
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
1151 }
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1152
1021
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
1153 if (gc->inpa)
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
1154 gdk_input_remove(gc->inpa);
90e8714bf95b [gaim-migrate @ 1031]
Rob Flynn <gaim@robflynn.com>
parents: 1019
diff changeset
1155
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1156 if (idata->inpa)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1157 gdk_input_remove(idata->inpa);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1158
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1159 close(idata->fd);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1160 g_free(gc->proto_data);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1161 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1162
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1163 static void irc_chat_leave(struct gaim_connection *gc, int id)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1164 {
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1165 struct irc_data *idata = (struct irc_data *)gc->proto_data;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1166 struct irc_channel *channel;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1167 gchar *buf = (gchar *) g_malloc(IRC_BUF_LEN + 1);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1168
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1169 channel = find_channel_by_id(gc, id);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1170
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1171 if (!channel) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1172 return;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1173 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1174
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1175 g_snprintf(buf, IRC_BUF_LEN, "PART #%s\n", channel->name);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1176 write(idata->fd, buf, strlen(buf));
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1177
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1178 g_free(buf);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1179 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1180
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1181 static void irc_login_callback(gpointer data, gint source, GdkInputCondition condition)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1182 {
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1183 struct gaim_connection *gc = data;
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1184 struct irc_data *idata = gc->proto_data;
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1185 char buf[4096];
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1186 int len, error = ETIMEDOUT;
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1187
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1188 len = sizeof(error);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1189 if (getsockopt(idata->fd, SOL_SOCKET, SO_ERROR, &error, &len) < 0)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1190 error = errno;
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1191 if (error) {
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1192 hide_login_progress(gc, "Couldn't connect");
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1193 signoff(gc);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1194 return;
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1195 }
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1196
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1197 fcntl(idata->fd, F_SETFL, 0);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1198
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1199 g_snprintf(buf, 4096, "NICK %s\n USER %s localhost %s :GAIM (www.marko.net/gaim)\n",
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1200 gc->username, g_get_user_name(), gc->user->proto_opt[0]);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1201
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1202 if (write(idata->fd, buf, strlen(buf)) < 0) {
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1203 hide_login_progress(gc, "Write error");
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1204 signoff(gc);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1205 return;
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1206 }
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1207
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1208 gdk_input_remove(idata->inpa);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1209 idata->inpa = 0;
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1210
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1211 /* Now lets sign ourselves on */
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1212 account_online(gc);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1213 serv_finish_login(gc);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1214
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1215 if (bud_list_cache_exists(gc))
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1216 do_import(NULL, gc);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1217
1269
677e2c9e8baf [gaim-migrate @ 1279]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1266
diff changeset
1218 /* we don't call this now because otherwise some IRC servers might not like us */
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1219 idata->timer = gtk_timeout_add(20000, (GtkFunction)irc_request_buddy_update, gc);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1220 }
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1221
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1222 static void irc_login(struct aim_user *user)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1223 {
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1224 int fd;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1225 struct hostent *host;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1226 struct sockaddr_in site;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1227 char buf[4096];
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1228
1089
f0f5c10cce63 [gaim-migrate @ 1099]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1075
diff changeset
1229 struct gaim_connection *gc = new_gaim_conn(user);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1230 struct irc_data *idata = gc->proto_data = g_new0(struct irc_data, 1);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1231 char c;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1232 int i;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1233 int status;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1234
1075
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1235 host = gethostbyname(user->proto_opt[0]);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1236 if (!host) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1237 hide_login_progress(gc, "Unable to resolve hostname");
1115
114cd406b022 [gaim-migrate @ 1125]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1105
diff changeset
1238 signoff(gc);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1239 return;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1240 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1241
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1242 site.sin_family = AF_INET;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1243 site.sin_addr.s_addr = *(long *)(host->h_addr);
1304
7f4302f6fd64 [gaim-migrate @ 1314]
Rob Flynn <gaim@robflynn.com>
parents: 1301
diff changeset
1244
7f4302f6fd64 [gaim-migrate @ 1314]
Rob Flynn <gaim@robflynn.com>
parents: 1301
diff changeset
1245 if (user->proto_opt[1][0])
7f4302f6fd64 [gaim-migrate @ 1314]
Rob Flynn <gaim@robflynn.com>
parents: 1301
diff changeset
1246 site.sin_port = htons(atoi(user->proto_opt[1]));
7f4302f6fd64 [gaim-migrate @ 1314]
Rob Flynn <gaim@robflynn.com>
parents: 1301
diff changeset
1247 else {
7f4302f6fd64 [gaim-migrate @ 1314]
Rob Flynn <gaim@robflynn.com>
parents: 1301
diff changeset
1248 site.sin_port = htons(6667);
7f4302f6fd64 [gaim-migrate @ 1314]
Rob Flynn <gaim@robflynn.com>
parents: 1301
diff changeset
1249 g_snprintf(user->proto_opt[1], 5, "6667");
7f4302f6fd64 [gaim-migrate @ 1314]
Rob Flynn <gaim@robflynn.com>
parents: 1301
diff changeset
1250 }
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1251
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1252 fd = socket(AF_INET, SOCK_STREAM, 0);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1253 if (fd < 0) {
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1254 hide_login_progress(gc, "Unable to create socket");
1115
114cd406b022 [gaim-migrate @ 1125]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1105
diff changeset
1255 signoff(gc);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1256 return;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1257 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1258
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1259 fcntl(fd, F_SETFL, O_NONBLOCK);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1260 if (connect(fd, (struct sockaddr *)&site, sizeof(site)) < 0) {
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1261 if ((errno == EINPROGRESS) || (errno == EINTR)) {
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1262 idata->inpa = gdk_input_add(idata->fd, GDK_INPUT_WRITE, irc_login_callback, gc);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1263 } else {
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1264 hide_login_progress(gc, "Unable to connect.");
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1265 signoff(gc);
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1266 return;
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1267 }
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1268 }
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1269
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1270 idata->fd = fd;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1271
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1272 g_snprintf(buf, sizeof(buf), "Signon: %s", gc->username);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1273 set_login_progress(gc, 2, buf);
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1274
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1275 /* This is where we will attempt to sign on */
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1276
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1277 if (!idata->inpa)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1278 irc_login_callback(gc, idata->fd, GDK_INPUT_READ);
1022
d5c022006a60 [gaim-migrate @ 1032]
Rob Flynn <gaim@robflynn.com>
parents: 1021
diff changeset
1279
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1280 gc->inpa = gdk_input_add(idata->fd, GDK_INPUT_READ, irc_callback, gc);
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1281 }
1008
1b99caffcd98 [gaim-migrate @ 1018]
Rob Flynn <gaim@robflynn.com>
parents: 987
diff changeset
1282
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1283 static void irc_print_option(GtkEntry * entry, struct aim_user *user)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1284 {
1075
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1285 if (gtk_object_get_user_data(GTK_OBJECT(entry))) {
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1286 g_snprintf(user->proto_opt[1], sizeof(user->proto_opt[1]), "%s",
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1287 gtk_entry_get_text(entry));
1075
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1288 } else {
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1289 g_snprintf(user->proto_opt[0], sizeof(user->proto_opt[0]), "%s",
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1290 gtk_entry_get_text(entry));
1075
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1291 }
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1292 }
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1293
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1294 static void irc_user_opts(GtkWidget * book, struct aim_user *user)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1295 {
1075
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1296 /* so here, we create the new notebook page */
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1297 GtkWidget *vbox;
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1298 GtkWidget *hbox;
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1299 GtkWidget *label;
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1300 GtkWidget *entry;
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1301
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1302 vbox = gtk_vbox_new(FALSE, 0);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1303 gtk_notebook_append_page(GTK_NOTEBOOK(book), vbox, gtk_label_new("IRC Options"));
1075
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1304 gtk_widget_show(vbox);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1305
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1306 hbox = gtk_hbox_new(FALSE, 0);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1307 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1308 gtk_widget_show(hbox);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1309
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1310 label = gtk_label_new("Server:");
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1311 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1312 gtk_widget_show(label);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1313
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1314 entry = gtk_entry_new();
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1315 gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 5);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1316 gtk_signal_connect(GTK_OBJECT(entry), "changed", GTK_SIGNAL_FUNC(irc_print_option), user);
1075
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1317 if (user->proto_opt[0][0]) {
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1318 debug_printf("setting text %s\n", user->proto_opt[0]);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1319 gtk_entry_set_text(GTK_ENTRY(entry), user->proto_opt[0]);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1320 }
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1321 gtk_widget_show(entry);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1322
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1323 hbox = gtk_hbox_new(FALSE, 0);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1324 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1325 gtk_widget_show(hbox);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1326
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1327 label = gtk_label_new("Port:");
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1328 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1329 gtk_widget_show(label);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1330
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1331 entry = gtk_entry_new();
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1332 gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 5);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1333 if (user->proto_opt[1][0]) {
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1334 debug_printf("setting text %s\n", user->proto_opt[1]);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1335 gtk_entry_set_text(GTK_ENTRY(entry), user->proto_opt[1]);
1304
7f4302f6fd64 [gaim-migrate @ 1314]
Rob Flynn <gaim@robflynn.com>
parents: 1301
diff changeset
1336 } else {
7f4302f6fd64 [gaim-migrate @ 1314]
Rob Flynn <gaim@robflynn.com>
parents: 1301
diff changeset
1337 gtk_entry_set_text(GTK_ENTRY(entry), "6667");
1075
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1338 }
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1339 gtk_object_set_user_data(GTK_OBJECT(entry), user);
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1340 gtk_signal_connect(GTK_OBJECT(entry), "changed", GTK_SIGNAL_FUNC(irc_print_option), user);
1075
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1341 gtk_widget_show(entry);
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1342 }
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1343
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1344 static char **irc_list_icon(int uc)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1345 {
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1346 return free_icon_xpm;
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1347 }
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1348
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1349 /* Send out a ping request to the specified user */
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1350 static void irc_send_ping(GtkObject * w, char *who)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1351 {
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1352 struct gaim_connection *gc = (struct gaim_connection *)gtk_object_get_user_data(w);
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1353 struct irc_data *idata = (struct irc_data *)gc->proto_data;
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1354 char buf[BUF_LEN];
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1355
1393
3b5c7f8bb2b5 [gaim-migrate @ 1403]
Rob Flynn <gaim@robflynn.com>
parents: 1304
diff changeset
1356 g_snprintf(buf, BUF_LEN, "PRIVMSG %s :%cPING %ld%c\n", who, '\001', time((time_t *)NULL), '\001');
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1357
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1358 write(idata->fd, buf, strlen(buf));
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1359 }
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1360
1673
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1361 /* Do a whois check on someone :-) */
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1362 static void irc_get_info(struct gaim_connection *gc, char *who)
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1363 {
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1364 struct irc_data *idata = (struct irc_data *)gc->proto_data;
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1365 char buf[BUF_LEN];
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1366
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1367 if ((who[0] == '@') || (who[0] == '+') && (strlen(who)>1))
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1368 g_snprintf(buf, BUF_LEN, "WHOIS %s\n", who+1);
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1369 else
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1370 g_snprintf(buf, BUF_LEN, "WHOIS %s\n", who);
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1371 write(idata->fd, buf, strlen(buf));
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1372 }
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1373
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1374 static void irc_send_whois(GtkObject * w, char *who)
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1375 {
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1376 struct gaim_connection *gc = (struct gaim_connection *)gtk_object_get_user_data(w);
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1377 irc_get_info(gc, who);
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1378 }
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1379
1499
de0b946e86a4 [gaim-migrate @ 1509]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1443
diff changeset
1380 static void irc_buddy_menu(GtkWidget * menu, struct gaim_connection *gc, char *who)
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1381 {
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1382 GtkWidget *button;
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1383
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1384 button = gtk_menu_item_new_with_label("Ping");
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1385 gtk_signal_connect(GTK_OBJECT(button), "activate", GTK_SIGNAL_FUNC(irc_send_ping), who);
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1386 gtk_object_set_user_data(GTK_OBJECT(button), gc);
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1387 gtk_menu_append(GTK_MENU(menu), button);
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1388 gtk_widget_show(button);
1673
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1389
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1390 button = gtk_menu_item_new_with_label("Whois");
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1391 gtk_signal_connect(GTK_OBJECT(button), "activate", GTK_SIGNAL_FUNC(irc_send_whois), who);
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1392 gtk_object_set_user_data(GTK_OBJECT(button), gc);
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1393 gtk_menu_append(GTK_MENU(menu), button);
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1394 gtk_widget_show(button);
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1395 }
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1396
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1397
1676
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
1398 static void irc_set_away(struct gaim_connection *gc, char *state, char *msg)
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
1399 {
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
1400 struct irc_data *idata = (struct irc_data *)gc->proto_data;
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
1401 char buf[BUF_LEN];
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
1402
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
1403 if (msg)
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
1404 g_snprintf(buf, BUF_LEN, "AWAY :%s\n", msg);
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
1405 else
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
1406 g_snprintf(buf, BUF_LEN, "AWAY\n");
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
1407
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
1408 write(idata->fd, buf, strlen(buf));
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
1409 }
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
1410
1678
1573a65fd0cd [gaim-migrate @ 1688]
Rob Flynn <gaim@robflynn.com>
parents: 1676
diff changeset
1411 static void irc_fake_buddy(struct gaim_connection *gc, char *who)
1573a65fd0cd [gaim-migrate @ 1688]
Rob Flynn <gaim@robflynn.com>
parents: 1676
diff changeset
1412 {
1573a65fd0cd [gaim-migrate @ 1688]
Rob Flynn <gaim@robflynn.com>
parents: 1676
diff changeset
1413 /* Heh, there is no buddy list. We fake it.
1573a65fd0cd [gaim-migrate @ 1688]
Rob Flynn <gaim@robflynn.com>
parents: 1676
diff changeset
1414 * I just need this here so the add and remove buttons will
1573a65fd0cd [gaim-migrate @ 1688]
Rob Flynn <gaim@robflynn.com>
parents: 1676
diff changeset
1415 * show up */
1573a65fd0cd [gaim-migrate @ 1688]
Rob Flynn <gaim@robflynn.com>
parents: 1676
diff changeset
1416 }
1573a65fd0cd [gaim-migrate @ 1688]
Rob Flynn <gaim@robflynn.com>
parents: 1676
diff changeset
1417
1573a65fd0cd [gaim-migrate @ 1688]
Rob Flynn <gaim@robflynn.com>
parents: 1676
diff changeset
1418
1573a65fd0cd [gaim-migrate @ 1688]
Rob Flynn <gaim@robflynn.com>
parents: 1676
diff changeset
1419
1047
ece2d1543b20 [gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1046
diff changeset
1420 static struct prpl *my_protocol = NULL;
987
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1421
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1422 static void irc_init(struct prpl *ret)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1423 {
1008
1b99caffcd98 [gaim-migrate @ 1018]
Rob Flynn <gaim@robflynn.com>
parents: 987
diff changeset
1424 ret->protocol = PROTO_IRC;
1b99caffcd98 [gaim-migrate @ 1018]
Rob Flynn <gaim@robflynn.com>
parents: 987
diff changeset
1425 ret->name = irc_name;
1178
4291c96c5096 [gaim-migrate @ 1188]
Rob Flynn <gaim@robflynn.com>
parents: 1134
diff changeset
1426 ret->list_icon = irc_list_icon;
1499
de0b946e86a4 [gaim-migrate @ 1509]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1443
diff changeset
1427 ret->buddy_menu = irc_buddy_menu;
1075
2fe18b2d6105 [gaim-migrate @ 1085]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1056
diff changeset
1428 ret->user_opts = irc_user_opts;
1008
1b99caffcd98 [gaim-migrate @ 1018]
Rob Flynn <gaim@robflynn.com>
parents: 987
diff changeset
1429 ret->login = irc_login;
1011
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1430 ret->close = irc_close;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1431 ret->send_im = irc_send_im;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1432 ret->join_chat = irc_join_chat;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1433 ret->chat_leave = irc_chat_leave;
4867280dbdc7 [gaim-migrate @ 1021]
Rob Flynn <gaim@robflynn.com>
parents: 1008
diff changeset
1434 ret->chat_send = irc_chat_send;
1673
0ded38ffc7c8 [gaim-migrate @ 1683]
Rob Flynn <gaim@robflynn.com>
parents: 1672
diff changeset
1435 ret->get_info = irc_get_info;
1676
a3d857c8984e [gaim-migrate @ 1686]
Rob Flynn <gaim@robflynn.com>
parents: 1675
diff changeset
1436 ret->set_away = irc_set_away;
1678
1573a65fd0cd [gaim-migrate @ 1688]
Rob Flynn <gaim@robflynn.com>
parents: 1676
diff changeset
1437 ret->add_buddy = irc_fake_buddy;
1573a65fd0cd [gaim-migrate @ 1688]
Rob Flynn <gaim@robflynn.com>
parents: 1676
diff changeset
1438 ret->remove_buddy = irc_fake_buddy;
1047
ece2d1543b20 [gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1046
diff changeset
1439
ece2d1543b20 [gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1046
diff changeset
1440 my_protocol = ret;
987
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1441 }
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1442
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1443 char *gaim_plugin_init(GModule * handle)
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1444 {
1443
336fc98b7f90 [gaim-migrate @ 1453]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1394
diff changeset
1445 load_protocol(irc_init, sizeof(struct prpl));
1047
ece2d1543b20 [gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1046
diff changeset
1446 return NULL;
987
cf6662982b40 [gaim-migrate @ 997]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
1447 }
1047
ece2d1543b20 [gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1046
diff changeset
1448
1266
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1449 void gaim_plugin_remove()
aac04affc65d [gaim-migrate @ 1276]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1265
diff changeset
1450 {
1047
ece2d1543b20 [gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1046
diff changeset
1451 struct prpl *p = find_prpl(PROTO_IRC);
ece2d1543b20 [gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1046
diff changeset
1452 if (p == my_protocol)
ece2d1543b20 [gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1046
diff changeset
1453 unload_protocol(p);
ece2d1543b20 [gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1046
diff changeset
1454 }