Separated main hook from main program
[cascardo/chat.git] / disco.c
1 /*
2  *  Copyright (C) 2008  Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
3  *
4  *  This program is free software; you can redistribute it and/or modify
5  *  it under the terms of the GNU General Public License as published by
6  *  the Free Software Foundation; either version 2 of the License, or
7  *  (at your option) any later version.
8  *
9  *  This program is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *  GNU General Public License for more details.
13  *
14  *  You should have received a copy of the GNU General Public License along
15  *  with this program; if not, write to the Free Software Foundation, Inc.,
16  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  */
18
19
20 #include "xmpp_internal.h"
21 #include "disco.h"
22
23 void
24 hc_xmpp_send_disco_info (hc_xmpp_t *xmpp, char *to)
25 {
26   iks *disco;
27   iks *query;
28   disco = iks_new ("iq");
29   iks_insert_attrib (disco, "type", "get");
30   iks_insert_attrib (disco, "to", to);
31   query = iks_insert (disco, "query");
32   iks_insert_attrib (query, "xmlns", HC_XMPP_NS_DISCO_INFO);
33   hc_xmpp_send_iks (xmpp, disco);
34   iks_delete (disco);
35 }
36
37 void
38 hc_xmpp_recv_disco (hc_xmpp_t *xmpp, iks *disco)
39 {
40   char *ns = iks_find_attrib (iks_child (disco), "xmlns");
41   if (!iks_strcmp (ns, HC_XMPP_NS_DISCO_INFO))
42     {
43       iks *c;
44       for (c = iks_child (iks_child (disco)); c != NULL; c = iks_next (c))
45         {
46           if (!iks_strcmp (iks_name (c), "feature"))
47             fprintf (stdout, "%s\n", iks_find_attrib (c, "var"));
48         }
49     }
50 }