#include #include #include #include #include /* EFL Stuff */ #include #include /* Configuration lib */ /*#include */ /* Socket lib */ #include /* List */ /* Espik Stuff */ #include "espik.h" #include "espik_global.h" #include "espik_config.h" #include "espik_common_handler.h" #include "espik_debug.h" typedef int (*Handler_Func) (void *data, int ev_type, void *ev); /* typedef int (*Handler_Fd_Func) (void *data, Ecore_Fd_Handler * fd_handler); */ static void espik_init() { ptr_list = ecore_list_new(); } static void espik_destroy_ptr(void *ptr) { if (ptr) { espik_debug_print("Freeing data..."); free (ptr); ptr = NULL; } } void espik_free (void *ptr) { espik_enter(); ecore_list_append (ptr_list, ptr); espik_leave(); } void espik_shutdown() { ecore_main_loop_quit(); } /* Use to replace EOL ('\n') with NULL ('\0') */ int del_backslash (char *msg) { int i, count; espik_enter(); for (i = 0, count = 0; msg[i]; i++) { if (msg[i] == '\n') { msg[i] = '\0'; count++; } } espik_leave(); return (count); } int main (int argc, char **argv) { Ecore_Fd_Handler *fd_kb; __indent_level = 0; espik_enter(); printf ("Welcome to %s %s\n", APPS_NAME, ESPIK_VERSION); espik_init(); if (!ecore_init ()) { printf ("Cannot init ecore; %d\n", 1); exit (-1); } ecore_list_set_free_cb(ptr_list, espik_destroy_ptr); espik_config_init (); if (argc < 3) { printf ("Loading from conf ...\n"); espik_config_get (&a_infos); } else { printf ("Connecting to %s:%s\n", argv[1], argv[2]); a_infos.client = espik_user_sysinfo_get (); a_infos.server = espik_server_config_set (argv[1], (unsigned short)atoi (argv[2])); } espik_config_set (a_infos); printf ("host: %s\n", a_infos.server->host); printf ("port: %hd\n", a_infos.server->port); printf ("nick: %s\n", a_infos.client->nickname); printf ("user: %s\n", a_infos.client->username); printf ("real: %s\n", a_infos.client->realname); /* Handler Keyboard */ fd_kb = ecore_main_fd_handler_add (STDIN_FILENO, ECORE_FD_READ, kb_get, NULL, NULL, NULL); espik_free (fd_kb); if (!fd_kb) { printf ("Cannot ecore_main_fd_handler_add\n"); exit (-1); } /* Init IRC connection */ ecore_main_loop_begin (); espik_shutdown(); espik_debug_print ("end"); espik_config_shutdown (a_infos); ecore_shutdown (); ecore_list_destroy(ptr_list); return (0); }