Mercurial > pidgin
comparison libpurple/protocols/jabber/adhoccommands.c @ 26465:ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Fri, 13 Mar 2009 02:26:45 +0000 |
parents | 5f9a24d1c25e |
children | 83e6e710cbf3 |
comparison
equal
deleted
inserted
replaced
26464:a4a5825fb1bb | 26465:ae41d8e827e3 |
---|---|
37 char *who; | 37 char *who; |
38 char *node; | 38 char *node; |
39 GList *actionslist; | 39 GList *actionslist; |
40 } JabberAdHocActionInfo; | 40 } JabberAdHocActionInfo; |
41 | 41 |
42 void jabber_adhoc_disco_result_cb(JabberStream *js, xmlnode *packet, gpointer data) { | 42 void jabber_adhoc_disco_result_cb(JabberStream *js, const char *from, |
43 const char *from = xmlnode_get_attrib(packet, "from"); | 43 JabberIqType type, const char *id, |
44 const char *type = xmlnode_get_attrib(packet, "type"); | 44 xmlnode *packet, gpointer data) |
45 { | |
45 const char *node; | 46 const char *node; |
46 xmlnode *query, *item; | 47 xmlnode *query, *item; |
47 JabberID *jabberid; | 48 JabberID *jabberid; |
48 JabberBuddy *jb; | 49 JabberBuddy *jb; |
49 JabberBuddyResource *jbr = NULL; | 50 JabberBuddyResource *jbr = NULL; |
50 | 51 |
51 if(strcmp(type, "result")) | 52 if (type == JABBER_IQ_ERROR) |
52 return; | 53 return; |
53 | 54 |
54 query = xmlnode_get_child_with_namespace(packet,"query","http://jabber.org/protocol/disco#items"); | 55 query = xmlnode_get_child_with_namespace(packet,"query","http://jabber.org/protocol/disco#items"); |
55 if(!query) | 56 if(!query) |
56 return; | 57 return; |
93 | 94 |
94 jbr->commands = g_list_append(jbr->commands,cmd); | 95 jbr->commands = g_list_append(jbr->commands,cmd); |
95 } | 96 } |
96 } | 97 } |
97 | 98 |
98 static void jabber_adhoc_parse(JabberStream *js, xmlnode *packet, gpointer data); | 99 static void jabber_adhoc_parse(JabberStream *js, const char *from, |
100 JabberIqType type, const char *id, | |
101 xmlnode *packet, gpointer data); | |
102 | |
99 | 103 |
100 static void do_adhoc_action_cb(JabberStream *js, xmlnode *result, const char *actionhandle, gpointer user_data) { | 104 static void do_adhoc_action_cb(JabberStream *js, xmlnode *result, const char *actionhandle, gpointer user_data) { |
101 xmlnode *command; | 105 xmlnode *command; |
102 GList *action; | 106 GList *action; |
103 JabberAdHocActionInfo *actionInfo = user_data; | 107 JabberAdHocActionInfo *actionInfo = user_data; |
129 g_free(actionInfo->node); | 133 g_free(actionInfo->node); |
130 | 134 |
131 jabber_iq_send(iq); | 135 jabber_iq_send(iq); |
132 } | 136 } |
133 | 137 |
134 static void jabber_adhoc_parse(JabberStream *js, xmlnode *packet, gpointer data) { | 138 static void |
139 jabber_adhoc_parse(JabberStream *js, const char *from, | |
140 JabberIqType type, const char *id, | |
141 xmlnode *packet, gpointer data) | |
142 { | |
135 xmlnode *command = xmlnode_get_child_with_namespace(packet, "command", "http://jabber.org/protocol/commands"); | 143 xmlnode *command = xmlnode_get_child_with_namespace(packet, "command", "http://jabber.org/protocol/commands"); |
136 const char *status = xmlnode_get_attrib(command,"status"); | 144 const char *status = xmlnode_get_attrib(command,"status"); |
137 xmlnode *xdata = xmlnode_get_child_with_namespace(command,"x","jabber:x:data"); | 145 xmlnode *xdata = xmlnode_get_child_with_namespace(command,"x","jabber:x:data"); |
138 const char *type = xmlnode_get_attrib(packet,"type"); | 146 |
139 | 147 if (type == JABBER_IQ_ERROR) { |
140 if(type && !strcmp(type,"error")) { | |
141 char *msg = jabber_parse_error(js, packet, NULL); | 148 char *msg = jabber_parse_error(js, packet, NULL); |
142 if(!msg) | 149 if(!msg) |
143 msg = g_strdup(_("Unknown Error")); | 150 msg = g_strdup(_("Unknown Error")); |
144 | 151 |
145 purple_notify_error(NULL, _("Ad-Hoc Command Failed"), | 152 purple_notify_error(NULL, _("Ad-Hoc Command Failed"), |
146 _("Ad-Hoc Command Failed"), msg); | 153 _("Ad-Hoc Command Failed"), msg); |
147 g_free(msg); | 154 g_free(msg); |
148 return; | 155 return; |
149 } | 156 } |
150 if(!type || strcmp(type,"result")) | |
151 return; | |
152 | 157 |
153 if(!status) | 158 if(!status) |
154 return; | 159 return; |
155 | 160 |
156 if(!strcmp(status,"completed")) { | 161 if(!strcmp(status,"completed")) { |
157 /* display result */ | 162 /* display result */ |
158 xmlnode *note = xmlnode_get_child(command,"note"); | 163 xmlnode *note = xmlnode_get_child(command,"note"); |
159 | 164 |
160 if(note) { | 165 if(note) { |
161 char *data = xmlnode_get_data(note); | 166 char *data = xmlnode_get_data(note); |
162 purple_notify_info(NULL, xmlnode_get_attrib(packet, "from"), data, NULL); | 167 purple_notify_info(NULL, from, data, NULL); |
163 g_free(data); | 168 g_free(data); |
164 } | 169 } |
165 | 170 |
166 if(xdata) | 171 if(xdata) |
167 jabber_x_data_request(js, xdata, (jabber_x_data_cb)do_adhoc_ignoreme, NULL); | 172 jabber_x_data_request(js, xdata, (jabber_x_data_cb)do_adhoc_ignoreme, NULL); |
197 } | 202 } |
198 } | 203 } |
199 | 204 |
200 actionInfo = g_new0(JabberAdHocActionInfo, 1); | 205 actionInfo = g_new0(JabberAdHocActionInfo, 1); |
201 actionInfo->sessionid = g_strdup(xmlnode_get_attrib(command,"sessionid")); | 206 actionInfo->sessionid = g_strdup(xmlnode_get_attrib(command,"sessionid")); |
202 actionInfo->who = g_strdup(xmlnode_get_attrib(packet,"from")); | 207 actionInfo->who = g_strdup(from); |
203 actionInfo->node = g_strdup(xmlnode_get_attrib(command,"node")); | 208 actionInfo->node = g_strdup(xmlnode_get_attrib(command,"node")); |
204 actionInfo->actionslist = actionslist; | 209 actionInfo->actionslist = actionslist; |
205 | 210 |
206 jabber_x_data_request_with_actions(js,xdata,actionslist,actionindex,do_adhoc_action_cb,actionInfo); | 211 jabber_x_data_request_with_actions(js,xdata,actionslist,actionindex,do_adhoc_action_cb,actionInfo); |
207 } | 212 } |
216 | 221 |
217 jabber_adhoc_execute(js, cmd); | 222 jabber_adhoc_execute(js, cmd); |
218 } | 223 } |
219 } | 224 } |
220 | 225 |
221 static void jabber_adhoc_server_got_list_cb(JabberStream *js, xmlnode *packet, gpointer data) { | 226 static void |
227 jabber_adhoc_server_got_list_cb(JabberStream *js, const char *from, | |
228 JabberIqType type, const char *id, | |
229 xmlnode *packet, gpointer data) | |
230 { | |
222 xmlnode *query = xmlnode_get_child_with_namespace(packet, "query", "http://jabber.org/protocol/disco#items"); | 231 xmlnode *query = xmlnode_get_child_with_namespace(packet, "query", "http://jabber.org/protocol/disco#items"); |
223 xmlnode *item; | 232 xmlnode *item; |
224 | 233 |
225 if(!query) | 234 if(!query) |
226 return; | 235 return; |