#include #include #include #include #include #include #include #include "espik_global.h" #include "espik_common_handler.h" #include "espik_irc.h" #include "espik_net.h" #include "espik.h" #include "espik_error.h" #include "espik_debug.h" #if 0 static char* convert_utf_unicode(char* putf) { int len; wchar_t* punicode; espik_enter(); len = strlen(putf)+ 1; punicode = (wchar_t *)malloc(len * sizeof(wchar_t)); if (punicode == NULL) return NULL; #ifdef UNICODE strcpy(punicode,putf); #else if (mbstowcs(punicode,putf,len) < 0) { free(punicode); return NULL; } #endif espik_leave(); return punicode; } static char* convert_unicode_utf(const wchar_t *punicode) { int len; char* putf; espik_enter(); len = wcslen(punicode) + 1; putf = (char *)malloc(len * sizeof(wchar_t)); if (!putf) return NULL; #ifdef UNICODE strcpy(putf, punicode); #else if (wcstombs(putf,punicode,len) < 0) { free (putf); return NULL; } #endif espik_leave(); return putf; } #endif int server_data (void* data __UNUSED__, int ev_type __UNUSED__, Ecore_Con_Event_Server_Data* ev) { unsigned int i; char* msg; espik_enter(); static int count_num_recv = 0; msg = strdup((char*)ev->data); //msg = convert_unicode_utf((const wchar_t*)ev->data); //msg = convert_utf_unicode((char*)ev->data); if (!msg) return 0; count_num_recv++; espik_debug_print ("%s", msg); for (i=0 ; i < strlen(msg) ; i++) { if (msg[i] == ' ') msg[i] = '\0'; } if (count_num_recv >= 1 && !com_active) { server_dns = strdup (msg+1); send_login(); } if (! (strcmp (msg, "PING"))) { espik_raw_send ("PONG guybrush.melee"); } memset (msg, 0, strlen(msg)); free (msg); espik_leave(); return (0); } int kb_get (void* data __UNUSED__, Ecore_Fd_Handler* fd_handler) { char* kb; char* tmp; int count; espik_enter(); kb = malloc (200); do { memset (kb, 0, 200); count = read (ecore_main_fd_handler_fd_get (fd_handler), kb, 198); if (count > 1) { del_backslash (kb); tmp = irc_send (kb); if (tmp) { espik_raw_send (tmp); free (tmp); } } } while (count >= 198); if (count == -1) perror ("read"); if (count == 0) { tmp = irc_quit (NULL, strdup("^D pressed")); espik_debug_print ("tmp: %s", tmp); espik_raw_send (tmp); espik_debug_print ("AFTER espik_raw_send"); espik_raw_send (tmp); /* irc_disconnect(); */ espik_con_shutdown (); free (tmp); espik_leave(); return (0); } espik_leave(); return (1); }