X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fpubsub-bot.git;a=blobdiff_plain;f=status.c;h=28f9a9159090299a80a58f504556b6e28cfba466;hp=ada4d0a58909c4c339b7982305feff5ab633c1fd;hb=20897ab2479bb4255d5aa4d74a6819cc732885b9;hpb=427d37e3a9491554f92f6f5ff946daa2b40665bb diff --git a/status.c b/status.c index ada4d0a..28f9a91 100644 --- a/status.c +++ b/status.c @@ -17,6 +17,7 @@ */ +#include #include #include #include @@ -406,6 +407,23 @@ hook (void *data, int type, iks *node) return IKS_OK; } +gboolean +handler (GIOChannel *channel, GIOCondition cond, gpointer data) +{ + iksparser *parser = data; + iks_recv (parser, 0); + return TRUE; +} + +void +loop (iksparser *parser) +{ + GIOChannel *channel; + channel = g_io_channel_unix_new (iks_fd (parser)); + g_io_add_watch (channel, G_IO_IN, handler, parser); + g_main_loop_run (g_main_loop_new (g_main_context_default (), TRUE)); +} + int main (int argc, char **argv) { @@ -434,7 +452,6 @@ main (int argc, char **argv) } parser = iks_stream_new ("jabber:client", &parser, hook); iks_connect_tcp (parser, server, 5222); - while (1) - iks_recv (parser, -1); + loop (parser); return 0; }