#include #include #include #include #include #include #include #include #include #include #include "cmds.h" #include "conf.h" #include "globales.h" #include "log.h" #include "timestamp.h" #include #include "window.h" #include "main.h" // function to read buffer line int readirccmd (char *rbuffer, int len, int sockfd) { int i; for (i = 0; i < len && rbuffer[i - 1] != '\n'; i++) { recv (sockfd, rbuffer + i, 1, 0); } return i; } // function to read entire data int read_socket(GtkWidget *widget, gpointer data) { static char r_buffer[1024]; gchar *sschem; gchar *lbuf = r_buffer; gchar *utf8 = NULL; memset (rbuffer, 0, sizeof (rbuffer)); readirccmd (rbuffer, sizeof (rbuffer), sockfd); memset (r_buffer, 0, sizeof (r_buffer)); snprintf (r_buffer, sizeof r_buffer, "%s %s", gettimestamp(), rbuffer); // to scroll bottom of window GtkTextMark *p_text_mark = NULL; g_return_if_fail (textview1 != NULL); g_return_if_fail (&End != NULL); g_return_if_fail (sschem != NULL); // TextBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview1)); gtk_text_buffer_get_start_iter(TextBuffer, &Start); gtk_text_buffer_get_end_iter(TextBuffer, &End); sschem = g_strdup(lbuf); utf8 = g_locale_to_utf8 (sschem, -1, NULL, NULL, NULL); gtk_text_buffer_insert(TextBuffer, &End, utf8, -1); g_free (utf8), utf8 = NULL; // scroll again... p_text_mark = gtk_text_buffer_create_mark (TextBuffer, NULL, &End, FALSE); gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW(textview1), p_text_mark, 0, FALSE, 0, 0); // //write_log_file(); authme(); ping_response(); //join_channel(); g_free(sschem); return 1; // avoid end of loop }