From: Thadeu Lima de Souza Cascardo Date: Mon, 18 May 2009 05:44:14 +0000 (-0300) Subject: Used a GLib loop. X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fpubsub-bot.git;a=commitdiff_plain;h=20897ab2479bb4255d5aa4d74a6819cc732885b9 Used a GLib loop. --- diff --git a/Makefile b/Makefile index 6f8941f..d28414d 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ CC = gcc -CFLAGS = -g -Wall `pkg-config --cflags iksemel` -LIBS = `pkg-config --libs iksemel` +CFLAGS = -g -Wall `pkg-config --cflags iksemel glib-2.0` +LIBS = `pkg-config --libs iksemel glib-2.0` OBJECTS = status.o .c.o: 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; }