X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Ff2fchat.git;a=blobdiff_plain;f=f2fchat.c;h=05e6a5b42885946075b0877a5ff8edb14176cd18;hp=00c774ff04600a03b1043ca262ab17d698a27e67;hb=HEAD;hpb=1f9e5dd106300779e6e699c819a48f6165ac4c99 diff --git a/f2fchat.c b/f2fchat.c index 00c774f..05e6a5b 100644 --- a/f2fchat.c +++ b/f2fchat.c @@ -18,22 +18,38 @@ #include "friend.h" #include +#include +#include "menu.h" -static gboolean quit(gpointer data) +static GMainLoop *uloop; + +static void quit(gchar **args, GSocketAddress *address) +{ + g_main_loop_quit(uloop); +} + +static struct menu_item quit_menu = { "quit", quit }; + +static void add_quit_cmd(GMainLoop *loop) { - GMainLoop *loop = data; - g_main_loop_quit(loop); - return G_SOURCE_CONTINUE; + uloop = loop; + menu_add(&quit_menu); } int main(int argc, char **argv) { struct cache *cache; GMainLoop *loop; + g_type_init(); + if (sock_init()) { + fprintf(stderr, "Error creating socket.\n"); + return 1; + } + friend_init(); create_cache(&cache); load_cache(cache, "friends.cache"); loop = g_main_loop_new(g_main_context_default(), TRUE); - g_idle_add(quit, loop); + add_quit_cmd(loop); g_main_loop_run(loop); store_cache(cache, "friends.cache"); destroy_cache(cache);